From: Mu-Woong Lee Date: Thu, 29 Jun 2017 02:01:09 +0000 (+0900) Subject: ServiceRunner creates ServiceClient before IMethodCallHandler to pass the ServiceClie... X-Git-Tag: submit/tizen/20170705.022841^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a3d11712f7e8967f588bf1b59ffe7bd56ca713b5;p=platform%2Fcore%2Fcontext%2Fcontext-service.git ServiceRunner creates ServiceClient before IMethodCallHandler to pass the ServiceClient pointer to IMethodCallHandler Change-Id: Id209c3e9d260964b44125b4508acb6c59a004fd1 Signed-off-by: Mu-Woong Lee --- diff --git a/src/server/ServiceClient.cpp b/src/server/ServiceClient.cpp index 28ebcf9..757b787 100644 --- a/src/server/ServiceClient.cpp +++ b/src/server/ServiceClient.cpp @@ -20,9 +20,9 @@ using namespace ctx; -ServiceClient::ServiceClient(ServiceRunner* runner, IMethodCallHandler* handler, const std::string& busName) : +ServiceClient::ServiceClient(ServiceRunner* runner, const std::string& busName) : __serviceRunner(runner), - __methodCallHandler(handler), + __methodCallHandler(NULL), __busName(busName), __credential(NULL) { @@ -34,6 +34,11 @@ ServiceClient::~ServiceClient() delete __methodCallHandler; } +void ServiceClient::setHandler(IMethodCallHandler* handler) +{ + __methodCallHandler = handler; +} + const std::string& ServiceClient::getBusName() { return __busName; diff --git a/src/server/ServiceClient.h b/src/server/ServiceClient.h index 820cfcb..f401539 100644 --- a/src/server/ServiceClient.h +++ b/src/server/ServiceClient.h @@ -31,9 +31,11 @@ namespace ctx { class ServiceClient : public IClient { public: - ServiceClient(ServiceRunner* runner, IMethodCallHandler* callHandler, const std::string& busName); + ServiceClient(ServiceRunner* runner, const std::string& busName); ~ServiceClient(); + void setHandler(IMethodCallHandler* handler); + const std::string& getBusName(); const std::string& getId(); diff --git a/src/server/ServiceRunner.cpp b/src/server/ServiceRunner.cpp index 6ded5a3..b35859d 100644 --- a/src/server/ServiceRunner.cpp +++ b/src/server/ServiceRunner.cpp @@ -167,16 +167,20 @@ ServiceClient* ServiceRunner::__getClient(const std::string& busName) if (iter != __clients.end()) return iter->second.client; - IMethodCallHandler* callHandler = __service->createMethodCallHandler(); - IF_FAIL_RETURN(callHandler, NULL); - - ServiceClient* client = new ServiceClient(this, callHandler, busName); + ServiceClient* client = new ServiceClient(this, busName); if (!client->isVerified()) { delete client; return NULL; } - callHandler->setCaller(client); + IMethodCallHandler* callHandler = __service->createMethodCallHandler(client); + if (!callHandler) { + _E("This cannot be NULL."); + delete client; + return NULL; + } + + client->setHandler(callHandler); __ClientInfo info = {client, __watch(busName, client)}; __clients[busName] = info;