summaryrefslogtreecommitdiff
path: root/core/SystemStatusOsObserver.h
diff options
context:
space:
mode:
authorHarikrishnan Hariharan <hahariha@codeaurora.org>2017-08-11 17:36:10 +0530
committerKatz Yamada <kyamada@codeaurora.org>2017-09-07 11:05:15 -0700
commitff8b31761cff3098444c41c8daa7baa6dff92ccd (patch)
tree8588ec5f2b0b602e09d731cc6ce51bb31c539fb6 /core/SystemStatusOsObserver.h
parent6ef3b747143c590d40e50299529f40cde8c15e2a (diff)
downloadgps-ff8b31761cff3098444c41c8daa7baa6dff92ccd.tar.gz
Integrate XtraSysStatObs with SystemStatusObserver
Use SystemStatusObserver to subscribe for dataitems in XtraSystemStatusObserver. Change-Id: Ib1828b9025c9c5bb5194a36014249472ed3f6f9e CRs-Fixed: 2093290
Diffstat (limited to 'core/SystemStatusOsObserver.h')
-rw-r--r--core/SystemStatusOsObserver.h294
1 files changed, 48 insertions, 246 deletions
diff --git a/core/SystemStatusOsObserver.h b/core/SystemStatusOsObserver.h
index 8e42d21..985e5c9 100644
--- a/core/SystemStatusOsObserver.h
+++ b/core/SystemStatusOsObserver.h
@@ -29,36 +29,34 @@
#ifndef __SYSTEM_STATUS_OSOBSERVER__
#define __SYSTEM_STATUS_OSOBSERVER__
-#include <stdint.h>
+#include <cinttypes>
#include <string>
#include <list>
#include <map>
#include <new>
#include <vector>
-#include <platform_lib_log_util.h>
-#include <DataItemId.h>
+
#include <MsgTask.h>
+#include <DataItemId.h>
#include <IOsObserver.h>
+#include <platform_lib_log_util.h>
namespace loc_core
{
-
/******************************************************************************
SystemStatusOsObserver
******************************************************************************/
+using namespace std;
+
// Forward Declarations
class IDataItemCore;
-
-template <typename CT, typename DIT>
-class IClientIndex;
-
-template <typename CT, typename DIT>
-class IDataItemIndex;
+template<typename CT, typename DIT> class IClientIndex;
+template<typename CT, typename DIT> class IDataItemIndex;
struct SystemContext {
- IDataItemSubscription *mSubscriptionObj;
- IFrameworkActionReq *mFrameworkActionReqObj;
- const MsgTask *mMsgTask;
+ IDataItemSubscription* mSubscriptionObj;
+ IFrameworkActionReq* mFrameworkActionReqObj;
+ const MsgTask* mMsgTask;
inline SystemContext() :
mSubscriptionObj(NULL),
@@ -66,6 +64,8 @@ struct SystemContext {
mMsgTask(NULL) {}
};
+typedef map<IDataItemObserver*, list<DataItemId>> ObserverReqCache;
+
// Clients wanting to get data from OS/Framework would need to
// subscribe with OSObserver using IDataItemSubscription interface.
// Such clients would need to implement IDataItemObserver interface
@@ -80,252 +80,54 @@ public:
~SystemStatusOsObserver();
// To set the subscription object
- inline void setSubscriptionObj(IDataItemSubscription *subscriptionObj) {
- mContext.mSubscriptionObj = subscriptionObj;
- };
+ virtual void setSubscriptionObj(IDataItemSubscription* subscriptionObj);
// To set the framework action request object
- inline void setFrameworkActionReqObj(IFrameworkActionReq *frameworkActionReqObj) {
+ inline void setFrameworkActionReqObj(IFrameworkActionReq* frameworkActionReqObj) {
mContext.mFrameworkActionReqObj = frameworkActionReqObj;
}
- // IDataItemObserver Overrides
- virtual void getName (string & name);
- virtual void notify (const std::list <IDataItemCore *> & dlist);
-
// IDataItemSubscription Overrides
- virtual void subscribe (const std :: list <DataItemId> & l, IDataItemObserver * client);
- virtual void updateSubscription
- (
- const std :: list <DataItemId> & l,
- IDataItemObserver * client
- );
- virtual void requestData
- (
- const std :: list <DataItemId> & l,
- IDataItemObserver * client
- );
- virtual void unsubscribe (const std :: list <DataItemId> & l, IDataItemObserver * client);
- virtual void unsubscribeAll (IDataItemObserver * client);
+ virtual void subscribe(const list<DataItemId>& l, IDataItemObserver* client);
+ virtual void updateSubscription(const list<DataItemId>& l, IDataItemObserver* client);
+ virtual void requestData(const list<DataItemId>& l, IDataItemObserver* client);
+ virtual void unsubscribe(const list<DataItemId>& l, IDataItemObserver* client);
+ virtual void unsubscribeAll(IDataItemObserver* client);
+
+ // IDataItemObserver Overrides
+ virtual void notify(const list<IDataItemCore*>& dlist);
+ inline virtual void getName(string& name) {
+ name = mAddress;
+ }
// IFrameworkActionReq Overrides
- virtual void turnOn (DataItemId dit, int timeOut = 0);
- virtual void turnOff (DataItemId dit);
+ virtual void turnOn(DataItemId dit, int timeOut = 0);
+ virtual void turnOff(DataItemId dit);
private:
-
- SystemContext mContext;
- const string mAddress;
- IClientIndex <IDataItemObserver *, DataItemId> *mClientIndex;
- IDataItemIndex <IDataItemObserver *, DataItemId> *mDataItemIndex;
- map < DataItemId, IDataItemCore * > mDataItemCache;
- map < DataItemId, int > mActiveRequestCount;
-
- // Nested types
- // Messages
- struct HandleMsgBase : public LocMsg {
- HandleMsgBase (SystemStatusOsObserver * parent);
- virtual ~HandleMsgBase ();
- // Data members
- SystemStatusOsObserver * mParent;
- };
+ SystemContext mContext;
+ const string mAddress;
+ IClientIndex<IDataItemObserver*, DataItemId>* mClientIndex;
+ IDataItemIndex<IDataItemObserver*, DataItemId>* mDataItemIndex;
+ map<DataItemId, IDataItemCore*> mDataItemCache;
+ map<DataItemId, int> mActiveRequestCount;
+
+ // Cache the subscribe and requestData till subscription obj is obtained
+ ObserverReqCache mSubscribeReqCache;
+ ObserverReqCache mReqDataCache;
+ void cacheObserverRequest(ObserverReqCache& reqCache,
+ const list<DataItemId>& l, IDataItemObserver* client);
// Helpers
- int sendFirstResponse
- (
- const list <DataItemId> & l,
- IDataItemObserver * to
- );
-
- int sendCachedDataItems
- (
- const list <DataItemId> & l,
- IDataItemObserver * to
- );
-
- int updateCache (IDataItemCore * d, bool &dataItemUpdated);
- void logMe (const list <DataItemId> & l);
-
- // Messages
- struct HandleClientMsg : public LocMsg {
- HandleClientMsg (SystemStatusOsObserver * parent, IDataItemObserver * client);
- virtual ~HandleClientMsg ();
- // Data Members
- SystemStatusOsObserver * mParent;
- IDataItemObserver * mClient;
- };
-
- struct HandleSubscribeReq : public HandleClientMsg {
- HandleSubscribeReq (SystemStatusOsObserver * parent,
- const list <DataItemId> & l,
- IDataItemObserver * client);
- virtual ~HandleSubscribeReq ();
- void proc () const;
- // Data members
- const list <DataItemId> mDataItemList;
- };
-
- struct HandleUpdateSubscriptionReq : public HandleClientMsg {
- HandleUpdateSubscriptionReq (SystemStatusOsObserver * parent,
- const list <DataItemId> & l,
- IDataItemObserver * client);
- virtual ~HandleUpdateSubscriptionReq ();
- void proc () const;
- // Data members
- const list <DataItemId> mDataItemList;
- };
-
- struct HandleRequestData : public HandleClientMsg {
- HandleRequestData (SystemStatusOsObserver * parent,
- const list <DataItemId> & l,
- IDataItemObserver * client);
- virtual ~HandleRequestData ();
- void proc () const;
- const list <DataItemId> mDataItemList;
- };
-
- struct HandleUnsubscribeReq : public HandleClientMsg {
- HandleUnsubscribeReq (SystemStatusOsObserver * parent,
- const list <DataItemId> & l,
- IDataItemObserver * client);
- virtual ~HandleUnsubscribeReq ();
- void proc () const;
- // Data members
- const list <DataItemId> mDataItemList;
- };
-
- struct HandleUnsubscribeAllReq : public HandleClientMsg {
- HandleUnsubscribeAllReq
- (
- SystemStatusOsObserver * parent,
- IDataItemObserver * client
- );
- virtual ~HandleUnsubscribeAllReq ();
- void proc () const;
- };
-
- struct HandleNotify : public HandleMsgBase {
- HandleNotify (SystemStatusOsObserver * parent, list <IDataItemCore *> dlist);
- virtual ~HandleNotify ();
- void getListOfClients
- (
- const list <DataItemId> & dlist,
- list <IDataItemObserver *> & clients
- ) const;
- void proc () const;
- // Data members
- list <IDataItemCore *> mDList;
- };
-
- struct HandleTurnOn : public HandleMsgBase {
- HandleTurnOn (SystemStatusOsObserver * parent,
- const DataItemId dit,
- const int timeOut);
- virtual ~HandleTurnOn ();
- void proc () const;
- // Data members
- DataItemId mDataItemId;
- int mTimeOut;
- };
-
- struct HandleTurnOff : public HandleMsgBase {
- HandleTurnOff (SystemStatusOsObserver * parent,const DataItemId dit);
- virtual ~HandleTurnOff ();
- void proc () const;
- // Data members
- DataItemId mDataItemId;
- };
-
-};
-
-
-/******************************************************************************
- Messages
-******************************************************************************/
-// Ctors
-inline SystemStatusOsObserver :: HandleMsgBase :: HandleMsgBase (SystemStatusOsObserver * parent)
-:
-mParent (parent)
-{}
-
-inline SystemStatusOsObserver :: HandleClientMsg :: HandleClientMsg
-(
- SystemStatusOsObserver * parent,
- IDataItemObserver * client
-)
-:
-mParent (parent),
-mClient (client)
-{}
-
-inline SystemStatusOsObserver :: HandleSubscribeReq :: HandleSubscribeReq
- (SystemStatusOsObserver * parent, const list <DataItemId> & l, IDataItemObserver * client)
-:
-HandleClientMsg (parent, client), mDataItemList (l)
-{}
-
-inline SystemStatusOsObserver :: HandleUpdateSubscriptionReq :: HandleUpdateSubscriptionReq
- (SystemStatusOsObserver * parent, const list <DataItemId> & l, IDataItemObserver * client)
-:
-HandleClientMsg (parent, client), mDataItemList (l)
-{}
-
-inline SystemStatusOsObserver :: HandleRequestData :: HandleRequestData
- (SystemStatusOsObserver * parent, const list <DataItemId> & l, IDataItemObserver * client)
-:
-HandleClientMsg (parent, client), mDataItemList (l)
-{}
-
-inline SystemStatusOsObserver :: HandleUnsubscribeReq :: HandleUnsubscribeReq
- (SystemStatusOsObserver * parent, const list <DataItemId> & l, IDataItemObserver * client)
-:
-HandleClientMsg (parent, client), mDataItemList (l)
-{}
-
-inline SystemStatusOsObserver :: HandleUnsubscribeAllReq :: HandleUnsubscribeAllReq
- (SystemStatusOsObserver * parent, IDataItemObserver * client)
-:
-HandleClientMsg (parent, client)
-{}
-
-inline SystemStatusOsObserver :: HandleNotify :: HandleNotify
- (SystemStatusOsObserver * parent, list <IDataItemCore *> dlist)
-:
-HandleMsgBase (parent), mDList (dlist)
-{}
-
-inline SystemStatusOsObserver :: HandleTurnOn :: HandleTurnOn
- (SystemStatusOsObserver * parent, const DataItemId dit,const int timeOut)
-:
-HandleMsgBase (parent), mDataItemId (dit), mTimeOut (timeOut)
-{}
-
-inline SystemStatusOsObserver :: HandleTurnOff :: HandleTurnOff
- (SystemStatusOsObserver * parent, const DataItemId dit)
-:
-HandleMsgBase (parent), mDataItemId (dit)
-{}
-
-// Dtors
-inline SystemStatusOsObserver :: HandleMsgBase :: ~HandleMsgBase () {}
-inline SystemStatusOsObserver :: HandleClientMsg :: ~HandleClientMsg () {}
-inline SystemStatusOsObserver :: HandleSubscribeReq :: ~HandleSubscribeReq () {}
-inline SystemStatusOsObserver :: HandleUpdateSubscriptionReq :: ~HandleUpdateSubscriptionReq() {}
-inline SystemStatusOsObserver :: HandleRequestData :: ~HandleRequestData() {}
-inline SystemStatusOsObserver :: HandleUnsubscribeReq :: ~HandleUnsubscribeReq () {}
-inline SystemStatusOsObserver :: HandleUnsubscribeAllReq :: ~HandleUnsubscribeAllReq () {}
-
-inline SystemStatusOsObserver :: HandleNotify :: ~HandleNotify () {
- list <IDataItemCore *> :: iterator it = mDList.begin ();
- for (; it != mDList.end (); ++it) {
- delete *it;
- *it = NULL;
+ void sendFirstResponse(const list<DataItemId>& l, IDataItemObserver* to);
+ void sendCachedDataItems(const list<DataItemId>& l, IDataItemObserver* to);
+ void updateCache(IDataItemCore* d, bool& dataItemUpdated);
+ inline void logMe(const list<DataItemId>& l) {
+ for (auto id : l) {
+ LOC_LOGD("DataItem %d", id);
+ }
}
-}
-
-inline SystemStatusOsObserver :: HandleTurnOn :: ~HandleTurnOn () {}
-inline SystemStatusOsObserver :: HandleTurnOff :: ~HandleTurnOff () {}
-
+};
} // namespace loc_core