亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sendsms.cpp

?? 一個在linux下連接Sybase數據庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "SendSms.hpp"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

unsigned long long StringTimeToInt(char *pDateTime)
{
	if(0==pDateTime||0==*pDateTime)
		return 0;
	unsigned long Time=time(0);
	tm *ptm=localtime((const long *)&Time);
	tm TM;
//	memset(&TM,0,sizeof(tm));
	memcpy(&TM,ptm,sizeof(TM));
	sscanf(pDateTime,"%d.%d.%d %d:%d:%d",&TM.tm_year,&TM.tm_mon,&TM.tm_mday,&TM.tm_hour,&TM.tm_min,&TM.tm_sec);
	TM.tm_year-=1900;
	--TM.tm_mon;
	return mktime(&TM);
}
unsigned long SendSms::GetTime()
{
	unsigned long Time=time(0);
	tm *ptm=localtime((const long *)&Time);
	return mktime(ptm);
}

SendSms::SendSms()
{
	memset(ret,0,sizeof(ret));

	memset(MaxStrategy,0,sizeof(MaxStrategy));
	memset(MaxSTable,0,sizeof(MaxSTable));
	memset(MaxSendRecord,0,sizeof(MaxSendRecord));

	memset(&SendRecord,0,sizeof(SendRecord));
	memset(&STable,0,sizeof(STable));
	memset(&Strategy,0,sizeof(Strategy));

	memset(StrategyState,0,sizeof(StrategyState));
	memset(STableState,0,sizeof(STableState));
	memset(SendRecordState,0,sizeof(SendRecordState));

	memset(SAlarmsTable,0,sizeof(SAlarmsTable));
	memset(TypeState,0,sizeof(TypeState));

	pEndSendRecord=MaxSendRecord;

	Cfg.SetFileName("./Config.ini");
	Cfg.ReadFileConfig();
	MaxTime=Cfg.MaxTime;
	pLogFile=fopen("SMLog.log","wr+");
	Init();
}
SendSms::~SendSms()
{
	if(pLogFile)fclose(pLogFile);
	disconnectDb(0);
}

