2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FIo_ChannelServiceStub.cpp
20 * @brief This is the implementation file for the _ChannelServiceStub class.
29 #include <FBaseSysLog.h>
30 #include <FBaseRt_EventDispatcher.h>
31 #include "FIo_IpcServer.h"
32 #include "FIo_ChannelServiceStub.h"
33 #include "FIo_ChannelMessages.h"
34 #include "FIo_ChannelService.h"
36 using namespace Tizen::Base;
37 using namespace Tizen::Base::Collection;
38 using namespace Tizen::Base::Runtime;
39 using namespace Tizen::Io;
43 namespace Tizen { namespace Io
46 _ChannelServiceStub::_ChannelServiceStub(void)
48 , __pChannelService(null)
53 _ChannelServiceStub::~_ChannelServiceStub(void)
59 _ChannelServiceStub::Construct(void)
61 SysAssertf(__pIpcServer == null, "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
62 SysLog(NID_IO, "Constructed");
65 _IpcServer* pIpcServer = null;
67 pIpcServer = new (std::nothrow) _IpcServer;
68 SysTryReturnResult(NID_IO, pIpcServer != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
70 r = pIpcServer->Construct("osp.io.ipcserver.channelmanager", *this, false);
71 SysTryCatch(NID_IO, !IsFailed(r), , r, "[%s] Failed to create IPC server(ChannelService)", GetErrorMessage(r));
73 __pIpcServer = pIpcServer;
84 _ChannelServiceStub::SetChannelService(_ChannelService& service)
86 __pChannelService = &service;
90 _ChannelServiceStub::OnRegisterChannelMessage(const Tizen::Base::String& appId, int* pResult)
92 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
94 int clientId = __pIpcServer->GetClientId();
96 *pResult = __pChannelService->RegisterChannel(appId, clientId);
102 _ChannelServiceStub::OnSendRequestMessage(const String& src,
104 const ArrayList& args,
108 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
110 *pResult = __pChannelService->SendRequest(src, dest, args, requestId);
112 const_cast<ArrayList*>(&args)->RemoveAll(true);
118 _ChannelServiceStub::OnSendNullRequestMessage(const String& src,
123 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
125 *pResult = __pChannelService->SendNullRequest(src, dest, requestId);
131 _ChannelServiceStub::OnSendResponseMessage(const String& src,
133 const ArrayList& args,
137 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
139 *pResult = __pChannelService->SendResponse(src, dest, args, requestId);
141 const_cast<ArrayList*>(&args)->RemoveAll(true);
147 _ChannelServiceStub::OnSendNullResponseMessage(const String& src,
152 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
154 *pResult = __pChannelService->SendNullResponse(src, dest, requestId);
160 _ChannelServiceStub::SendRequest(int clientId, const String& src, const String& dest, const ArrayList& args, int requestId)
162 SysAssertf(__pIpcServer != null, "Not yet constructed. Construct() should be called before use.\n");
164 return __pIpcServer->SendResponse(clientId, new ChannelServiceMsg_sendRequestAsync(src, dest, args, requestId));
168 _ChannelServiceStub::SendNullRequest(int clientId, const String& src, const String& dest, int requestId)
170 SysAssertf(__pIpcServer != null, "Not yet constructed. Construct() should be called before use.\n");
172 return __pIpcServer->SendResponse(clientId, new ChannelServiceMsg_sendNullRequestAsync(src, dest, requestId));
176 _ChannelServiceStub::SendResponse(int clientId, const String& src, const String& dest, const ArrayList& args, int requestId)
178 SysAssertf(__pIpcServer != null, "Not yet constructed. Construct() should be called before use.\n");
180 return __pIpcServer->SendResponse(clientId, new ChannelServiceMsg_sendResponseAsync(src, dest, args, requestId));
184 _ChannelServiceStub::SendNullResponse(int clientId, const String& src, const String& dest, int requestId)
186 SysAssertf(__pIpcServer != null, "Not yet constructed. Construct() should be called before use.\n");
188 return __pIpcServer->SendResponse(clientId, new ChannelServiceMsg_sendNullResponseAsync(src, dest, requestId));
192 _ChannelServiceStub::OnIpcRequestReceived(_IpcServer& server, const IPC::Message& message)
194 IPC_BEGIN_MESSAGE_MAP(_ChannelServiceStub, message)
195 IPC_MESSAGE_HANDLER_EX(ChannelServiceMsg_register, &server, OnRegisterChannelMessage)
196 IPC_MESSAGE_HANDLER_EX(ChannelServiceMsg_sendRequest, &server, OnSendRequestMessage)
197 IPC_MESSAGE_HANDLER_EX(ChannelServiceMsg_sendNullRequest, &server, OnSendNullRequestMessage)
198 IPC_MESSAGE_HANDLER_EX(ChannelServiceMsg_sendResponse, &server, OnSendResponseMessage)
199 IPC_MESSAGE_HANDLER_EX(ChannelServiceMsg_sendNullResponse, &server, OnSendNullResponseMessage)
200 IPC_END_MESSAGE_MAP_EX()
204 _ChannelServiceStub::OnIpcServerStarted(const _IpcServer& server)
210 _ChannelServiceStub::OnIpcServerStopped(const _IpcServer& server)
216 _ChannelServiceStub::OnIpcClientConnected(const _IpcServer& server, int clientId)
222 _ChannelServiceStub::OnIpcClientDisconnected(const _IpcServer& server, int clientId)
224 SysAssertf(__pChannelService != null, "Channel service has not been initialized.\n");
225 SysLog(NID_IO, "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
226 __pChannelService->UnregisterChannel(clientId);
227 SysLog(NID_IO, ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");