📄 moniter.cpp
字号:
// Moniter.cpp: implementation of the Moniter class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Moniter.h"
#include "smmapp.h"
#include "snmp.h"
#include "Afxmt.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
CEvent Quit_Moniter;
unsigned int n=0;
extern int g_phoneMaxChannel,g_conUserNumber,g_ivrStatus,g_chanStatus;
int g_chanNum,g_faxBDNumber,g_faxMaxChannel,g_misBDNumber,g_misMaxChannel;
char g_vrdServerIP[256],g_ivrUpTime[256],FaxBand[20];
MoniterInfo MonInfo[240];
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Moniter::Moniter()
{
}
Moniter::~Moniter()
{
}
//读监控参数回调函数
unsigned short ReadParam(char* pParamName/*监控参数名*/, unsigned short nInstance/*监控参数的事例号*/,unsigned char bType/*数据类型*/,unsigned char* szValue/*值*/,unsigned short* pLen/*值长度*/)
{
int nLen;
//处理输入的监控参数
if(0== strcmp(pParamName,"phoneBDNumber"))
{//暂时不能取得语音卡的数目
*pLen=UInt32ToStr(szValue,1);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"phoneMaxChannel"))
{
*pLen=UInt32ToStr(szValue,g_phoneMaxChannel);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"faxBDNumber"))
{
*pLen=UInt32ToStr(szValue,g_faxBDNumber);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"faxMaxChannel"))
{
*pLen=UInt32ToStr(szValue,g_faxMaxChannel);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"misBDNumber"))
{
*pLen=UInt32ToStr(szValue,g_misBDNumber);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"misMaxChannel"))
{
*pLen=UInt32ToStr(szValue,g_misMaxChannel);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"vrdConnectedStatus"))
{
*pLen=UInt32ToStr(szValue,3);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"vrdServerIP"))
{
nLen= strlen(g_vrdServerIP);
memcpy(szValue,g_vrdServerIP,nLen);
*pLen= nLen;
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"ivrStatus"))
{
*pLen=UInt32ToStr(szValue,g_ivrStatus);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"ivrUpTime"))
{
nLen= strlen(g_ivrUpTime);
memcpy(szValue,g_ivrUpTime,nLen);
*pLen= nLen;
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"chanNum"))
{
if(strcmp(FaxBand,"VFAX")==0)
{
g_chanNum=g_phoneMaxChannel+g_misMaxChannel;
}
else
{
g_chanNum=g_phoneMaxChannel+g_faxMaxChannel+g_misMaxChannel;
}
*pLen=UInt32ToStr(szValue,g_chanNum);
return SNMP_NOERROR;
}
else if(0== strcmp(pParamName,"chanIndex"))
{
if(MonInfo[nInstance-1].m_chanFlag==0)
{
*pLen=0;
return SNMP_NOSUCHNAME;
}
else
{
*pLen=UInt32ToStr(szValue,nInstance);
return SNMP_NOERROR;
}
}
else if(0== strcmp(pParamName,"chanStatus"))
{
if(MonInfo[nInstance-1].m_chanFlag==0)
{
*pLen=0;
return SNMP_NOSUCHNAME;
}
else
{
*pLen=UInt32ToStr(szValue,MonInfo[nInstance-1].m_chanFlag);
return SNMP_NOERROR;
}
}
else if(0== strcmp(pParamName,"conUserNumber"))
{
*pLen=UInt32ToStr(szValue,g_conUserNumber);
return SNMP_NOERROR;
}
else
{
*pLen=0;
return SNMP_NOSUCHNAME;
}
}
//写监控参数回调函数
unsigned short WriteParam(char* pParamName/*监控参数名*/, unsigned short nInstance/*监控参数的事例号*/,unsigned char bType/*数据类型*/,unsigned char* szValue/*值*/,unsigned short nLen/*值长度*/)
{
return SNMP_NOERROR;
}
void abc()
{
unsigned char szValue[20];
unsigned short nLen;
void* pTrapHandle=NULL;
HANDLE hEvent= CreateEvent(NULL,TRUE,FALSE,NULL);
ResetEvent(hEvent);
while(1)
{
FreeTrapHandle(pTrapHandle);
nLen= UInt32ToStr(szValue,10);
//初始化Trap句柄
pTrapHandle= InitTrapHandle(".1.3.6.1.4.1.1000",SNMP_GENERICTRAP_ENTERSPECIFIC,100);
//向Trap句柄写入一个监控参数值
WriteTrap(pTrapHandle,"errorCode",0,SNMP_TYPE_INTEGER32,szValue,nLen);
nLen = sprintf((char *)&szValue[0],"fyw");
//向Trap句柄写入一个监控参数值
WriteTrap(pTrapHandle,"errorSource",0,SNMP_TYPE_STRING,szValue,nLen);
nLen=sprintf((char *)&szValue[0],"Error Description:");
//向Trap句柄写入一个监控参数值
WriteTrap(pTrapHandle,"errorDesc",0,SNMP_TYPE_STRING,szValue,nLen);
//发送Trap消息
SendTrap(pTrapHandle);
//释放trap句柄
WaitForSingleObject(hEvent,5000);
}
}
UINT SendInfo()
{
char szSection[]="IVR";
CTime IvrUpTime;
memset(g_vrdServerIP,0,256);
memset(g_ivrUpTime,0,256);
memset(FaxBand,0,20);
memset(MonInfo,0,240*sizeof(MoniterInfo));
IvrUpTime = CTime::GetCurrentTime();
sprintf(g_ivrUpTime,"%s",IvrUpTime.Format( "%Y-%m-%d %X" ));
g_faxBDNumber=GetPrivateProfileInt("VFAX","FAXCHANS",0,".\\Setup.ini");
g_faxMaxChannel=GetPrivateProfileInt("VFAX","FAXBDNUM",0,".\\Setup.ini");
g_misBDNumber=GetPrivateProfileInt("MSI","MSICHANS",0,".\\Setup.ini");
g_misMaxChannel=GetPrivateProfileInt("MSI","MSIBDNUM",0,".\\Setup.ini");
GetPrivateProfileString("ServiceProxy","Address","尚未没设置服务器",g_vrdServerIP,256,".\\Setup.ini");
GetPrivateProfileString("CHANNEL","FAXRES","",FaxBand,20,".\\Setup.ini");
Init(ReadParam,WriteParam,szSection);
while(1)
{
if (WaitForSingleObject( Quit_Moniter, INFINITE ) == WAIT_OBJECT_0 ) break;
// 初始化监控接口
//每隔5s,发送一个trap消息
}
//关闭监控接口
Close();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -