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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cngp.c

?? 增值業(yè)務(wù)的sngp協(xié)議。
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*$Header: /home/cvsadmin/cvsroot/wam/sms/platform/src/cngp/cngp.c,v 1.17 2007/08/29 09:34:17 haowen Exp $*/
/*
 * cngp.c
 * CNGP protocol Daemon
 */

//cc cngp.c ncngp.c  common/errm.c common/mylog.c common/utils.c  common/md5.c  common/getopt.c  common/cfg.c common/smgw.c  common/gb2uni.c   common/UNICODE_2_GBK.c -lc_r -lpthread -I./common/ -I/usr/local/include/mysql -lmysqlclient -L/usr/local/lib/mysql -g -dDEBUG -o cngp
  
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <errmsg.h>
#include <my_config.h>
#include <mysql.h>
#include <mysqld_error.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/errno.h>
#include <unistd.h>
#include <time.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>

#include <smgw.h>
#include <cfg.h>
#include <mylog.h>
#include <utils.h>
#include <errm.h>
#include "ncngp.h"

#define MAXCNN 10
extern int errno;

typedef struct {
	int SubType;		//短消息子類型
	char FeeType[8];	//資費(fèi)類型
	int FeeUserType;	//計(jì)費(fèi)用戶類型
}STYPE;

static STYPE S_MFXX;	//免費(fèi)信息
static STYPE S_DBXF;	//點(diǎn)播下發(fā)
static STYPE S_DYJG;	//訂閱結(jié)果
static STYPE S_QXDY;	//取消訂閱
static STYPE S_BYHD;	//包月扣款請(qǐng)求
static STYPE S_BYXX;	//訂閱下發(fā)(包月)
static STYPE S_ATXF;	//訂閱下發(fā)(按條)
static STYPE S_ZXDX;	//自寫(xiě)短信
static STYPE S_QBTD;	//全部退定
static STYPE S_ECQR;	//二次確認(rèn)

//const static int allconn = 10;

char inifile[256] = "";
/**********************需配置的變量************************/
/*日志配置*/
char logfile[256] = "";

 /*網(wǎng)關(guān)帳號(hào)配置*/
static char CNGP_IP[32] = "";
unsigned int CNGP_PORT = 0;
static char LOGIN_NAME[32] = "";
static char LOGIN_PASSWORD[32] = "";
static char ISMP_SERVICE_CODE[32] = ""; //ISMP 特服號(hào)
static char SSMP_SERVICE_CODE[32] = ""; // ssmp 特服號(hào)碼
unsigned int CNGP_FLAG = 0;
unsigned int RECV_DEL106_FLAG = 1;

static unsigned int timeoutu = 0;
int Priority = 0;
char province[5]="";
//從db獲取
static char corpid[32] = "";
static char spid[32] = "";

static int connecttype = 0; // 鏈接類型
// connecttype == 0 時(shí)用到
static int port = 0;
static int send_version = 0;
static int login_mode = 0;
static int connnum = 0;

// connecttype ==1 時(shí)用到
static int mtnum = 1;
static int mtport = 7890;
static int mtmode = 0;
static int mtversion = 0;

static int monum = 1;
static int moport = 7890;
static int momode = 0;
static int moversion = 0;

static int  feecode_flag = 0;
static int  report_flag = 0;
static char send_q_db[32] = "";
static char send_q_host[32] = "";
static char send_q_user[32] = "";
static char send_q_pass[32] = "";
static int send_q_port = 3306;

//David for 2SP
static char media_db[32] = "";
static char media_host[32] = "";
static char media_user[32] = "";
static char media_pass[32] = "";
static int  media_port = 3306;

static char gateway_name[32] = "";

//SERVICEMEDIA
static char servicemedia_db[32] = "";
static char servicemedia_host[32] = "";
static char servicemedia_user[32] = "";
static char servicemedia_pass[32] = "";
static int  servicemedia_port = 3306;

static int  timeout_no_submit_resp = 180;

