Move files to own directory
[framework/osp/common-service.git] / src / FApp_PackageManagerStub.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17
18 /**
19  * @file         FApp_PackageManagerStub.cpp
20  * @brief       This is the implementation for the _PackageManagerStub class.
21  */
22 #include <cstdio>
23 #include <dlfcn.h>
24 #include <FAppPkgIPackageInstallationResponseListener.h>
25 #include <FAppPkgIPackageUninstallationResponseListener.h>
26 #include <FBaseSysLog.h>
27 #include <FBase_StringConverter.h>
28 #include <FIo_IpcServer.h>
29 #include <FSec_AccessController.h>
30 #include <FApp_PackageManagerIpcMessages.h>
31 #include "FAppPkg_PackageManagerImpl.h"
32 #include "FApp_PackageManagerStub.h"
33
34
35 namespace Tizen { namespace App {
36
37 using namespace Tizen::App::Package;
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Collection;
40 using namespace Tizen::Io;
41 using namespace Tizen::Security;
42
43 _PackageManagerStub::_PackageManagerStub()
44         :__pIpcServer(null)
45         ,__pPackageManagerImpl(null)
46 {
47         SysLog(NID_APP, "_PackageManagerStub - Enter\n");
48 }
49
50 _PackageManagerStub::~_PackageManagerStub()
51 {
52         if ( __pIpcServer != null)
53         {
54                 __pIpcServer->Stop();
55                 delete __pIpcServer;
56         }
57
58         SysLog(NID_APP, "_PackageManagerStub - Exit\n");
59 }
60
61 result
62 _PackageManagerStub::Construct(void)
63 {
64         SysLog(NID_APP, "_PackageManagerStub - Construct.");
65
66         __pPackageManagerImpl = Tizen::App::Package::_PackageManagerImpl::GetInstance();
67
68         result r = E_SUCCESS;
69         r = StartIpcServer();
70         SysTryReturn(NID_APP, !IsFailed(r), r, r, "failed to StartIpcServer.(%s)", GetErrorMessage(r));
71
72         return E_SUCCESS;
73 }
74
75 result
76 _PackageManagerStub::StartIpcServer(void)
77 {
78         SysLog(NID_APP, "_PackageManagerStub - StartIpcServer");
79
80         __pIpcServer = new (std::nothrow) _IpcServer();
81         SysTryReturn(NID_APP, __pIpcServer != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Not enough memory.");
82
83         result r = __pIpcServer->Construct( "osp.app.ipcserver.samplepackagemanager", *this, false);
84         SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Failed to create IPC server(%s)", GetErrorMessage(r), "osp.app.ipcserver.packagemanager");
85
86         r = __pIpcServer->Start();
87         SysTryCatch(NID_APP, !IsFailed(r), , r, "[%s] Failed to Start IPC server(%s)", GetErrorMessage(r), "osp.app.ipcserver.packagemanager");
88
89         return E_SUCCESS;
90
91 CATCH:
92         delete __pIpcServer;
93         __pIpcServer = null;
94         return r;
95 }
96
97 void
98 _PackageManagerStub::OnInstallPackage(const PackageId& packageId, const String& packagePath, int listener, result* pRes)
99 {
100         SysLog(NID_APP, "kujaesung _PackageManagerStub::OnInstallPackage \n");
101         //SysTryReturnVoidResult(NID_APP, __pPackageManagerImpl != null, E_INVALID_STATE, "Invalid package manager state.");
102         //*pRes = _AccessController::CheckSystemPrivilege(__pIpcServer->GetClientPackageId(), _PRV_PACKAGEMANAGER_INSTALL);
103         //SysTryReturnVoidResult(NID_APP, !IsFailed(*pRes), *pRes = E_PRIVILEGE_DENIED, "The application does not have the privilege to call this method.");
104         //String appId;
105         //*pRes = __pPackageManagerImpl->InstallPackage(packageId, packagePath, (IPackageInstallationResponseListener*)listener);
106 }
107
108 void
109 _PackageManagerStub::OnUninstallPackage(const PackageId& packageId, int listener, result* pRes)
110 {
111         SysLog(NID_APP, "kujaesung _PackageManagerStub::OnUninstallPackage \n");
112         //SysTryReturnVoidResult(NID_APP, __pPackageManagerImpl != null, E_INVALID_STATE, "Invalid package manager state.");
113         //*pRes = _AccessController::CheckSystemPrivilege(__pIpcServer->GetClientPackageId(), _PRV_PACKAGEMANAGER_INSTALL);
114         //SysTryReturnVoidResult(NID_APP, !IsFailed(*pRes), *pRes = E_PRIVILEGE_DENIED, "The application does not have the privilege to call this method.");
115         //*pRes = __pPackageManagerImpl->UninstallPackage(packageId, (IPackageUninstallationResponseListener*)listener);
116 }
117
118 void
119 _PackageManagerStub::OnIpcRequestReceived(_IpcServer& server, const IPC::Message& message)
120 {
121         SysLog(NID_APP, "(pkgId:%ls, clientId:%d)\n", server.GetClientPackageId().GetPointer(), server.GetClientId());
122
123         IPC_BEGIN_MESSAGE_MAP(_PackageManagerStub, message)
124                 IPC_MESSAGE_HANDLER_EX(PackageManager_InstallPackage, &server, OnInstallPackage)
125                 IPC_MESSAGE_HANDLER_EX(PackageManager_UninstallPackage, &server, OnUninstallPackage)
126         IPC_END_MESSAGE_MAP()
127 }
128
129 void
130 _PackageManagerStub::OnIpcServerStarted(const _IpcServer& server)
131 {
132         SysLog(NID_APP, "_PackageManagerStub::OnIpcServerStarted \n");
133 }
134
135 void
136 _PackageManagerStub::OnIpcServerStopped(const _IpcServer& server)
137 {
138         SysLog(NID_APP, "_PackageManagerStub::OnIpcServerStopped \n");
139 }
140
141 void
142 _PackageManagerStub::OnIpcClientConnected(const _IpcServer& server, int clientId)
143 {
144         SysLog(NID_APP, "_PackageManagerStub::OnIpcClientConnected (clientId:%d)\n", clientId);
145 }
146
147 void
148 _PackageManagerStub::OnIpcClientDisconnected(const _IpcServer&server, int clientId)
149 {
150         SysLog(NID_APP, "(pkgId:%ls, clientId:%d)\n", server.GetClientPackageId().GetPointer(), clientId);
151 }
152
153 }}