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

SubjectPhoneState.cpp 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "StdAfx.h"
  2. #include "SubjectPhoneState.h"
  3. #include "SubjectRepository.h"
  4. #include "SubjectHost.h"
  5. CSubjectPhoneState::CSubjectPhoneState(CSubjectRepository* pParent) : CSubject(pParent)
  6. {
  7. }
  8. CSubjectPhoneState::~CSubjectPhoneState(void)
  9. {
  10. }
  11. /*****************************************************************
  12. **【函数名称】 _insertData
  13. **【函数功能】 追加订阅数据
  14. **【参数】 Data: 要追加的数据内容
  15. pHost: 关联的观查者对象
  16. Type: 订阅类型
  17. **【返回值】
  18. ****************************************************************/
  19. void CSubjectPhoneState::_insertData( int Data, CSubjectHost* pHost, SUBJECT_TYPE Type )
  20. {
  21. // 保存订阅的数据
  22. pHost->addAgentId2ExtNo(Data);
  23. // 提取被订阅分机的状态到发送到当前观查者
  24. int Exten = m_pParent->getAgentAssoExten(Data);
  25. if(Exten != 0) // 如果分机已签入
  26. {
  27. EventSubject info;
  28. memset(&info, 0, sizeof(EventSubject));
  29. info.SubData1 = Data;
  30. info.SubData2 = Exten;
  31. info.nEventType = Type;
  32. sprintf_s(info.szData, EVENT_SUBJECT_BUF_LEN, "%d", m_pParent->getAgentAssoExtState(Data));
  33. _dispatchEvent(&info, pHost->id());
  34. } // end if
  35. }
  36. /*****************************************************************
  37. **【函数名称】 _deleteData
  38. **【函数功能】 移除订阅数据
  39. **【参数】 Data: 要移除的数据内容
  40. pHost: 关联的观查者对象
  41. **【返回值】
  42. ****************************************************************/
  43. void CSubjectPhoneState::_deleteData( int Data, CSubjectHost* pHost )
  44. {
  45. // 删除订阅数据
  46. pHost->delAgentId2ExtNo(Data);
  47. }
  48. /*****************************************************************
  49. **【函数名称】 _isHostEvent
  50. **【函数功能】 当前事件是否属于指定的观查者
  51. **【参数】 pEvent: 事件内容
  52. pHost: 关联的观查者对象
  53. **【返回值】
  54. ****************************************************************/
  55. BOOL CSubjectPhoneState::_isHostEvent( EventSubject* pEvent, CSubjectHost* pHost )
  56. {
  57. // 当前事件是否当前观查者定阅的内容
  58. return pHost->isAgentId2ExtNoCared(pEvent->SubData1);
  59. }
  60. /*****************************************************************
  61. **【函数名称】 incodeEvent
  62. **【函数功能】 打包通知事件内容
  63. **【参数】 SubData1 订阅数据1
  64. SubData2 订阅数据2
  65. Type: 事件类型
  66. Data: 附加信息
  67. **【返回值】 当前事件是否需要发送
  68. ****************************************************************/
  69. BOOL CSubjectPhoneState::incodeEvent( UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent )
  70. {
  71. if(m_HostList.IsEmpty())
  72. return FALSE;
  73. memset(pEvent, 0, sizeof(EventSubject));
  74. pEvent->SubData1 = SubData1;
  75. pEvent->SubData2 = SubData2;
  76. pEvent->nEventType = Type;
  77. sprintf_s(pEvent->szData, EVENT_SUBJECT_BUF_LEN, "%d", Data);
  78. return TRUE;
  79. }