Multicaster.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef MULTICASTER_H
  2. #define MULTICASTER_H
  3. #include <map>
  4. #include <vector>
  5. #include <string>
  6. class Value 
  7. {
  8. };
  9. class MulticastObserver
  10. {
  11. public:
  12.     virtual void accept (std::string address, Value value) = 0;
  13. };
  14. typedef std::vector<MulticastObserver *>     Subscriptions;
  15. typedef std::map<std::string,Subscriptions>  AddressSpace;
  16. class Multicaster
  17. {
  18. public:
  19.     virtual        ~Multicaster () {}
  20.     virtual bool    subscribe (MulticastObserver *observer, std::string address);
  21.     virtual bool    unsubscribe (MulticastObserver *observer, std::string address);
  22.     virtual bool    publish (MulticastObserver *observer, std::string address, Value value);
  23.     virtual void    unsubscribeFromAll (MulticastObserver *observer);
  24. private:
  25.     AddressSpace    m_addresses;
  26.     void            unsubscribe (Subscriptions& subscriptions, MulticastObserver *observerToRemove);
  27. };
  28. #endif