static int retry_num = 3;
static int retry_max = -3;
static int MAX_MSG_LEN = 0;
static int altq_num = 10;
static int resnum = 50;
static int connected =1;// 已連接數(shù)
static int memsend = 500;
static int reportnum = 500;
static int reporttime =5;
static int socketbuffersize = 1024*1024;
static int active_time = 5;
static int connections =0;
// For main()
MYSQL fsql_mainmedia;
MYSQL fsql_main;
MYSQL fsql_servicemedia;

pthread_t pThread ,pThreadR, pThreadS;

extern int disable_errm;

struct timeval tSecond1, tSecond2 ;

pthread_mutex_t sendq_lock[MAXCNN]={PTHREAD_MUTEX_INITIALIZER}; //發(fā)送隊(duì)列
pthread_mutex_t resq_lock[MAXCNN]={PTHREAD_MUTEX_INITIALIZER}; // 接收隊(duì)列
pthread_mutex_t cnum_lock[MAXCNN]={PTHREAD_MUTEX_INITIALIZER}; // 鏈接狀態(tài),submitresp

SEND_Q *SENDQ[MAXCNN]; // send buffer 
RES_Q *RESQ[MAXCNN]; // recv response buffer
SEND_Q sendtemp; // send buffer temp
SEND_Q *reportlog=NULL;
static int  threads[MAXCNN][4] = {{0}}; //socket(鏈接狀態(tài)), 鏈接狀態(tài), needsubmitresp


/*查找BUFFER 中空位置,返回-1表示MAP滿*/
int FindPlace(SEND_Q *map, int size )
{
	int i;

	for(i=0; i<size; i++)
	{
		if(map[i].sq_id <= 0)
		{
			return i;
		}
	}
	
	if(i == size)
	{
		return -1;
	}
	
}


// 匹配發(fā)送隊(duì)列和接收隊(duì)列中數(shù)據(jù)
int CheckRes(SEND_Q *sendq, RES_Q  *resq, SEND_Q *sendreport)
{
	int sendn=0, resn =0;
	int flaginsert =0,k=0;
	char tempquery[1024];
	
	for ( resn =0 ; resn <memsend; resn++)
	{
		if(strlen(resq[resn].rq_submit_id) >0)
		{
			for(sendn =0 ; sendn <memsend ; sendn++)
			{
				if(strcmp(resq[resn].rq_submit_id, sendq[sendn].sq_submit_id) == 0 ) 
				{
				//	if( resq[resn].rq_response_status !=0 )
				//	{
						//錯(cuò)誤,重發(fā)
				//		strcpy(sendq[sendn].sq_submit_id , "");
				//		strcpy(sendq[sendn].sq_submit_stat, "");
				//		INFO("[INFO-MAIN] resend  sq_id[%d]\n", sendq[sendn].sq_id );
				//		break;
				//	}
				//	else
					{
						k= FindPlace(sendreport,  memsend);
						if(k == -1)
						{
							INFO("[INFO-MAIN] reportlog full\n");
							return -1; // 緩存滿
						}
						else
						{
							strcpy(sendq[sendn].sq_sms_scheduletime, resq[resn].rq_response_time);
							strcpy(sendq[sendn].sq_submit_id , resq[resn].rq_response_id);
							if(resq[resn].rq_response_status ==0) // response received 
								strcpy(sendq[sendn].sq_submit_stat, "SMC");
							else if(resq[resn].rq_response_status == -1) // simulate response 
								strcpy(sendq[sendn].sq_submit_stat, "SMC");
							else if(resq[resn].rq_response_status == -3) // unsend
								strcpy(sendq[sendn].sq_submit_stat ,"unsend");
							else
							{
							//	strcpy(sendq[sendn].sq_submit_stat,"fail");
								sprintf(sendq[sendn].sq_submit_stat, "fail_%d",resq[resn].rq_response_status);
							}
							memset(tempquery, 0 , 1024);
							// insert sp 2
						     	if (strcmp(sendq[sendn].sq_from, "16") == 0)
						     	{
								sprintf(tempquery,"insert into %s.lowerSP (AutoId, ServiceCode, Mobile, MobileType, Spnumber, Msg, MsgType, LinkID, WAMID, Status, ArrivedTime, MsgFrom, MediaName, Reserved) 	values(null, \'%s\', \'%s\', \'0\', \'%s\', \'%d\', \'%s\', \'%s\', \'%s\', \'0\', now(), \'0\', \'%s\', \'\')", media_db, sendq[sendn].sq_service_code, sendq[sendn].sq_mobile, sendq[sendn].sq_send, resq[resn].rq_response_status, "1", sendq[sendn].sq_linkid, sendq[sendn].sq_wamid, gateway_name);
								INFO("[INFO-MAIN]: Insert l2sp:[%s]\n",  tempquery);
				 		     		flaginsert= mysql_real_query(&fsql_mainmedia, tempquery, strlen(tempquery));
				 				if (flaginsert != 0)
								{
									INFO("[-ERR-MAIN]: insert l2sp failed .\n");
								}
						     	}
							INFO("[INFO-MAIN] resn[%d] Response ID[%s] status[%d] status found in sendbuffer\n", resn, resq[resn].rq_submit_id, resq[resn].rq_response_status);
							memcpy(&sendreport[k], &sendq[sendn] ,sizeof(SEND_Q));
			//				INFO("[DEBUG] sendreport[%d].sq_id = %d \n", k, sendreport[k].sq_id);
							memset(&resq[resn], 0, sizeof(RES_Q) );
							memset(&sendq[sendn],0, sizeof(SEND_Q));
			//				INFO("[INFO-MAIN] check res :resq[%d] sendq[%d] \n",resn, sendn);
							break;
						}
					}
				}
			}
			memset(&resq[resn], 0, sizeof(RES_Q)); // Not found , clear 
		}
	}
	return 0;
}


