| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #include "StdAfx.h"
- #include "SubjectAgentsOnSpecState.h"
- #include "SubjectRepository.h"
- #include "SubjectHost.h"
- CSubjectAgentsOnSpecState::CSubjectAgentsOnSpecState(CSubjectRepository* pParent) : CSubject(pParent)
- {
- }
- CSubjectAgentsOnSpecState::~CSubjectAgentsOnSpecState(void)
- {
- }
- /*****************************************************************
- **【函数名称】 _insertData
- **【函数功能】 追加订阅数据
- **【参数】 Data: 要追加的数据内容
- Host: 关联的观查者对象
- Type: 订阅类型
- **【返回值】
- ****************************************************************/
- void CSubjectAgentsOnSpecState::_insertData( int Data, CSubjectHost* pHost, SUBJECT_TYPE Type )
- {
- // 保存当前列表
- m_pParent->getStateSpecAgentList(Type, m_CurrentList);
- // 提取指定状态的座席列表发送到当前观查者
- EventSubject info;
- memset(&info, 0, sizeof(EventSubject));
- info.SubData1 = 0;
- info.SubData2 = 0;
- info.nEventType = Type;
- sprintf_s(info.szData, EVENT_SUBJECT_BUF_LEN, "%s", m_CurrentList);
- _dispatchEvent(&info, pHost->id());
- }
- /*****************************************************************
- **【函数名称】 _deleteData
- **【函数功能】 移除订阅数据
- **【参数】 Data: 要移除的数据内容
- pHost: 关联的观查者对象
- **【返回值】
- ****************************************************************/
- void CSubjectAgentsOnSpecState::_deleteData( int Data, CSubjectHost* pHost )
- {
- }
- /*****************************************************************
- **【函数名称】 incodeEvent
- **【函数功能】 打包通知事件内容
- **【参数】 SubData1 订阅数据1
- SubData2 订阅数据2
- Type: 事件类型
- Data: 附加信息
- **【返回值】 当前事件是否需要发送
- ****************************************************************/
- BOOL CSubjectAgentsOnSpecState::incodeEvent( UINT SubData1, UINT SubData2, SUBJECT_TYPE Type, int Data, EventSubject* pEvent )
- {
- if(m_HostList.IsEmpty())
- return FALSE;
- CString Temp;
- // 状态队列是否存在变化
- m_pParent->getStateSpecAgentList(Type, Temp);
- if(Temp.CompareNoCase(m_CurrentList) == 0)
- return FALSE;
- // 队列已变化,可以通知观查者
- m_CurrentList = Temp; // 保存
- memset(pEvent, 0, sizeof(EventSubject));
- pEvent->nEventType = Type;
- strcpy_s(pEvent->szData, EVENT_SUBJECT_BUF_LEN, m_CurrentList);
- return TRUE;
- }
|