POI: AGL LifeCycle Management
[apps/agl-service-windowmanager.git] / src / activity_manager.hpp
index 0663003..ebd5762 100644 (file)
@@ -57,28 +57,28 @@ struct _observer_context {
 
 using observer = struct _observer_context;
 
-// map of <"id:appid", "context of observer">
-using observers = std::map<std::string, observer>;
-
 class ActivityManager
 {
  public:
   explicit ActivityManager();
   ~ActivityManager() = default;
 
-  void api_register_activity_observer (afb_req_t req);
-  void api_unregister_activity_observer (afb_req_t req);
+  void api_register_activity_observer (afb_req_t req, void* &obs_ctx);
+  void api_unregister_activity_observer (afb_req_t req, void* &obs_ctx);
   wm::result<json_object *> api_get_activity_status(const char *appid);
 
- public:
   void emit_activity_status_changed(const char* appid, const char* state);
+  void lcm_clear_context (void* &lcm_ctx);
 
-  // map of <"id:target", "registered observers">
-  std::map<std::string, observers> map_observers;
+  // map of <"string:target $appid", "vector of registered observers">
+  std::map<std::string, std::vector<observer*>> map_observers;
   // map of <"id:target", "current_state">
   std::map<std::string, int> states;
 
   const char *states_s[NUM_STATUS];
+
+ private:
+  void remove_observer (observer* obs, std::vector<observer*>& obs_v);
 };
 
 } // namespace lcm