ServiceRunner creates ServiceClient before IMethodCallHandler to pass the ServiceClie... 70/136270/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Thu, 29 Jun 2017 02:01:09 +0000 (11:01 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Thu, 29 Jun 2017 02:01:09 +0000 (11:01 +0900)
Change-Id: Id209c3e9d260964b44125b4508acb6c59a004fd1
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/server/ServiceClient.cpp
src/server/ServiceClient.h
src/server/ServiceRunner.cpp

index 28ebcf9..757b787 100644 (file)
@@ -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;
index 820cfcb..f401539 100644 (file)
@@ -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();
 
index 6ded5a3..b35859d 100644 (file)
@@ -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;