From: Pawel Andruszkiewicz Date: Wed, 10 Feb 2016 13:17:57 +0000 (+0100) Subject: [iotcon] Implementation of Resource.addResourceTypes()/addResourceInterfaces(). X-Git-Tag: submit/tizen/20160222.104327^2~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=baf32444181872c4232f4f9f3b1926952ffa56c0;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [iotcon] Implementation of Resource.addResourceTypes()/addResourceInterfaces(). Change-Id: If653e1422b88dfdbc07c69ac3413af82a5b95ded Signed-off-by: Pawel Andruszkiewicz --- diff --git a/src/iotcon/iotcon_api.js b/src/iotcon/iotcon_api.js index e51b5884..f51d3695 100644 --- a/src/iotcon/iotcon_api.js +++ b/src/iotcon/iotcon_api.js @@ -338,43 +338,46 @@ Resource.prototype.notify = function() { } }; -Resource.prototype.addResourceTypes = function() { +Resource.prototype.addResourceType = function() { var args = validator.validateMethod(arguments, [{ - name: 'types', - type: types.ARRAY, - values: types.STRING, - optional: false, - nullable: false + name: 'type', + type: types.STRING }]); var callArgs = {}; callArgs.id = this[kIdKey]; - callArgs.types = args.types; + callArgs.type = args.type; - var result = native.call('IotconResource_addResourceTypes', callArgs); + var result = native.callSync('IotconResource_addResourceType', callArgs); if (native.isFailure(result)) { throw native.getErrorObject(result); + } else { + var t = this.resourceTypes; + t.push(args.type); + updateWithInternalData({ resourceTypes: t }, this); } }; -Resource.prototype.addResourceInterfaces = function() { +Resource.prototype.addResourceInterface = function() { var args = validator.validateMethod(arguments, [{ - name: 'interfaces', - type: types.ARRAY, - values: ResourceInterface, - optional: false, - nullable: false + name: 'iface', + type: types.ENUM, + values: T.getValues(ResourceInterface) }]); var callArgs = {}; callArgs.id = this[kIdKey]; - callArgs.interfaces = args.interfaces; + callArgs.iface = args.iface; - var result = native.call('IotconResource_addResourceInterfaces', callArgs); + var result = native.callSync('IotconResource_addResourceInterface', callArgs); if (native.isFailure(result)) { throw native.getErrorObject(result); + } else { + var interfaces = this.resourceInterfaces; + interfaces.push(args.iface); + updateWithInternalData({ resourceInterfaces: interfaces }, this); } }; diff --git a/src/iotcon/iotcon_instance.cc b/src/iotcon/iotcon_instance.cc index 1fac0613..a0657183 100644 --- a/src/iotcon/iotcon_instance.cc +++ b/src/iotcon/iotcon_instance.cc @@ -59,6 +59,8 @@ const common::ListenerToken kResourceRequestListenerToken{"ResourceRequestListen const std::string kObserverIds = "observerIds"; const std::string kQos = "qos"; const std::string kChildId = "childId"; +const std::string kType = "type"; +const std::string kInterface = "iface"; } // namespace @@ -73,6 +75,8 @@ IotconInstance::IotconInstance() { REGISTER_SYNC("IotconResource_getObserverIds", ResourceGetObserverIds); REGISTER_SYNC("IotconResource_notify", ResourceNotify); + REGISTER_SYNC("IotconResource_addResourceType", ResourceAddResourceType); + REGISTER_SYNC("IotconResource_addResourceInterface", ResourceAddResourceInterface); REGISTER_SYNC("IotconResource_addChildResource", ResourceAddChildResource); REGISTER_SYNC("IotconResource_removeChildResource", ResourceRemoveChildResource); REGISTER_SYNC("IotconResource_setRequestListener", ResourceSetRequestListener); @@ -97,8 +101,6 @@ IotconInstance::IotconInstance() { #define REGISTER_ASYNC(c, x) \ RegisterHandler(c, std::bind(&IotconInstance::x, this, _1, _2)); - REGISTER_ASYNC("IotconResource_addResourceTypes", ResourceAddResourceTypes); - REGISTER_ASYNC("IotconResource_addResourceInterfaces", ResourceAddResourceInterfaces); REGISTER_ASYNC("IotconRemoteResource_methodGet", RemoteResourceMethodGet); REGISTER_ASYNC("IotconRemoteResource_methodPut", RemoteResourceMethodPut); REGISTER_ASYNC("IotconRemoteResource_methodPost", RemoteResourceMethodPost); @@ -252,16 +254,44 @@ common::TizenResult IotconInstance::ResourceNotify(const picojson::object& args) return common::TizenSuccess(); } -common::TizenResult IotconInstance::ResourceAddResourceTypes(const picojson::object& args, - const common::AsyncToken& token) { +common::TizenResult IotconInstance::ResourceAddResourceType(const picojson::object& args) { ScopeLogger(); - return common::UnknownError("Not implemented"); + + CHECK_EXIST(args, kId); + CHECK_EXIST(args, kType); + + ResourceInfoPtr resource; + auto result = IotconServerManager::GetInstance().GetResourceById(GetId(args), &resource); + if (!result) { + LogAndReturnTizenError(result, ("GetResourceById() failed")); + } + + result = IotconUtils::ConvertIotconError(iotcon_resource_bind_type(resource->handle, GetArg(args, kType).get().c_str())); + if (!result) { + LogAndReturnTizenError(result, ("iotcon_resource_bind_type() failed")); + } + + return common::TizenSuccess(); } -common::TizenResult IotconInstance::ResourceAddResourceInterfaces(const picojson::object& args, - const common::AsyncToken& token) { +common::TizenResult IotconInstance::ResourceAddResourceInterface(const picojson::object& args) { ScopeLogger(); - return common::UnknownError("Not implemented"); + + CHECK_EXIST(args, kId); + CHECK_EXIST(args, kInterface); + + ResourceInfoPtr resource; + auto result = IotconServerManager::GetInstance().GetResourceById(GetId(args), &resource); + if (!result) { + LogAndReturnTizenError(result, ("GetResourceById() failed")); + } + + result = IotconUtils::ConvertIotconError(iotcon_resource_bind_interface(resource->handle, IotconUtils::ToInterface(GetArg(args, kInterface).get()))); + if (!result) { + LogAndReturnTizenError(result, ("iotcon_resource_bind_interface() failed")); + } + + return common::TizenSuccess(); } common::TizenResult IotconInstance::ResourceAddChildResource(const picojson::object& args) { diff --git a/src/iotcon/iotcon_instance.h b/src/iotcon/iotcon_instance.h index 960ba497..abcc198a 100644 --- a/src/iotcon/iotcon_instance.h +++ b/src/iotcon/iotcon_instance.h @@ -33,10 +33,8 @@ class IotconInstance : public common::TizenInstance { common::TizenResult ResourceGetObserverIds(const picojson::object& args); common::TizenResult ResourceNotify(const picojson::object& args); - common::TizenResult ResourceAddResourceTypes(const picojson::object& args, - const common::AsyncToken& token); - common::TizenResult ResourceAddResourceInterfaces(const picojson::object& args, - const common::AsyncToken& token); + common::TizenResult ResourceAddResourceType(const picojson::object& args); + common::TizenResult ResourceAddResourceInterface(const picojson::object& args); common::TizenResult ResourceAddChildResource(const picojson::object& args); common::TizenResult ResourceRemoveChildResource(const picojson::object& args); common::TizenResult ResourceSetRequestListener(const picojson::object& args);