move general AppControl launch logic to plugin
[platform/framework/native/appfw.git] / src / app / inc / FApp_RequestManagerT.h
index 7e3edc1..1661874 100644 (file)
 #ifndef _FAPP_INTERNAL_REQUEST_MANAGERT_H_
 #define _FAPP_INTERNAL_REQUEST_MANAGERT_H_
 
-#include <limits.h>
-
 #include <FOspConfig.h>
 #include <FBaseColHashMapT.h>
-
 #include <FBaseSysLog.h>
 
-namespace Tizen { namespace Base
+namespace Tizen { namespace Base { namespace Runtime
 {
-class String;
-}}
+class IEventListener;
+}}}
 
 namespace Tizen { namespace App
 {
@@ -43,112 +40,23 @@ class _RequestManagerT
 public:
        typedef Tizen::Base::Collection::HashMapT<int, T*> RequestListType;
        typedef Tizen::Base::Collection::IMapEnumeratorT<int, T*> RequestListEnumType;
+       typedef bool (*Pred)(const T&, Tizen::Base::Runtime::IEventListener*);
+
+       _RequestManagerT(void);
+
+       ~_RequestManagerT(void);
+
+       int InsertItem(T* pItem);
 
-       _RequestManagerT(void)
-               : __reqId(-1)
-       {
-               __requestList.Construct();
-       }
-
-       ~_RequestManagerT(void)
-       {
-               RequestListEnumType* pIter = __requestList.GetMapEnumeratorN();
-               if (pIter == null)
-               {
-                       return;
-               }
-
-               while (pIter->MoveNext() == E_SUCCESS)
-               {
-                       T* pInfo = null;
-                       result r = pIter->GetValue(pInfo);
-
-                       if (IsFailed(r))
-                       {
-                               continue;
-                       }
-
-                       delete pInfo;
-               }
-
-               delete pIter;
-       }
-
-       int InsertItem(T* pItem)
-       {
-               SysTryReturn(NID_APP, pItem != null, -1, E_INVALID_ARG, "[E_INVALID_ARG] Empty argument.");
-
-#if 0
-               // [INFO] temporary disable due to OBS build system
-               __sync_add_and_fetch(&__reqId, 1);
-
-               // [TODO] awkward implementation after overflow
-               // overflow detection
-               __sync_bool_compare_and_swap(&__reqId, INT_MAX, 1);
-#else
-               __reqId++;
-               if (__reqId >= INT_MAX)
-               {
-                       __reqId = 1;
-               }
-#endif
-               SysLog(NID_APP, "Current request ID : %d.", __reqId);
-
-               pItem->reqId = __reqId;
-               __requestList.Add(__reqId, pItem);
-
-               return __reqId;
-       }
-
-       void RemoveItem(int reqId)
-       {
-               T* pItem = FindItem(reqId);
-               if (pItem)
-               {
-                       __requestList.Remove(reqId);
-                       delete pItem;
-               }
-       }
-
-       void RemoveItem(T* pItem)
-       {
-               RequestListEnumType* pIter = __requestList.GetMapEnumeratorN();
-               if (pItem == null || pIter == null)
-               {
-                       return;
-               }
-
-               while (pIter->MoveNext() == E_SUCCESS)
-               {
-                       T* pInfo = null;
-                       result r = pIter->GetValue(pInfo);
-
-                       if (pInfo == pItem)
-                       {
-                               int id = -1;
-                               r = pIter->GetKey(id);
-                               if (r == E_SUCCESS)
-                               {
-                                       __requestList.Remove(id);
-                               }
-
-                               delete pItem;
-                               delete pIter;
-
-                               return;
-                       }
-               }
-
-               delete pIter;
-       }
-
-       T* FindItem(int reqId) const
-       {
-               T* pItem = null;
-               result r = __requestList.GetValue(reqId, pItem);
-
-               return (r == E_SUCCESS) ? pItem : null;
-       }
+       void RemoveItem(int reqId);
+
+       void RemoveItem(T* pItem);
+
+       T* FindItemWithListener(Pred, Tizen::Base::Runtime::IEventListener* pListener) const;
+
+       T* FindItem(int reqId) const;
+
+       void Dump(void) const;
 
 private:
        _RequestManagerT(const T& rhs);
@@ -160,6 +68,7 @@ private:
        RequestListType __requestList;
 }; // _RequestManagerT
 
+
 } } // Tizen::App
 
 #endif // _FAPP_INTERNAL_REQUEST_MANAGERT_H_