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

📄 moniter.cpp

📁 基于dialogic语音卡的IVR系统源代码
💻 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 + -