#include "StdAfx.h" #include "SubjectIncomingCall.h" #include "SubjectRepository.h" #include "SubjectHost.h" CSubjectIncomingCall::CSubjectIncomingCall(CSubjectRepository* pParent) : CSubject(pParent) { } CSubjectIncomingCall::~CSubjectIncomingCall(void) { } /***************************************************************** **【函数名称】 _insertData **【函数功能】 追加订阅数据 **【参数】 Data: 要追加的数据内容 pHost: 关联的观查者对象 Type: 订阅类型 **【返回值】 ****************************************************************/ void CSubjectIncomingCall::_insertData( int Data, CSubjectHost* pHost, SUBJECT_TYPE Type ) { // 保存订阅的组号到观察者 pHost->addQueueNo(Data); // 提取外线来电排队信息发送到当前观查者 EventSubject info; memset(&info, 0, sizeof(EventSubject)); info.SubData1 = Data; info.SubData2 = m_pParent->getIncomingCallCount(Data); info.nEventType = Type; // sprintf_s(info.szData, EVENT_SUBJECT_BUF_LEN, "%d", m_pParent->getIncomingCallCount(Data)); _dispatchEvent(&info, pHost->id()); } /***************************************************************** **【函数名称】 _deleteData **【函数功能】 追加订阅数据 **【参数】 Data: 要追加的数据内容 pHost: 关联的观查者对象 Type: 订阅类型 **【返回值】 ****************************************************************/ void CSubjectIncomingCall::_deleteData( int Data, CSubjectHost* pHost ) { // 删除订阅的组号 pHost->delQueueNo(Data); } /***************************************************************** **【函数名称】 _isHostEvent **【函数功能】 当前事件是否属于指定的观查者 **【参数】 pEvent: 事件内容 pHost: 关联的观查者对象 **【返回值】 ****************************************************************/ BOOL CSubjectIncomingCall::_isHostEvent( EventSubject* pEvent, CSubjectHost* pHost ) { return pHost->isQueueNoCared(pEvent->SubData1); } /***************************************************************** **【函数名称】 incodeEvent **【函数功能】 打包通知事件内容 **【参数】 SubData1 订阅数据1 SubData2 订阅数据2 Type 事件类型 Data 附加信息 **【返回值】 当前事件是否需要发送 ****************************************************************/ BOOL CSubjectIncomingCall::incodeEvent( UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent ) { if(m_HostList.IsEmpty()) return FALSE; memset(pEvent, 0, sizeof(EventSubject)); pEvent->nEventType = Type; pEvent->SubData1 = SubData1; pEvent->SubData2 = Data; // sprintf_s(pEvent->szData, EVENT_SUBJECT_BUF_LEN, "%d", Data); return TRUE; }