#include "StdAfx.h" #include "SubjectTrunkUsageOfTask.h" #include "SubjectRepository.h" #include "SubjectHost.h" CSubjectTrunkUsageOfTask::CSubjectTrunkUsageOfTask(CSubjectRepository* pParent) : CSubject(pParent) { } CSubjectTrunkUsageOfTask::~CSubjectTrunkUsageOfTask(void) { } /***************************************************************** **【函数名称】 __updateTrunkUsage **【函数功能】 更新任务的外线利用率 **【参数】 **【返回值】 ****************************************************************/ void CSubjectTrunkUsageOfTask::__updateTrunkUsage( UINT TaskId, UINT Usage ) { m_TrunkUsageTable.SetAt(TaskId, Usage); } /***************************************************************** **【函数名称】 __getTrunkUsage **【函数功能】 获取外线的利用率 **【参数】 **【返回值】 ****************************************************************/ UINT CSubjectTrunkUsageOfTask::__getTrunkUsage( UINT TaskId ) { UINT Usage = 0; m_TrunkUsageTable.Lookup(TaskId, Usage); return Usage; } /***************************************************************** **【函数名称】 _insertData **【函数功能】 追加订阅数据 **【参数】 Data: 要追加的数据内容 pHost: 关联的观查者对象 Type: 订阅类型 **【返回值】 ****************************************************************/ void CSubjectTrunkUsageOfTask::_insertData( int Data, CSubjectHost* pHost, SUBJECT_TYPE Type ) { // 提取任务外线利用率信息发送到当前观查者 EventSubject info; memset(&info, 0, sizeof(EventSubject)); info.SubData1 = Data; info.SubData2 = __getTrunkUsage(Data); info.nEventType = Type; _dispatchEvent(&info, pHost->id()); } /***************************************************************** **【函数名称】 incodeEvent **【函数功能】 打包通知事件内容 **【参数】 SubData1 订阅数据1 SubData2 订阅数据2 Type 事件类型 Data 附加信息 **【返回值】 当前事件是否需要发送 ****************************************************************/ BOOL CSubjectTrunkUsageOfTask::incodeEvent( UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent ) { __updateTrunkUsage(SubData1, Data); if(m_HostList.IsEmpty()) return FALSE; memset(pEvent, 0, sizeof(EventSubject)); pEvent->nEventType = Type; pEvent->SubData1 = SubData1; pEvent->SubData2 = Data; return TRUE; }