| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "StdAfx.h"
- #include "SubjectPhoneState.h"
- #include "SubjectRepository.h"
- #include "SubjectHost.h"
- CSubjectPhoneState::CSubjectPhoneState(CSubjectRepository* pParent) : CSubject(pParent)
- {
- }
- CSubjectPhoneState::~CSubjectPhoneState(void)
- {
- }
- /*****************************************************************
- **【函数名称】 _insertData
- **【函数功能】 追加订阅数据
- **【参数】 Data: 要追加的数据内容
- pHost: 关联的观查者对象
- Type: 订阅类型
- **【返回值】
- ****************************************************************/
- void CSubjectPhoneState::_insertData( int Data, CSubjectHost* pHost, SUBJECT_TYPE Type )
- {
- // 保存订阅的数据
- pHost->addAgentId2ExtNo(Data);
-
- // 提取被订阅分机的状态到发送到当前观查者
- int Exten = m_pParent->getAgentAssoExten(Data);
- if(Exten != 0) // 如果分机已签入
- {
- EventSubject info;
- memset(&info, 0, sizeof(EventSubject));
- info.SubData1 = Data;
- info.SubData2 = Exten;
- info.nEventType = Type;
- sprintf_s(info.szData, EVENT_SUBJECT_BUF_LEN, "%d", m_pParent->getAgentAssoExtState(Data));
- _dispatchEvent(&info, pHost->id());
- } // end if
- }
- /*****************************************************************
- **【函数名称】 _deleteData
- **【函数功能】 移除订阅数据
- **【参数】 Data: 要移除的数据内容
- pHost: 关联的观查者对象
- **【返回值】
- ****************************************************************/
- void CSubjectPhoneState::_deleteData( int Data, CSubjectHost* pHost )
- {
- // 删除订阅数据
- pHost->delAgentId2ExtNo(Data);
- }
- /*****************************************************************
- **【函数名称】 _isHostEvent
- **【函数功能】 当前事件是否属于指定的观查者
- **【参数】 pEvent: 事件内容
- pHost: 关联的观查者对象
- **【返回值】
- ****************************************************************/
- BOOL CSubjectPhoneState::_isHostEvent( EventSubject* pEvent, CSubjectHost* pHost )
- {
- // 当前事件是否当前观查者定阅的内容
- return pHost->isAgentId2ExtNoCared(pEvent->SubData1);
- }
- /*****************************************************************
- **【函数名称】 incodeEvent
- **【函数功能】 打包通知事件内容
- **【参数】 SubData1 订阅数据1
- SubData2 订阅数据2
- Type: 事件类型
- Data: 附加信息
- **【返回值】 当前事件是否需要发送
- ****************************************************************/
- BOOL CSubjectPhoneState::incodeEvent( UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent )
- {
- if(m_HostList.IsEmpty())
- return FALSE;
- memset(pEvent, 0, sizeof(EventSubject));
- pEvent->SubData1 = SubData1;
- pEvent->SubData2 = SubData2;
- pEvent->nEventType = Type;
- sprintf_s(pEvent->szData, EVENT_SUBJECT_BUF_LEN, "%d", Data);
- return TRUE;
- }
|