unsigned long SendSms::OnTime(TimerEvent *Event)
{
	SendMessage((SMS*)Event->lpvoid);
	return 0;
}
int SendSms::SendMessage(SMS *pSMS)
{
	if(!pSMS)
		return -1;
	static unsigned long MaxSN=atoi(GsmRecv[0].ser)+1;
	GSMOntime Sms;
	memset(&Sms,0,sizeof(Sms));
	memcpy(Sms.ACCOUNT,"joyit//zyj",10);
	memcpy(Sms.CALLED,pSMS->Strategy.MSISDN_AlarmList,sizeof(pSMS->Strategy.MSISDN_AlarmList));
	memcpy(Sms.CONTENT,pSMS->STable.Info,sizeof(Sms.CONTENT));
	sprintf(Sms.SRVPARAM,"%04d",(int)MaxSN);
	sprintf(Sms.SENDTIME,"%d",(int)time(0));
	Sms.CALLEDTYPE=1;
	strcpy(Sms.CURSRVDT,"joyit");
	Sms.RESENDCOUNT=2;
	disconnectDb(0);
	connectDb("sa","","JoyitServer");
	int ret=::SendGSMOntime(&Sms,0);
	if(0==ret)
	{
		SMS *pMs=(SMS*)malloc(sizeof(SMS));
		if(pMs)
		{
			memcpy(pMs,pSMS,sizeof(SMS));
			AManage.Add(MaxSN++,pMs,Cfg.MaxTime);
		}
#if TEST
		printf("告警表處理成功 type=%d:%s\n",(int)pSMS->STable.AlarmCode.type,getLastError());
#endif
	}
	else
	{
		fprintf(pLogFile,"%s--SendGSMOntime function Error%s\n",GetCurrTime(),getLastError());
	}
	disconnectDb(0);
	return 0;
}
int SendSms::Init()
{	
	disconnectDb(0);
	connectDb("sa","","JoyitServer");
	GetRecord();
	InitStrategy();
	InitRecvTable();
	InitAlarmsTable();
	return 1;
}
int SendSms::GetRecord()
{
//	unsigned long long DateTime[2];
	while(ReadSMSendRecord()==1)
	{
		memcpy(&MaxSendRecord[SendRecord.InfoType&15],&SendRecord,sizeof(SendRecord));
/*		DateTime[0]=StringTimeToInt(MaxSendRecord[SendRecord.InfoType&15].SendTime);
		DateTime[1]=StringTimeToInt(SendRecord.SendTime);
		if(DateTime[0]<DateTime[1])
		{
			SendRecordState[SendRecord.InfoType&15]=1;
			memcpy(&MaxSendRecord[SendRecord.InfoType&15],&SendRecord,sizeof(SendRecord));
		}
*/
	}
	return 0;
}
char * SendSms::GetCurrTime()
{
	static char Time[30];
	long tm=time(0);
	struct tm *p=localtime(&tm);
	sprintf(Time,"%04d-%02d-%02d %02d:%02d:%02d\0",p->tm_year+1900,p->tm_mon+1,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
	return Time;
}
int SendSms::Run()
{
	do
	{
		Explore();
		sleep(Cfg.MainTime);
		CarryOut();
	}while(GetExit());
	return 0;
}
int SendSms::WriteRealtimeStatus()
{
	RealTimeStatus TimeStatus;
	memset(&TimeStatus,0,sizeof(RealTimeStatus));
	TimeStatus.NEavailability=1;
	memcpy(TimeStatus.UpdateTime,GetCurrTime(),sizeof(TimeStatus.UpdateTime));
	memcpy(TimeStatus.NEname,Cfg.NEname,sizeof(Cfg.NEname));//strlen(Cfg.NeName)+1);
	TimeStatus.NEid=Cfg.NEid;
	memcpy(TimeStatus.NEname,Cfg.NEname,sizeof(TimeStatus.NEname));
	::WriteRealtimeStatus(&TimeStatus);
	CommitWork();
	return 0;
}

int SendSms::DisposeAlarmsTable()
{
	return 0;
}

int SendSms::DisposeRecordTable()
{
	return 0;
}

int SendSms::DisposeStrategyTable()
{
	return 0;
}
int SendSms::DistributeStrategy(SMS *pSMS)
{
	switch(pSMS->Strategy.AlarmMode)
	{
	case 0:
		{
			if(TypeState[pSMS->STable.AlarmCode.type])
			{
#if TEST
								printf("上一封短信還沒發送完,丟棄!!TYPE=%d\n",(int)pSMS->STable.AlarmCode.type);
#endif
				return 0;
			}
			memcpy(&SAlarmsTable[pSMS->STable.AlarmCode.type],pSMS,sizeof(SMS));
			SAlarmsTable[pSMS->STable.AlarmCode.type].Count=time(0)+Strategy.DelayTime*60;
			TypeState[pSMS->STable.AlarmCode.type]=1;
#if TEST
				printf("告警表已提交,將會根據策略表表決:type=%d\n",(int)pSMS->STable.AlarmCode.type);
#endif
		}
		break;
	case 1:
		if(!CountDispose(pSMS))
			return 0;
		break;
	default:
		return -2;
	}
	return -1;
}

int SendSms::Construe()
{
	for(int i=0;i<16;i++)
	{
		if(1==STableState[i])
		{
			STableState[i]=0;
			unsigned long long DateTime[2];
			DateTime[0]=StringTimeToInt(MaxSTable[i].DateTime);
			DateTime[1]=StringTimeToInt(MaxSendRecord[i].SendTime);
			if(DateTime[1]<DateTime[0])
			{
				SMS Sms;
				memcpy(&Sms.STable,&MaxSTable[i],sizeof(AlarmsTable));
				memcpy(&Sms.Strategy,&MaxStrategy[i],sizeof(SendStrategy));
				if(GetTime()-StringTimeToInt(Sms.STable.DateTime)<MaxTime||GetTime()<StringTimeToInt(Sms.STable.DateTime))
				{
					DistributeStrategy(&Sms);
				}
			}
		}
	}
	return DisposeAlarmsTable();
}
int SendSms::ReadAlarmsTable()
{
	if(1==ret[0])
		ret[0]=readAlarmsTable(&STable,0,0);
	else
		ret[0]=readAlarmsTable(&STable,1,0);
	if(ret[0]==Cfg.ErrConnect)
	{
		Init();
	}
	return ret[0];
}
int SendSms::ReadSMSendStrategy()
{	
	if(1==ret[1])
		ret[1]=::ReadSMSendStrategy(&Strategy,0,0);
	else
		ret[1]=::ReadSMSendStrategy(&Strategy,1,0);
	return ret[1];
}
int SendSms::ReadSMSendRecord()
{
	if(1==ret[2])
		ret[2]=::ReadSMSendRecord(&SendRecord,0,0);
	else
		ret[2]=::ReadSMSendRecord(&SendRecord,1,0);
	return ret[2];
}
int SendSms::ReadGSMRecvTable()
{
	if(1==ret[3])
		ret[3]=::ReadGSMRecvTable(GsmRecv,0,0);
	else
		ret[3]=::ReadGSMRecvTable(GsmRecv,1,0);
	return ret[3];

}

GSMOntime* SendSms::ReadGSMOntime()
{
	static GSMOntime pOntime;
	if(1==ret[4])
		ret[4]=::ReadGSMOntime(&pOntime, 0,0);
	else
		ret[4]=::ReadGSMOntime(&pOntime,1,0);
	return ret[4]==1?&pOntime:0;
}
void SendSms::Explore()
{
	unsigned long long DateTime[2];
	while(ReadAlarmsTable()==1)
	{
		DateTime[0]=StringTimeToInt(MaxSTable[STable.AlarmCode.type].DateTime);
		DateTime[1]=StringTimeToInt(STable.DateTime);
		if(DateTime[0]<DateTime[1])
		{
			memcpy(&MaxSTable[STable.AlarmCode.type],&STable,sizeof(MaxSTable[STable.AlarmCode.type]));
			Dispatch(&STable);
		}
	}
	vector<GSMRECV> GSMRecv;
	while(ReadGSMRecvTable()==1)
	{
		int SN[2];
		SN[0]=atoi(GsmRecv[0].ser);
		SN[1]=atoi(GsmRecv[1].ser);
		if(SN[0]>SN[1])
		{
			memcpy(&GsmRecv[1],GsmRecv,sizeof(GsmRecv[0]));
			GSMRecv.push_back(GsmRecv[0]);
		}
	}
	CommitWork();
	vector<GSMRECV>::iterator lp;
    for(lp = GSMRecv.begin(); lp != GSMRecv.end();lp++)
    {
    	if(1==lp->mtype)
    	{
    		WriteSendRecord(atoi(lp->ser));
    	}
		else
		{
			fprintf(pLogFile,"%s --SMS Send error",GetCurrTime());
#if TEST
			printf("短信發送失敗,并不寫入結果表\n");
#endif
			void *lpTemp=(AManage-atoi(lp->ser));
			if(lpTemp)free(lpTemp);
		}
    }
}
int SendSms::Dispatch(AlarmsTable *pTable)
{
	unsigned long DateTime[2];
	DateTime[0]=StringTimeToInt(pTable->DateTime);
	DateTime[1]=StringTimeToInt(MaxSendRecord[pTable->AlarmCode.type].SendTime);
	if(DateTime[0]>DateTime[1])
	{
		memcpy(&SAlarmsTable[pTable->AlarmCode.type].ATable,pTable,sizeof(*pTable));
		Apportion(&SAlarmsTable[pTable->AlarmCode.type]);
	}
	return 0;
}
int SendSms::Apportion(_SAlarmsTable *pSAlarmsTable)
{
	switch(MaxStrategy[pSAlarmsTable->ATable.AlarmCode.type].AlarmMode)
	{
	case 0:
		{
			if(pSAlarmsTable->Count)
			{
#if TEST
				printf("丟失:一個沒完成的操作TYPE=%d\n",(int)pSAlarmsTable->ATable.AlarmCode.type);
#endif
				return -1;
			}
			
			if(MaxStrategy[pSAlarmsTable->ATable.AlarmCode.type].MSISDN_AlarmList[0]==0)
				return -2;
			pSAlarmsTable->Count=time(0)+MaxStrategy[pSAlarmsTable->ATable.AlarmCode.type].DelayTime*60;
		}
		break; 
	case 1:
		{
			pSAlarmsTable->Count++;
		}
	}
	return 0;
}
void SendSms::CarryOut()
{
	for(int i=0;i<16;i++)
	{
		if(SAlarmsTable[i].Count)
		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清在线观看| 不卡的av网站| 91亚洲精品久久久蜜桃网站 | 欧美96一区二区免费视频| 国产高清在线观看免费不卡| 欧美午夜影院一区| 国产精品欧美经典| 久久精品国产亚洲一区二区三区| 93久久精品日日躁夜夜躁欧美| 欧美二区乱c少妇| 亚洲人精品午夜| 国产精品一区二区久激情瑜伽| 制服丝袜国产精品| 亚洲精品免费一二三区| 成人动漫一区二区| 国产日产亚洲精品系列| 九九热在线视频观看这里只有精品| 欧美在线免费观看视频| 国产精品国产三级国产| 国产精品一区二区果冻传媒| 日韩一区二区中文字幕| 日韩成人一区二区| 欧美日韩国产高清一区二区三区| 亚洲欧美国产毛片在线| 成人精品视频一区二区三区| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲一区二区三区精品在线| www.欧美色图| 自拍偷拍国产亚洲| 91视频免费看| 亚洲欧美电影一区二区| 一本大道av一区二区在线播放 | 日韩精品专区在线影院重磅| 天天综合天天做天天综合| 欧美揉bbbbb揉bbbbb| 一区二区三区国产| 欧美三级在线看| 三级成人在线视频| 日韩你懂的电影在线观看| 久久99这里只有精品| 久久一二三国产| 国产成人亚洲综合色影视| 国产精品午夜春色av| k8久久久一区二区三区| 亚洲精品欧美专区| 欧美日韩一区二区在线观看视频| 精品制服美女久久| 国产午夜三级一区二区三| eeuss鲁一区二区三区| 最新高清无码专区| 欧美午夜在线观看| 精品亚洲免费视频| 亚洲国产精品精华液ab| 91免费版pro下载短视频| 亚洲精品v日韩精品| 9191精品国产综合久久久久久| 免费成人在线影院| 欧美国产禁国产网站cc| 91福利小视频| 免费高清不卡av| 中文天堂在线一区| 7777精品伊人久久久大香线蕉超级流畅| 日本成人中文字幕在线视频| 久久天天做天天爱综合色| 成人一区二区三区在线观看| 一区二区三区国产| 精品国产乱码久久久久久夜甘婷婷 | 欧洲亚洲精品在线| 蜜桃免费网站一区二区三区| 中文成人综合网| 欧美精品日韩精品| 99久久精品国产观看| 天天综合日日夜夜精品| 久久这里都是精品| 欧美性受极品xxxx喷水| 另类欧美日韩国产在线| 日韩理论电影院| 精品成人一区二区三区四区| 91香蕉视频黄| 国产成人av电影在线播放| 亚洲午夜影视影院在线观看| 久久久久久久久蜜桃| 欧美在线色视频| 成人美女视频在线观看| 奇米精品一区二区三区在线观看| 国产精品成人免费| 欧美白人最猛性xxxxx69交| 欧亚洲嫩模精品一区三区| 国产高清在线精品| 久久精品国产成人一区二区三区| 日韩毛片视频在线看| 国产视频一区二区在线| 日韩免费视频一区| 欧美美女黄视频| 91免费观看在线| 成人免费黄色大片| 国产一区二区伦理| 精品一区二区三区久久| 日韩电影在线观看网站| 亚洲精品国产一区二区精华液| 国产拍揄自揄精品视频麻豆| 日韩丝袜情趣美女图片| 欧美精品99久久久**| 欧美亚洲国产bt| 91女厕偷拍女厕偷拍高清| 高清成人免费视频| 成人一级片网址| 丁香啪啪综合成人亚洲小说| 国产麻豆精品久久一二三| 免费观看成人av| 美国十次了思思久久精品导航| 亚洲成av人片| 日韩和欧美一区二区| 午夜欧美一区二区三区在线播放| 亚洲一区二区三区国产| 亚洲精品亚洲人成人网| 一区二区三区不卡视频在线观看| 亚洲欧美日韩一区二区三区在线观看 | 亚洲免费色视频| 亚洲精品菠萝久久久久久久| 亚洲美女少妇撒尿| 一区二区三区在线视频观看| 亚洲乱码精品一二三四区日韩在线| 最新国产の精品合集bt伙计| 亚洲男同性视频| 香蕉影视欧美成人| 日韩电影在线一区| 国产在线播精品第三| 国产成人精品一区二| jlzzjlzz国产精品久久| 欧洲亚洲国产日韩| 欧美一三区三区四区免费在线看 | 午夜av区久久| 麻豆成人91精品二区三区| 久久国产精品免费| 国产成都精品91一区二区三| 成人av手机在线观看| 欧美三级日韩在线| 精品少妇一区二区三区在线视频| 久久毛片高清国产| 亚洲美女精品一区| 免费人成黄页网站在线一区二区| 国产呦萝稀缺另类资源| 成人a区在线观看| 欧美日韩国产美| 国产女同互慰高潮91漫画| 亚洲最大色网站| 国产在线一区观看| 91免费观看在线| 26uuu久久综合| 一区二区三区中文字幕在线观看| 蜜臀久久99精品久久久久久9| 国产精品一区免费视频| 在线观看视频一区二区| 26uuu精品一区二区在线观看| 亚洲四区在线观看| 免费成人深夜小野草| 91网站最新网址| 久久综合九色综合欧美98| 亚洲欧洲av色图| 日韩成人一级片| 97精品久久久久中文字幕| 精品免费国产二区三区| 亚洲最新在线观看| www.在线成人| 精品日韩成人av| 亚洲高清不卡在线观看| 高清不卡在线观看| 日韩欧美成人激情| 亚洲一区二区三区四区不卡| 粉嫩绯色av一区二区在线观看 | 99久久国产综合精品色伊| 欧美成人video| 日韩精品色哟哟| 色成年激情久久综合| 欧美激情一区二区三区全黄| 亚洲成人三级小说| 91麻豆国产在线观看| 欧美国产国产综合| 国产一区二区三区高清播放| 欧美精品日韩精品| 一区二区成人在线视频| 懂色一区二区三区免费观看| 日韩精品一区二区三区四区视频| 亚洲国产另类精品专区| 一本色道久久综合亚洲aⅴ蜜桃| 国产无一区二区| 国产精品一区专区| 久久这里只精品最新地址| 日本特黄久久久高潮| 欧美撒尿777hd撒尿| 一区二区三区欧美日| 成人av网站在线观看| 亚洲国产精品av| 成人综合婷婷国产精品久久蜜臀| 精品少妇一区二区三区在线视频| 免费一级片91| 日韩一区二区视频| 精品一区二区三区在线观看国产| 制服丝袜在线91|