#include <app_service.h>
#include <FOspConfig.h>
-#include <FBaseColIListT.h>
-#include <FBaseColIList.h>
+#include <FBaseColArrayListT.h>
#include <FBaseObject.h>
-#include <FBaseString.h>
#include <FBaseRtIEventListener.h>
-#include <FAppAppManager.h>
-#include <FAppIAppControlEventListener.h>
+#include <FAppTypes.h>
#include <FBaseSysLog.h>
#include "FApp_Types.h"
#include "FApp_IAppManagerServiceEventListener.h"
#include "FApp_RequestManagerT.h"
#include "FApp_IAppControlResponseEventListener.h"
+#include "FApp_LaunchInfo.h"
namespace Tizen { namespace Base
{
class String;
-namespace Runtime
-{
-class _LibraryImpl;
-}
namespace Collection
{
class IMap;
+class IList;
}
}}
namespace Tizen { namespace Io
class _AppManagerEventArg;
class _AppMessageImpl;
class _AppControlResponseEvent;
-
-typedef result (*LaunchCbType)(void* data, _AppArg* pArg, _AppArg* pResArg, service_result_e res, int prop, int reqId);
+class IAppControlEventListener;
+class IAppControlResponseListener;
typedef void (*AppSvcResFn)(void* b, int requestCode, service_result_e res, void* data);
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _LaunchInfo handles the launch request from this process
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-const long LAUNCH_INFO_MAGIC = 0x494C;
const int RESPONSE_EVENT_REQID_MAGIC = 65536;
-class _LaunchInfo
-{
-public:
- _LaunchInfo(_AppArg* pArg, LaunchCbType pCb, void* pData, int prop)
- : magic(LAUNCH_INFO_MAGIC)
- , reqId(-1)
- , pArg(pArg)
- , launchCb(pCb)
- , pUserData(pData)
- , property(prop)
- {
- }
-
- ~_LaunchInfo(void);
-
-private:
- _LaunchInfo(const _LaunchInfo& rhs);
- _LaunchInfo& operator =(const _LaunchInfo& rhs);
-
-public:
- const long magic;
- int reqId;
- _AppArg* pArg;
- const LaunchCbType launchCb;
- void* pUserData;
- const int property;
-}; // _LaunchInfo
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _InAppRequestManager manges In-process AppControl request
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-struct _InProcessInfo
-{
-public:
- _InProcessInfo(const Tizen::Base::String& aId, const Tizen::Base::String& oId, int prop, bool legacy, Tizen::Base::Runtime::_LibraryImpl& lib, Tizen::Base::Runtime::IEventListener* pListener)
- : reqId(-1)
- , providerId(aId)
- , operationId(oId)
- , property(prop)
- , pLib(&lib)
- , pListener(pListener)
- , isLegacy(legacy)
- {
- }
-
- ~_InProcessInfo(void);
-
-private:
- _InProcessInfo(const _InProcessInfo& rhs);
- _InProcessInfo& operator =(const _InProcessInfo& rhs);
-
-public:
- int reqId;
- const Tizen::Base::String providerId;
- const Tizen::Base::String operationId;
- const int property;
- Tizen::Base::Runtime::_LibraryImpl* pLib; // non-empty
- Tizen::Base::Runtime::IEventListener* pListener;
- bool isLegacy;
-}; // _InProcessInfo
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// _RequestManager manges out-of-process launch request and handles the return arguments
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-class _ResultInfo
-{
-public:
- _ResultInfo(_AppArg& arg)
- : reqId(-1)
- , arg(arg)
- {
- }
-
- ~_ResultInfo(void)
- {
- }
-
-private:
- _ResultInfo(const _ResultInfo& rhs);
- _ResultInfo& operator =(const _ResultInfo& rhs);
-
-public:
- int reqId;
- _AppArg& arg;
-}; // _ResultInfo
-
-// partial specialization
-template<> inline void _RequestManagerT<_ResultInfo>::RemoveItem(int reqId)
-{
- // 1st request is launch request itself and do not remove it ever.
- if (reqId == 0)
- {
- return;
- }
-
- _ResultInfo* pItem = FindItem(reqId);
- if (pItem)
- {
- __requestList.Remove(reqId);
- delete pItem;
- }
-}
-
class _OSP_EXPORT_ _AppControlManager
: public Tizen::Base::Object
virtual void OnAppControlEventReceivedN(int reqId, _AppArg* pAppArg, int res);
- virtual void OnAppControlEventReceivedN(int reqId, int res, const Tizen::Base::Collection::IMap* pArgs);
+ virtual void OnAppControlEventReceivedN(int reqId, int res, const Tizen::Base::Collection::IMap* pArgs, int prop);
virtual void OnAppControlEventReceivedN(int reqId, const AppId& appId, const Tizen::Base::String& operationId);
_OSP_LOCAL_ result SendAppControlEvent(Tizen::Base::Runtime::IEventArg& arg);
_OSP_LOCAL_ Tizen::Base::Collection::IMapT<int,_AppControlResponseEvent*>* GetAppControlResponseEventContainer(void);
+
_OSP_LOCAL_ result RegisterRequest(service_s* service, int& req, _AppHandler& handler);
- _OSP_LOCAL_ void RemoveResultRequest(int reqId)
- {
- __resultManager.RemoveItem(reqId);
- }
+ _OSP_LOCAL_ void RemoveResultRequest(int reqId);
const _AppArg* FindResultRequest(int reqId) const;
static AppCtrlResult ConvertAppControlResultCode(int res);
+ static void InvokeAppControlCompleteListener(IAppControlResponseListener& listener, const AppId& appId, const Tizen::Base::String& op, AppCtrlResult res, const Tizen::Base::Collection::IMap* pExtraData, bool noRaise);
+
+ static void InvokeLegacyAppControlCompleteListener(IAppControlEventListener& listener, const AppId& appId, const Tizen::Base::String& op, const Tizen::Base::Collection::IList* pList, bool noRaise);
+
private:
_OSP_LOCAL_ _AppControlManager(void);
_RequestManagerT<_ResultInfo> __resultManager;
Tizen::Base::Collection::ArrayListT<void*> __listenerList;
- Tizen::Base::Collection::HashMapT<int, _AppControlResponseEvent*>* __pAppControlResponseEventContainer;
+ Tizen::Base::Collection::HashMapT<int, _AppControlResponseEvent*> __appControlResponseEventContainer;
Tizen::Base::Collection::ArrayListT<int> __appControlResponseEventList;
- //friend class AppManager;
friend class _AppControlImpl;
- //friend class _SqlDataControlImpl;
- //friend class _MapDataControlImpl;
friend class _DataControlProviderManagerImpl;
friend class _AppControlProviderManagerImpl;
friend class Tizen::Io::_DataControlResultSetImpl;