多数据源中间件标准版1.0

SubjectRepository.h 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*************************************************************************
  2. 【文件名】 SubjectRepository.h
  3. 【功能模块和目的】 发布主题管理类头文件
  4. 【开发者及日期】 郑石诺 2015/01/22
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CAgentOffice;
  11. class CExtenCtrl;
  12. class CQueueMgr;
  13. class CSubject;
  14. /*************************************************************************
  15. 【类名】 CSubjectRepository
  16. 【功能】
  17. 【接口说明】 发布主题管理类
  18. 【开发者及日期】 郑石诺 2015/01/22
  19. 【版本】 V1.0.0
  20. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  21. 【更改记录】
  22. *************************************************************************/
  23. class CSubjectRepository
  24. {
  25. public:
  26. CSubjectRepository(CAgentOffice* pAgentOffice, CExtenCtrl* pExtenCtrl, CQueueMgr* pQueueMgr);
  27. ~CSubjectRepository(void);
  28. // 订阅接口
  29. void registObserver(UINT AgentId, SUBJECT_TYPE Type, int Data); // 注册订阅
  30. void removeObserver(UINT AgentId, SUBJECT_TYPE Type, int Data); // 取消订阅
  31. // 清除指定座席的所有订阅的主题
  32. void clearObserver(UINT AgentId);
  33. // 信息通知接口
  34. void onAgentStateUpdated(UINT Id, UINT ExtId, int State); // 座席状态变化事件响应
  35. void onPhoneStateUpdated(UINT Id, UINT ExtId, int State); // 分机状态变化事件响应
  36. void onQueueStateUpdated(UINT QueueNo, UINT Count); // 排队状态变化事件响应
  37. void onTrunkUsageUpdated(UINT TaskId, UINT Usage); // 呼叫任务外线利用率变化事件响应
  38. // 信息管理控制,供内部主题类调用
  39. UINT getAgentAssoExten(UINT AgentId); // 得到指定座席的关联分机号
  40. UINT getAgentAssoExtState(UINT AgentId); // 得到指定座席的关联分机状态
  41. UINT getAgentState(UINT AgentId); // 得到指定座席的当前状态
  42. UINT getIncomingCallCount(UINT QueueNo); // 得到等待排队的呼叫数量
  43. void getStateSpecAgentList(SUBJECT_TYPE Type, CString& AgentList); // 获取指定状态的座席列表
  44. CAgentOffice* GetAgentOffice() {return m_pAgentOffice;} //
  45. private:
  46. void __initSubjectMap(void); // 初始化主题索引表
  47. void __clearSubjectMap(void); // 清空主题索引表
  48. CSubject* __getSubject(SUBJECT_TYPE Type); // 得到指定类型的主题
  49. private:
  50. CExtenCtrl* m_pExtenCtrl; // 内线分机管理类
  51. CQueueMgr* m_pQueueMgr; // 排队来电管理类
  52. CAgentOffice* m_pAgentOffice; // 座席管理类
  53. CCriticalSection m_RegistLock;
  54. CMap<UINT, UINT, CSubject*, CSubject*> m_SubjectMap; // 主题索引表
  55. };