var utils_ = xwalk.utils;
var native_ = new utils_.NativeManager(extension);
var T_ = utils_.type;
+var converter_ = utils_.converter;
// Flag showing if the discovery procedure has started
var discoveryStarted = false;
native_.callIfPossible(successCallback, this);
};
-RemoteAppControlService.prototype.start = function(successCallback, errorCallback) {
+RemoteAppControlService.prototype.start = function() {
var args = validator_.validateArgs(arguments, [{
name: 'successCallback',
type: types_.FUNCTION,
*/
var lid = this._serviceId;
- this._startCallback = successCallback;
+ this._startCallback = args.successCallback;
convergenceServices[lid] = this;
var callArgs = {};
- callArgs.reply = !!successCallback;
+ callArgs.reply = !!args.successCallback;
callArgs.deviceId = this._deviceId;
callArgs.curListenerId = lid;
var callback = function(result) {
- if (native.isFailure(result)) {
- native_.callIfPossible(errorCallback, native_.getErrorObject(result));
+ if (native_.isFailure(result)) {
+ native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
}
};
}
};
-RemoteAppControlService.prototype.stop = function(successCallback, errorCallback) {
+RemoteAppControlService.prototype.stop = function() {
var args = validator_.validateArgs(arguments, [{
name: 'successCallback',
type: types_.FUNCTION,
}]);
var lid = this._serviceId;
- this._stopCallback = successCallback;
+ this._stopCallback = args.successCallback;
convergenceServices[lid] = this;
var callArgs = {};
- callArgs.reply = !!successCallback;
+ callArgs.reply = !!args.successCallback;
callArgs.deviceId = this._deviceId;
callArgs.curListenerId = lid;
var callback = function(result) {
- if (native.isFailure(result)) {
- native_.callIfPossible(errorCallback, native_.getErrorObject(result));
+ if (native_.isFailure(result)) {
+ native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
}
};
}]);
var lid = this._serviceId;
- this._remoteAppControlCallback = successCallback;
+ this._remoteAppControlCallback = args.successCallback;
convergenceServices[lid] = this;
var callArgs = {};
callArgs.appControl = args.appControl;
- callArgs.appId = args.appId ? appId : "";
- callArgs.reply = !!successCallback;
+ callArgs.appId = args.appId ? args.appId : "";
+ callArgs.reply = !!args.successCallback;
callArgs.deviceId = this._deviceId;
callArgs.curListenerId = lid;
var callback = function(result) {
- if (native.isFailure(result)) {
- native_.callIfPossible(errorCallback, native_.getErrorObject(result));
+ if (native_.isFailure(result)) {
+ native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
}
};
- var result = native.call('RemoteAppControlService_launchAppControl', callArgs, callback);
- if (native.isFailure(result)) {
- throw native.getErrorObject(result);
+ var result = native_.call('RemoteAppControlService_launchAppControl', callArgs, callback);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
}
};
native_.callIfPossible(s._stopCallback,
new ChannelInfo(result.channel.uri, result.channel.id), null);
break;
+ case 'onRead':
+ var clients_array = [];
+
+
+ for(var i = 0; i < result.payload.length; i++) {
+ if (result.payload[i].key === 'client_list') {
+ var value = JSON.parse(result.payload[i].value);
+ var client = new ClientInfo(
+ converter_.toBoolean(value.isHost, false),
+ converter_.toString(value.clientId, false),
+ converter_.toLong(value.connectTime, false)
+ );
+ clients_array.push(client);
+ }
+ }
+ native_.callIfPossible(s._getClientListCallback, clients_array);
+ break;
case 'onMessage': {
var payload = result.payload;
native_.callIfPossible(s._listenerCallback,
}
};
+AppCommunicationService.prototype.getClientList = function() {
+ var args = validator_.validateArgs(arguments, [{
+ name: 'channel',
+ type: types_.PLATFORM_OBJECT,
+ values: tizen.ChannelInfo,
+ optional: false,
+ nullable: false
+ }, {
+ name: 'successCallback',
+ type: types_.FUNCTION,
+ optional: false,
+ nullable: false
+ }, {
+ name: 'errorCallback',
+ type: types_.FUNCTION,
+ optional: true,
+ nullable: true
+ }
+ ]);
+
+ var lid = this._serviceId;
+ this._getClientListCallback = args.successCallback;
+ convergenceServices[lid] = this;
+
+ var callArgs = {};
+ callArgs.deviceId = this._deviceId;
+ callArgs.curListenerId = lid;
+ callArgs.channel_data = args.channel;
+
+ var callback = function(result) {
+ if (native_.isFailure(result)) {
+ native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
+ }
+ };
+
+ var result = native_.call('AppCommunicationService_getClientList', callArgs, callback);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+};
+
AppCommunicationService.prototype.setListener = function(listenerCallback) {
console.log('Entered AppCommunicationService.setListener()');
var args = validator_.validateArgs(arguments, [
REGISTER_ASYNC("AppCommunicationClientService_disconnect", AppCommunicationClientServiceDisconnect);
REGISTER_ASYNC("AppCommunicationService_start", AppCommunicationServiceStart);
REGISTER_ASYNC("AppCommunicationService_stop", AppCommunicationServiceStop);
+ REGISTER_ASYNC("AppCommunicationService_getClientList", AppCommunicationServiceGetClientList);
REGISTER_ASYNC("AppCommunicationService_send", AppCommunicationServiceSend);
REGISTER_ASYNC("RemoteAppControlService_disconnect", RemoteAppControlServiceDisconnect);
REGISTER_ASYNC("RemoteAppControlService_connect", RemoteAppControlServiceConnect);
return TizenSuccess();
}
+common::TizenResult ConvergenceInstance::AppCommunicationServiceGetClientList(const picojson::object& args,
+ const common::AsyncToken& token) {
+ ScopeLogger();
+ CHECK_PRIVILEGE(kPrivilegeInternet);
+ CHECK_PRIVILEGE(kPrivilegeBluetooth);
+ CHECK_PRIVILEGE(kPrivilegeDataSharing);
+
+ CHECK_EXIST(args, kJSArgumentDeviceId);
+ CHECK_EXIST(args, kJSArgumentChannel);
+ CHECK_EXIST(args, kJSCurrentListenerId);
+
+ auto get_client_list = [this, args](const common::AsyncToken& token) -> void {
+ ScopeLogger("get_client_list");
+
+ TizenResult result = TizenSuccess();
+
+ // Finding the service
+ ConvergenceAppCommunicationService *service =
+ static_cast<ConvergenceAppCommunicationService *>(
+ ConvergenceManager::GetInstance(this).GetService(ConvergenceUtils::GetArg(args, kJSArgumentDeviceId).to_str().c_str(),
+ CONV_SERVICE_APP_TO_APP_COMMUNICATION));
+ if (!service) {
+ result = LogAndCreateTizenError(NotFoundError, "Can not find the service type = 1");
+ } else {
+ // Running the service getClientList procedure
+ ConvergenceChannel channel(ConvergenceUtils::GetArg(args, kJSArgumentChannel));
+ result = service->GetClientList(channel, static_cast<int>(ConvergenceUtils::GetArg(args, kJSCurrentListenerId).get<double>()));
+ }
+
+ this->Post(token, result);
+ };
+
+ std::thread(get_client_list, token).detach();
+
+ return TizenSuccess();
+}
+
common::TizenResult ConvergenceInstance::AppCommunicationServiceSetListener(const picojson::object& args) {
ScopeLogger();