⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kalarmclientserver.cpp

📁 数据安全方面的程序 应用很广泛的 欢迎大家
💻 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 + -