#ifndef MW_MAP_I_H #define MW_MAP_I_H #include #include #include class MWMapCallbackAdapter { public: virtual void init(Ice::StringSeq) = 0; virtual void join(const std::shared_ptr&) = 0; virtual void leave(const std::shared_ptr&) = 0; virtual void send(const std::shared_ptr&) = 0; }; class MWMap { public: MWMap(bool trace, const std::shared_ptr& logger); void reserve(const std::string&); void unreserve(const std::string&); void join(const std::string&, const std::shared_ptr&); void leave(const std::string&); long long send(const std::string&, std::string); private: using MWMapCallbackMap = std::map>; MWMapCallbackMap _members; std::set _reserved; std::mutex _mutex; const bool _trace; const std::shared_ptr _logger; }; #endif