int Dumptosendreport(SEND_Q *send, char *deletestring)
{
	int i =0,n=0;
    	char tempquery[1024];
    	char content[256];

	for (i=0; i< memsend; i++)
		if(send[i].sq_id >0)
		{
			    send[i].sq_desc_pi[0] = '\0';
			    send[i].sq_desc_mi[0] = '\0';

			    mysql_escape_string(content, send[i].sq_sms_content, strlen(send[i].sq_sms_content)) ;
			    sprintf(tempquery, " (NULL,'%s',%d,'%s','%s','%s',%d,'%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
			            //send->sq_id,
			            send[i].sq_service_code,
			            send[i].sq_pri,               // %d
			            send[i].sq_message_format,
			            send[i].sq_fee_type,
			            send[i].sq_fee_code,
			            send[i].sq_sms_length,        // %d
			            content,
			            send[i].sq_content_type,
			            send[i].sq_desc_pi,
			            send[i].sq_desc_mi,
			            send[i].sq_mobile,
			            send[i].sq_send,
			            send[i].sq_fee_mobile,
			            send[i].sq_msg_type,          // %d
			            send[i].sq_content_name,
			            send[i].sq_content_id,
			            send[i].sq_provider,
			            send[i].sq_province,
			            send[i].sq_sms_scheduletime,
			            send[i].sq_send_time,
			            send[i].sq_submit_id,
			            send[i].sq_submit_stat,   //"SMC", send[i].sq_submit_stat, send->sq_submit_stat,
			            send[i].sq_submit_time,
			            send[i].sq_linkid,
			            send[i].sq_jf_code,
			            send[i].sq_product,
			            send[i].sq_zone_province,
			            send[i].sq_zone_city,
			            send[i].sq_from,
			            send[i].sq_wamid,
			            send[i].sq_reg_cmd,
			            send[i].sq_reg_gateway,
			            send[i].sq_reg_from);
				strcat(deletestring, tempquery);
				strcat(deletestring, ",");
				n++;
			//	send[i].sq_id =0;
				memset(&send[i], 0, sizeof(SEND_Q));
		}
		return n;
}

