📄 kalarmclientserver.cpp
字号:
// KAlarmClientServer.cpp: implementation of the KAlarmClientServer class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "KAlarmClientServer.h"
#include "KAlarmLoginDlg.h"
#include "../KylinSystem/KMessageBinder.h"
#include "../KylinSystem/KProcessorManager.h"
#include "../KylinSystem/KNotifyIcon.h"
#include "../KylinSystem/KThreadPool.h"
#include "../KylinSystem/KNodeConnMessage.h"
#include "../KylinSystem/KNodeConnFailMsg.h"
#include "../KylinSystem/KNodeDownMessage.h"
#include "KMAIDisplayAlarmDlg.h"
#include "KXMLManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const CString KAlarmClientServer::_TypeName=_T("Alarm.ClientService");
const KGuid KAlarmClientServer::_TypeID(_T("{9B0CD518-AF49-4196-BE9D-9E83EBC35C4E}"));
KAlarmClientServer* KAlarmClientServer::Instance = NULL;
KAlarmClientServer::KAlarmClientServer()
{
UserManage = NULL;
ReceiveAlarmManage = NULL;
AnswerAlarmManage = NULL;
AlarmOnNodeConn = NULL;
AlarmOnNodeDown = NULL;
Instance = this;
}
KAlarmClientServer::~KAlarmClientServer()
{
}
const KGuid KAlarmClientServer::TypeID()
{
return _TypeID;
}
const CString KAlarmClientServer::TypeName()
{
return _TypeName;
}
const KGuid KAlarmClientServer::GetTypeID() //获取服务ID
{
return _TypeID;
}
const CString KAlarmClientServer::GetTypeName() //获取服务名称
{
return _TypeName;
}
bool KAlarmClientServer::Initialize(KXMLNode& node) //读取配置文件并保存,配置内容包括读取数据库的间隔
{
// __asm int 3
KNotifyIcon::Instance()->InsertMenuItem(this,"查看处理中报警",1);
KNotifyIcon::Instance()->InsertMenuItem(this,"查看已处理报警",2);
//KNotifyIcon::Instance()->InsertMenuItem(this,"查看未处理报警",3);
KNotifyIcon::Instance()->InsertMenuItem(this,"客户端报警设置",4);
mPopupEvent = node.GetAttribBool(_T("popup"), true);
mPlaySound = node.GetAttribBool(_T("playsound"), true);
return true;
}
bool KAlarmClientServer::Start() //设置定时器,并指定自己为定时器处理器
{
//绑定处理类
UserManage = (KUserLoginManage*)KProcessorManager::Instance()->CreateProcessor(KUserLoginManage::TypeID());
UserManage->SetHostService(this);
KMessageBinder::Instance()->Bind(UserProtocol::TypeID(),UserManage); //绑定登录处理类
ReceiveAlarmManage = (KReceiveAlarmManage*)KProcessorManager::Instance()->CreateProcessor(KReceiveAlarmManage::TypeID());
ReceiveAlarmManage->SetHostService(this);
KMessageBinder::Instance()->Bind(KAlarmProtocol::TypeID(),ReceiveAlarmManage);
AnswerAlarmManage = (KAnswerAlarmManage*)KProcessorManager::Instance()->CreateProcessor(KAnswerAlarmManage::TypeID());
AnswerAlarmManage->SetHostService(this);
KMessageBinder::Instance()->Bind(KAnswerAlarmProtcol::TypeID(),AnswerAlarmManage);
AlarmOnNodeConn = (KAlarmOnNodeConn*)KProcessorManager::Instance()->CreateProcessor(KAlarmOnNodeConn::TypeID());
AlarmOnNodeConn->SetHostService(this);
KMessageBinder::Instance()->Bind(KNodeConnMessage::TypeID(),AlarmOnNodeConn);
AlarmOnNodeDown = (KAlarmOnNodeDown*)KProcessorManager::Instance()->CreateProcessor(KAlarmOnNodeDown::TypeID());
AlarmOnNodeDown->SetHostService(this);
KMessageBinder::Instance()->Bind(KNodeDownMessage::TypeID(),AlarmOnNodeDown);
KMessageBinder::Instance()->Bind(KNodeConnFailMsg::TypeID(),AlarmOnNodeDown);
KThreadPool::Instance()->QueueWorkItem(&mLoadEventJob);
//弹出登录窗体
//KAlarmLoginDlg LoginDlg;
//LoginDlg.DoModal();
return true;
}
bool KAlarmClientServer::Stop() //停止定时器
{
//关闭窗体
KMessageBinder::Instance()->UnBind(UserProtocol::TypeID(),UserManage);
KMessageBinder::Instance()->UnBind(KAlarmProtocol::TypeID(),ReceiveAlarmManage);
KMessageBinder::Instance()->UnBind(KAnswerAlarmProtcol::TypeID(),AnswerAlarmManage);
KMessageBinder::Instance()->UnBind(KNodeConnMessage::TypeID(),AlarmOnNodeConn);
KMessageBinder::Instance()->UnBind(KNodeDownMessage::TypeID(), AlarmOnNodeDown);
KMessageBinder::Instance()->UnBind(KNodeConnFailMsg::TypeID(),AlarmOnNodeDown);
KProcessorManager::Instance()->DestroyProcessor(UserManage);
KProcessorManager::Instance()->DestroyProcessor(ReceiveAlarmManage);
KProcessorManager::Instance()->DestroyProcessor(AnswerAlarmManage);
KProcessorManager::Instance()->DestroyProcessor(AlarmOnNodeConn);
KProcessorManager::Instance()->DestroyProcessor(AlarmOnNodeDown);
UserManage = NULL;
ReceiveAlarmManage = NULL;
AnswerAlarmManage = NULL;
AlarmOnNodeConn = NULL;
AlarmOnNodeDown = NULL;
KXMLManager::Destroy();
return true;
}
void KAlarmClientServer::OnTimer(UINT timer, LPVOID param) //以下是ITimerHandler的成员,在此处创建KAlarmFetcher类,对其进行必要的设置后添加到线程池
{
}
void KAlarmClientServer::OnNotify(UINT uEventId)
{
if(uEventId == 4)
{
KAlamUserSet UserSet;
UserSet.mCkPopup = mPopupEvent;
UserSet.mCkPlaySound = mPlaySound;
if(UserSet.DoModal() == IDOK)
{
mPopupEvent = UserSet.mCkPopup == TRUE;
mPlaySound = UserSet.mCkPlaySound == TRUE;
}
return;
}
CString strDlgType;
switch(uEventId)
{
case 1:
strDlgType = _T("NEWALARM");
break;
case 2:
strDlgType = _T("OLDALARM");
break;
case 3:
strDlgType = _T("NOCEIVEALAM");
break;
}
KMAIDisplayAlarmDlg* ManagingAlarm;
if(uEventId == 1 || uEventId == 2 || uEventId == 3)
{
if((ManagingAlarm = KMAIDisplayAlarmDlg::ActiveWindow) != NULL)
{
if(ManagingAlarm->DlgType != strDlgType)
{
ManagingAlarm->DlgType = strDlgType;
ManagingAlarm->SetDlgInfo();
ManagingAlarm->InitGrid();
}
ManagingAlarm->SetFocus();
}
else
{
ManagingAlarm= new KMAIDisplayAlarmDlg();
ManagingAlarm->DlgType = strDlgType;
ManagingAlarm->Create(IDD_DIALOGMAIDISPLAYALARM,NULL);
ManagingAlarm->ShowWindow(SW_SHOW);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -