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

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

?? cngp.c

?? 增值業務的sngp協議。
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*$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];	//資費類型
	int FeeUserType;	//計費用戶類型
}STYPE;

static STYPE S_MFXX;	//免費信息
static STYPE S_DBXF;	//點播下發
static STYPE S_DYJG;	//訂閱結果
static STYPE S_QXDY;	//取消訂閱
static STYPE S_BYHD;	//包月扣款請求
static STYPE S_BYXX;	//訂閱下發(包月)
static STYPE S_ATXF;	//訂閱下發(按條)
static STYPE S_ZXDX;	//自寫短信
static STYPE S_QBTD;	//全部退定
static STYPE S_ECQR;	//二次確認

//const static int allconn = 10;

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

 /*網關帳號配置*/
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 特服號
static char SSMP_SERVICE_CODE[32] = ""; // ssmp 特服號碼
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 時用到
static int port = 0;
static int send_version = 0;
static int login_mode = 0;
static int connnum = 0;

// connecttype ==1 時用到
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;// 已連接數
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}; //發送隊列
pthread_mutex_t resq_lock[MAXCNN]={PTHREAD_MUTEX_INITIALIZER}; // 接收隊列
pthread_mutex_t cnum_lock[MAXCNN]={PTHREAD_MUTEX_INITIALIZER}; // 鏈接狀態,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(鏈接狀態), 鏈接狀態, 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;
	}
	
}


