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)
{
delete __methodCallHandler;
}
+void ServiceClient::setHandler(IMethodCallHandler* handler)
+{
+ __methodCallHandler = handler;
+}
+
const std::string& ServiceClient::getBusName()
{
return __busName;
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();
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;