亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
一区二区不卡在线播放 | 国产精品一二三四区| 久久九九国产精品| 欧美网站一区二区| 国产精品一区二区视频| 午夜伦欧美伦电影理论片| 国产欧美一区二区三区鸳鸯浴| 日本久久一区二区| 国产成人啪免费观看软件| 亚洲国产成人av网| 1000精品久久久久久久久| 日韩精品自拍偷拍| 欧美日韩在线播放三区| 日韩欧美国产系列| 色8久久人人97超碰香蕉987| 国产综合久久久久影院| 亚洲综合偷拍欧美一区色| 国产精品免费免费| 久久久噜噜噜久噜久久综合| 91精品国模一区二区三区| 99久久婷婷国产精品综合| 激情图片小说一区| 日本在线不卡视频| 亚洲在线免费播放| 亚洲欧美日韩国产成人精品影院 | 狠狠网亚洲精品| 亚洲永久免费视频| 日韩伦理电影网| 国产精品国产三级国产aⅴ原创| 精品黑人一区二区三区久久| 欧美夫妻性生活| 欧美日韩精品一区二区三区| 色狠狠一区二区三区香蕉| 成人app网站| 国产河南妇女毛片精品久久久| 蜜桃视频第一区免费观看| 午夜av一区二区三区| 亚洲一区二区在线播放相泽| 一区二区三区在线免费播放| 亚洲婷婷综合色高清在线| 国产精品拍天天在线| 国产清纯白嫩初高生在线观看91| 日韩欧美一区中文| 日韩精品中文字幕在线一区| 日韩亚洲欧美在线| 日韩欧美国产一二三区| 日韩欧美激情一区| 亚洲精品一区二区三区影院| 久久久一区二区| 国产欧美精品一区aⅴ影院 | 成人av在线播放网址| 国产99久久久精品| av午夜一区麻豆| 色综合av在线| 在线观看不卡视频| 91麻豆精品国产自产在线观看一区 | 综合久久给合久久狠狠狠97色| 国产精品久99| 亚洲精品国产精品乱码不99| 亚洲综合免费观看高清完整版在线| 亚洲精品亚洲人成人网| 亚洲.国产.中文慕字在线| 丝袜美腿亚洲一区| 激情深爱一区二区| 国产91露脸合集magnet| 99国产精品视频免费观看| 在线观看欧美日本| 日韩一区二区麻豆国产| 久久精品夜色噜噜亚洲aⅴ| 国产精品入口麻豆原神| 一区二区三区在线免费观看 | 日日噜噜夜夜狠狠视频欧美人| 蜜臀av一区二区| 国产成人在线影院| 色老汉一区二区三区| 91精品国产综合久久久蜜臀图片| 日韩视频免费直播| 国产精品三级视频| 亚洲成人一区二区| 国产在线国偷精品免费看| 99麻豆久久久国产精品免费| 欧美日韩国产一级二级| 久久综合狠狠综合久久综合88| 成人免费在线观看入口| 日本视频一区二区三区| 成人免费的视频| 欧美三级午夜理伦三级中视频| 精品sm捆绑视频| 亚洲精品国产精华液| 激情综合亚洲精品| 欧洲国产伦久久久久久久| 精品区一区二区| 亚洲欧美日韩国产一区二区三区 | 久久精品视频免费| 亚洲成人免费电影| 国产91在线看| 在线电影院国产精品| 国产日本欧洲亚洲| 成人听书哪个软件好| 欧美日韩中文精品| 国产精品理论片| 精品在线免费视频| 在线观看免费视频综合| 欧美国产激情二区三区| 日韩精品一级二级| 一本久道久久综合中文字幕| 久久欧美中文字幕| 肉丝袜脚交视频一区二区| 99久久久免费精品国产一区二区| 日韩欧美国产1| 亚洲国产美女搞黄色| 懂色av中文一区二区三区| 欧美一级片在线看| 一区二区成人在线| 不卡av免费在线观看| 亚洲精品在线观| 热久久免费视频| 欧美专区亚洲专区| 亚洲猫色日本管| 成人福利电影精品一区二区在线观看| 欧美一区二区三区四区在线观看| 亚洲精品国产第一综合99久久| 国产福利一区二区三区视频| 日韩一二三区不卡| 日本在线不卡视频| 欧美群妇大交群的观看方式| 亚洲女厕所小便bbb| 成人精品国产一区二区4080| 久久久久久一二三区| 久久99久久精品| 欧美变态tickling挠脚心| 日韩国产精品久久| 欧美久久婷婷综合色| 午夜视频一区二区三区| 欧美视频在线观看一区| 一区二区三区精品视频| 日本久久精品电影| 亚洲一区二区四区蜜桃| 在线观看免费视频综合| 亚洲国产精品自拍| 欧美三区在线视频| 亚洲444eee在线观看| 欧美日本在线一区| 午夜精品aaa| 欧美系列日韩一区| 图片区小说区区亚洲影院| 欧美精选在线播放| 欧美aaa在线| 精品国产乱码久久久久久老虎| 麻豆成人久久精品二区三区红| 日韩欧美综合一区| 国产米奇在线777精品观看| 久久精品欧美一区二区三区不卡 | 福利一区二区在线| 国产精品美女视频| 一本大道久久a久久综合| 亚洲国产中文字幕在线视频综合| 欧美日韩精品三区| 捆绑调教一区二区三区| 久久嫩草精品久久久久| 成人免费看的视频| 亚洲精品视频在线观看网站| 欧美色视频一区| 麻豆精品新av中文字幕| 久久综合给合久久狠狠狠97色69| 粉嫩13p一区二区三区| 18成人在线视频| 在线不卡免费av| 精品影视av免费| 国产精品护士白丝一区av| 欧美在线短视频| 久久精品999| 国产精品女上位| 欧美日韩国产免费| 国产一区二区三区蝌蚪| 亚洲视频资源在线| 欧美一区二区三区四区五区| 国产九色精品成人porny| 亚洲免费电影在线| 日韩欧美国产精品| 99精品视频在线播放观看| 亚洲超碰精品一区二区| 精品国偷自产国产一区| 色综合天天综合网国产成人综合天| 午夜激情一区二区三区| 久久久久久久av麻豆果冻| 欧美在线免费视屏| 国产精品88av| 天天色天天操综合| 国产精品免费aⅴ片在线观看| 欧美欧美欧美欧美| 成人高清免费观看| 青青草精品视频| 国产精品国产三级国产普通话蜜臀| 制服丝袜日韩国产| 99久久99久久综合| 精品一区二区三区免费播放| 亚洲精品日韩一| 国产丝袜在线精品| 777午夜精品视频在线播放|