升龙物业 老版本 ocx IPO, 加密狗 转值班电话

Subject.h 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*************************************************************************
  2. 【文件名】 Subject.h
  3. 【功能模块和目的】 订阅主题基类头文件
  4. 【开发者及日期】 郑石诺 2015/01/22
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CSubjectHost;
  11. class CSubjectRepository;
  12. /*************************************************************************
  13. 【类名】 CSubject
  14. 【功能】
  15. 【接口说明】 订阅主题基类
  16. 【开发者及日期】 郑石诺 2015/01/22
  17. 【版本】 V1.0.0
  18. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  19. 【更改记录】
  20. *************************************************************************/
  21. class CSubject
  22. {
  23. public:
  24. CSubject(CSubjectRepository* pParent);
  25. virtual ~CSubject(void) = 0 {}
  26. // 打包通知事件内容
  27. virtual BOOL incodeEvent(UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent) = 0;
  28. // 事件通知接口
  29. void onEvent(EventSubject* pEvent);
  30. // 订阅接口
  31. void registObserver(UINT AgentId, int Data, SUBJECT_TYPE Type); // 注册订阅
  32. void removeObserver(UINT AgentId, int Data); // 取消订阅
  33. protected:
  34. // 发送事件到指定座席
  35. void _dispatchEvent(EventSubject* pEvent, UINT AgentId);
  36. // 重载操作
  37. virtual void _insertData(int Data, CSubjectHost* pHost, SUBJECT_TYPE Type) = 0; // 追加订阅数据
  38. virtual void _deleteData(int Data, CSubjectHost* pHost) = 0; // 移除订阅数据
  39. virtual BOOL _isHostEvent(EventSubject* pEvent, CSubjectHost* pHost) = 0; // 当前事件是否属于指于的订阅者
  40. private:
  41. CSubjectHost* __getHost(UINT AgentId); // 得到指定ID的观查者
  42. void __removeHost(UINT AgentId); // 删除指定ID的观查者
  43. protected:
  44. CSubjectRepository* m_pParent; // 订阅主控管理类
  45. CList<CSubjectHost*, CSubjectHost*> m_HostList; // 当前主题的观查者列表
  46. };