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);