// 模擬response,返回值為模擬的response數(shù)量
int simulateres(SEND_Q *sendq, RES_Q *resq)
{
	int k =0, i=0, n=0;
#if 0
	for(k = 0; k<memsend ; k++)
		if( strcmp(sendq[k].sq_submit_stat , "sub") ==0 )
			for(i=0; i< memsend ; i++)
				{
					if(strlen(resq[i].rq_submit_id)==0)
					{
						strcpy(resq[i].rq_submit_id , sendq[k].sq_submit_id);
						getdatetime(resq[i].rq_response_time);
						resq[i].rq_response_status = -3;
						resq[i].intime = time(NULL);
					}
				}
#endif 

#if 1
		// check resq 
		for(k=0; k<memsend; k++)
			if( 0 == strlen(resq[k].rq_submit_id)  )
				i++;
		if(i == memsend)
		{
			// resq is null 
			for(k = 0; k<memsend ; k++)
				if( strcmp(sendq[k].sq_submit_stat , "sub") ==0 )
					for( i=0; i< memsend ; i++ )
					{
						if( strlen(resq[i].rq_submit_id) == 0 )
						{
							strcpy(resq[i].rq_submit_id , sendq[k].sq_submit_id);
							strcpy(resq[i].rq_response_id,sendq[k].sq_submit_id);
							getdatetime(resq[i].rq_response_time);
							resq[i].rq_response_status = -3;
							resq[i].intime = time(NULL);
							n++;
						}
					}
		}
		else{
			
			for( k=0; k<memsend; k++ )
				if(strcmp(sendq[k].sq_submit_stat, "sub") ==0)
				{	
					for( i=0; i<memsend ; i++ )
						if(strcmp(resq[i].rq_submit_id , sendq[k].sq_submit_id) ==0)
							// ignore 
							break ;

					for(i =0; i< memsend ; i++)
						if(strlen(resq[i].rq_submit_id) ==0)
						{
							strcpy(resq[i].rq_submit_id, sendq[k].sq_submit_id );
							strcpy(resq[i].rq_response_id, sendq[k].sq_submit_id);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久晋中| 日韩电影在线观看网站| 一区二区三区不卡在线观看 | 韩国毛片一区二区三区| www.视频一区| 欧美一级片在线观看| 国产精品久久久久久久久动漫| 视频在线观看国产精品| 一本色道久久综合精品竹菊| 欧美变态口味重另类| 亚洲成人av中文| 99精品一区二区| 亚洲国产精品99久久久久久久久 | 欧美一区日韩一区| 一区二区三区在线视频播放| 国产在线视频一区二区三区| 欧美优质美女网站| 亚洲国产精品高清| 成人在线综合网站| 久久综合久久综合久久| 美女高潮久久久| 欧美日本乱大交xxxxx| 樱桃视频在线观看一区| 91原创在线视频| 国产午夜精品久久| 国产精品一区二区久久精品爱涩| 日韩网站在线看片你懂的| 亚洲国产综合在线| 91黄色小视频| 午夜欧美视频在线观看| 在线一区二区观看| 亚洲国产日韩一级| 7777精品伊人久久久大香线蕉完整版 | 免费观看成人鲁鲁鲁鲁鲁视频| 色播五月激情综合网| 有码一区二区三区| 91国产精品成人| 亚洲国产视频a| 3atv一区二区三区| 美女视频免费一区| 欧美va在线播放| 激情国产一区二区| 国产午夜精品久久| 91亚洲午夜精品久久久久久| 亚洲精品欧美专区| 欧美日韩国产首页| 免费高清在线视频一区·| 2021中文字幕一区亚洲| 成人免费毛片a| 亚洲精品久久7777| 欧美一区二区三区不卡| 狠狠色综合播放一区二区| 日本一区二区成人| 欧美网站大全在线观看| 蜜臀久久99精品久久久久久9| 精品国产一区二区三区久久久蜜月| 国产综合久久久久久久久久久久| 亚洲国产成人在线| 欧美性猛交xxxx乱大交退制版| 日韩成人dvd| 日本一二三不卡| 欧美日韩精品免费| 国产综合久久久久久鬼色| 综合av第一页| 日韩欧美国产一区二区在线播放| 岛国精品一区二区| 三级在线观看一区二区| 国产精品国产自产拍高清av王其| 欧美二区在线观看| 成人精品电影在线观看| 偷拍亚洲欧洲综合| 国产精品久久久久久久久快鸭| 欧美日韩一区二区三区不卡| 精品在线视频一区| 玉足女爽爽91| 久久久久青草大香线综合精品| 色网站国产精品| 国产一区二区视频在线播放| 一区二区不卡在线播放 | 亚洲人精品午夜| 精品久久久久久综合日本欧美| 97成人超碰视| 国产精品99久久久| 日韩高清电影一区| 亚洲精品久久嫩草网站秘色| 久久久久久久久99精品| 欧美日韩国产高清一区| 成人av免费网站| 国精品**一区二区三区在线蜜桃 | 国产欧美精品一区aⅴ影院| 制服丝袜中文字幕一区| 色一情一伦一子一伦一区| 懂色中文一区二区在线播放| 美女精品自拍一二三四| 爽好久久久欧美精品| 亚洲激情在线激情| 中文字幕中文字幕在线一区| 精品国产91洋老外米糕| 欧美精品乱码久久久久久 | 国产69精品久久久久777| 日韩国产一区二| 亚洲一区在线电影| 亚洲视频免费看| 中文字幕va一区二区三区| 精品久久久久久久久久久久久久久 | 午夜av区久久| 午夜精彩视频在线观看不卡| 亚洲电影一级片| 亚洲图片一区二区| 亚洲一区二区在线免费看| ㊣最新国产の精品bt伙计久久| 欧美—级在线免费片| 欧美激情一区二区三区蜜桃视频| 久久亚洲二区三区| 久久精品视频在线看| 国产亚洲成av人在线观看导航 | 成人性生交大合| 国产精品69毛片高清亚洲| 国产在线播放一区| 国产在线国偷精品免费看| 加勒比av一区二区| 国产一区美女在线| 成人永久aaa| 成人高清在线视频| 91麻豆.com| 欧美性色黄大片手机版| 欧美日韩精品一区二区在线播放| 欧美日韩一二区| 欧美一级日韩免费不卡| 久久久www免费人成精品| 亚洲国产成人一区二区三区| 亚洲美女淫视频| 午夜久久久影院| 经典三级在线一区| 成人黄色av网站在线| 色综合久久久久综合体| 欧美人妇做爰xxxⅹ性高电影| 欧美一区二区三区在线电影| 精品成人a区在线观看| 亚洲国产激情av| 香蕉影视欧美成人| 国产裸体歌舞团一区二区| 成人高清在线视频| 91精品久久久久久蜜臀| 久久精品一区二区三区不卡| 亚洲欧洲日韩av| 日本在线不卡视频| 国产成人亚洲精品青草天美| 色综合久久中文综合久久97| 欧美精品久久一区二区三区| 久久久影视传媒| 亚洲综合在线视频| 黄页网站大全一区二区| 91蜜桃传媒精品久久久一区二区| 91精品国产综合久久国产大片 | 午夜久久久久久电影| 国内精品久久久久影院薰衣草 | 亚洲mv在线观看| 国产成人在线视频免费播放| 在线观看成人小视频| 久久这里只精品最新地址| 亚洲综合一区二区三区| 国产乱人伦偷精品视频免下载| 欧美亚洲国产一区二区三区va| 久久久一区二区三区捆绑**| 午夜欧美一区二区三区在线播放| 成人性生交大片免费| 日韩欧美一区电影| 樱桃视频在线观看一区| 成人午夜视频免费看| 日韩一二三四区| 亚洲亚洲人成综合网络| 成人黄动漫网站免费app| 欧美大胆一级视频| 午夜精品一区二区三区免费视频| 成人动漫视频在线| 精品国产不卡一区二区三区| 日韩一区精品字幕| 色噜噜狠狠成人中文综合| 国产欧美日韩综合精品一区二区| 日本人妖一区二区| 欧美日韩亚洲另类| 亚洲一区二区欧美日韩| 日本韩国一区二区三区视频| 国产精品美女久久久久久2018| 久久er精品视频| 日韩一级片网址| 日本亚洲欧美天堂免费| 欧美精品一级二级三级| 性欧美大战久久久久久久久| 在线欧美日韩精品| 一区二区三区四区亚洲| 97久久精品人人爽人人爽蜜臀| 国产精品国产馆在线真实露脸| 国产成人免费视| 久久久久国产精品麻豆ai换脸 | 热久久免费视频| 在线综合亚洲欧美在线视频| 亚洲va韩国va欧美va| 欧美美女一区二区|