// 匹配發送隊列和接收隊列中數據
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 )
				//	{
						//錯誤,重發
				//		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數量
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);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产精品免费免费搜索| 色婷婷亚洲婷婷| 在线观看亚洲成人| 亚洲国产视频a| 精品久久久久一区二区国产| 国内久久婷婷综合| 亚洲日本va在线观看| 欧美日韩国产一级片| 久久精品国产精品亚洲红杏| 国产免费成人在线视频| 成人中文字幕在线| 日韩av中文在线观看| 日韩欧美一级精品久久| 成人动漫一区二区在线| 亚洲国产成人av| 亚洲r级在线视频| 久久亚洲精品国产精品紫薇| 色悠久久久久综合欧美99| av成人免费在线观看| 美女网站色91| **欧美大码日韩| 久久久久久久久久久久电影| 国产欧美日韩亚州综合| 中文字幕在线不卡一区| 亚洲综合免费观看高清在线观看| 国产性做久久久久久| 欧美精品tushy高清| thepron国产精品| 一本色道久久加勒比精品| 欧美在线免费观看亚洲| 7777精品伊人久久久大香线蕉超级流畅| 国内精品第一页| 国产99久久久国产精品免费看| 日本女优在线视频一区二区| 久久99精品国产.久久久久久| 亚洲成a人v欧美综合天堂| 亚洲综合自拍偷拍| 亚洲人精品午夜| 国产精品萝li| 国产精品久久久久桃色tv| 精品国产123| 欧美哺乳videos| 国产精品天美传媒沈樵| 丝袜诱惑制服诱惑色一区在线观看 | 日韩精品一区第一页| 久久国产免费看| 不卡视频一二三四| 欧美一区二区视频在线观看2022| 欧美无砖专区一中文字| 色婷婷精品久久二区二区蜜臂av| 欧美一区二区大片| 欧美激情在线一区二区| 国产女人18水真多18精品一级做 | 亚洲欧美在线另类| 日本va欧美va欧美va精品| 日本sm残虐另类| 99视频精品在线| 久久女同性恋中文字幕| 亚洲6080在线| 99国产精品一区| 欧美一区二区三区白人| 欧美国产国产综合| 蜜臀a∨国产成人精品| 在线观看一区不卡| 国产精品女主播在线观看| 美女脱光内衣内裤视频久久网站 | 中文字幕一区免费在线观看| 亚洲国产色一区| 色综合久久88色综合天天免费| 亚洲精品一区二区精华| 婷婷六月综合网| 视频在线观看国产精品| 色综合天天性综合| 91在线观看下载| 成人精品视频一区二区三区尤物| 日韩欧美一二三| 日韩中文字幕一区二区三区| 在线亚洲欧美专区二区| 亚洲女与黑人做爰| 99国产精品久| 国产精品国产三级国产有无不卡| 国产福利91精品一区二区三区| 成人高清视频免费观看| 国产偷国产偷精品高清尤物| 国产一区不卡在线| 在线观看一区不卡| 一区二区在线看| 国产麻豆91精品| 国产亚洲欧美日韩在线一区| 国产在线播放一区三区四| 久久蜜臀精品av| 国产自产高清不卡| 欧美激情在线一区二区三区| 国产成人在线电影| 国产精品福利影院| 色综合久久九月婷婷色综合| 亚洲一区二区3| 91精品国产综合久久福利软件| 日韩av中文字幕一区二区| 日韩精品一区国产麻豆| 国产美女精品人人做人人爽| 国产精品水嫩水嫩| 欧美性videosxxxxx| 日韩精品一区第一页| 久久先锋影音av| 成人性生交大片免费看中文| 亚洲精品中文在线| 在线观看91av| 国产高清亚洲一区| 亚洲视频图片小说| 91精品国产综合久久蜜臀| 久久精品72免费观看| 久久免费偷拍视频| 欧洲国内综合视频| 蜜臀av性久久久久蜜臀aⅴ| 日本一区二区三区免费乱视频| 91麻豆精品在线观看| 六月丁香婷婷久久| 国产精品久久久久桃色tv| 精品视频一区二区三区免费| 亚洲精品视频免费观看| 日韩欧美综合在线| 麻豆国产精品一区二区三区| 中文字幕不卡一区| 欧美精品视频www在线观看| 国产高清精品网站| 日本欧美肥老太交大片| 国产精品乱人伦| 日韩女同互慰一区二区| 99精品国产热久久91蜜凸| 美女诱惑一区二区| 亚洲精品免费视频| 日本一区二区三区免费乱视频| 欧美精品粉嫩高潮一区二区| av一区二区三区黑人| 精品一区二区三区香蕉蜜桃| 午夜久久久影院| 亚洲欧美日韩久久| 欧美国产综合一区二区| 日韩免费高清视频| 欧美日产在线观看| 暴力调教一区二区三区| 国产精品一区三区| 最新不卡av在线| 国产丝袜在线精品| 欧美va亚洲va国产综合| 欧美精品精品一区| 欧美色视频在线| 欧美亚洲自拍偷拍| 91麻豆高清视频| 99精品1区2区| 91在线看国产| av在线不卡观看免费观看| 国产ts人妖一区二区| 国产一区二区0| 国产一区二区三区观看| 狠狠色丁香婷婷综合| 麻豆国产欧美日韩综合精品二区| 日韩av电影免费观看高清完整版| 亚洲愉拍自拍另类高清精品| 精品在线一区二区| 男女男精品视频| 蜜桃av噜噜一区二区三区小说| 免播放器亚洲一区| 精品一区二区三区视频在线观看 | 8x福利精品第一导航| 在线精品视频小说1| 欧美私人免费视频| 欧美日韩精品三区| 制服.丝袜.亚洲.中文.综合| 日韩欧美在线影院| 久久天天做天天爱综合色| 欧美videos大乳护士334| 2021中文字幕一区亚洲| 久久久久久99久久久精品网站| 日本一区二区视频在线观看| 中文字幕一区二区三区在线不卡| 亚洲日本在线a| 亚洲地区一二三色| 麻豆精品一二三| 成人av网站大全| 91国偷自产一区二区三区观看| 国产一区二区看久久| 99天天综合性| 欧美日韩一区视频| 欧美成人艳星乳罩| 国产精品免费看片| 亚洲综合色视频| 紧缚捆绑精品一区二区| 成人高清免费观看| 欧美日韩一区中文字幕| 欧美xingq一区二区| 综合婷婷亚洲小说| 麻豆精品在线观看| 91香蕉视频污| 欧美精品一区二区三区高清aⅴ| 国产精品久久福利| 久久国内精品视频| 色综合久久六月婷婷中文字幕| 欧美一区国产二区|