📄 deliverthread.h
字号:
#if !defined(AFX_DELIVERTHREAD_H__ADA578ED_0DAF_410A_8566_782E74AD66A8__INCLUDED_)
#define AFX_DELIVERTHREAD_H__ADA578ED_0DAF_410A_8566_782E74AD66A8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DeliverThread.h : header file
//
#include "TcpSocket.h"
#include "SGipPdu.h"
class CDeliverThread;
typedef struct tagClientNodeBuffer
{
CTcpAsyncSocket *m_pstClientSocket;
int m_iSequenceId;
BOOL m_bConnected;
time_t m_tActiveTime;
}SClientNodeBuffer;
typedef struct tagDeliverNodeBuffer
{
CTcpAsyncSocket m_stListenSocket;
int m_nLocalPort;
char m_szUser[21];
char m_szPassword[21];
char m_szSourceNumber[21];
char m_szLocalIP[20];
int nID;
CDeliverThread *pstThread;
CArray <SClientNodeBuffer*,SClientNodeBuffer*> m_stClientNodeBuf;
}SDeliverNodeBuffer;
typedef struct tagCmdTable
{
CString strSender; //特服号
unsigned short iSenderType; //
CString strCmd; //指令
unsigned short iMatchType; //匹配类型
CString strMoTab; //MO表名
unsigned short iMoTabNum; //MO表个数
}SCmdTable,*PSCmdTable;
typedef struct tagDefFee
{
int iFeeType; //错误指令计费类别=2
int iMotomtFlag; //错误指令MOTOMTFLAG=0
int iFeeValue; //错误指令信息费=10
int iGivenValue; //错误指令赠话费=0
CString strServiceType; //错误指令业务代码
}DEFFEE,*PDEFFEE;
typedef struct tagMobileCtrl{//号码段控制
CString strStart ; //段起始号码
CString strEnd ; //段终止号码
// CString strCityName ; //城市名称
// int nValidState ;//有效号码标志位:1,有效号码段;0,无效号码段
// int nCtrlType ; //1,连续号码;0,离散号码(只用段起始号码strStart)
}SMobileCtrl,*PSMobileCtrl;
typedef struct tagGameQuit{
CString strSrcCmd; //业务号
CString strGameName; //游戏名称
CString strMessage; //回复语
CString strGameSQL; //定制
CString strQuitSQL; //退出定制
}SGameQuit;
/////////////////////////////////////////////////////////////////////////////
// CDeliverThread thread
class CDeliverThread : public CWinThread
{
DECLARE_DYNCREATE(CDeliverThread)
public:
CDeliverThread(); // protected constructor used by dynamic creation
virtual ~CDeliverThread();
// Attributes
public:
// char m_szDeliverErrorLog[88];
int m_nNumOfGameCmd ;
CTcpAsyncSocket m_stMoniterSocket;
char m_szUserName[7];
char m_szPassword[11];
// char m_szTableNames[10][101];
char m_szDeliverLogTableName[101];
BOOL m_bDeliverToEveryDayTable;
char m_szDSN[101];
// BOOL m_bWriteDeliverUseFixSPNumber;
// char m_szWriteDeliverSPNumber[11];
int m_nMoniterPort;
int m_nMaxIdleTimes;
// int m_nTableCounts;
char m_szErrorTable[50];
char m_szHelp[140];
// int iInvalidNumber;
CDatabase m_database;
CArray <CTcpAsyncSocket*,CTcpAsyncSocket*> m_stMoniterNodeBuf;
CArray <SDeliverNodeBuffer*,SDeliverNodeBuffer*> m_stDeliverNodeBuf;
PSCmdTable m_astCmdTab;
CCriticalSection* m_pSection;
DEFFEE m_deffee;
DEFFEE m_canclefee;
// add by ycf 20020825
char m_szErrMobileMsg[140];
PSMobileCtrl m_psValidMb ; //有效号码段,号码段位数为11
int m_nValidMbCount ; //有效号码段个数,号码段位数为11
PSMobileCtrl m_psInvalidMb ; //无效号码段,号码段位数为11
int m_nInvalidMbCount ; //无效号码段个数,号码段位数为11
PSMobileCtrl m_psValidScrapMb ;//有效离散零星号码段,号码段位数为11
int m_nValidScrapMbCount ; //有效离散零星号码段个数,号码段位数为11
PSMobileCtrl m_psInvdScrapMb ;//无效离散零星号码段,号码段位数为11
int m_nInvdScrapMbCount ; //无效离散零星号码段个数,号码段位数为11
CStringArray m_saValidMbHead;//有效号码段头,号码段位数状态为0时,只是段头(低于11位数)
CStringArray m_saInvdMbHead;//无效号码段头,号码段位数状态为0时,只是段头(低于11位数)
BOOL m_bMbCtrlFlag ;//号码段位数状态;0,只是段头(低于11位数);1,号码段区间控制(11位数)
BOOL m_bEnableNumCtrl ; //号码段功能开关
//------------------------------
char m_szSPNumber[21];
BOOL m_bReport;
char m_szCancel[10];
char m_szEqualAll[10] ;
char m_szCancelHelp1[140];
char m_szCancelHelp2[140];
char m_szCancelAll[10];
char m_szEqual[10] ;
char m_szCancelAllHelp[140];
SGameQuit *m_sGameQuit;
int m_nGameQuitNum;
BOOL m_bEnableGameQuit;
//----------------------
BOOL m_bMonth;
char m_szMonthTable[50];
BOOL m_bChat;
int m_nChatLen;
char m_szChatTable[50];
// add by ycf 2002-11-27
BOOL m_bForbid;
BOOL m_bForbidFlag;
char m_szForbidTime[5];
char m_szCurrentDate[11];
char m_szTableName[50];
BOOL m_bRecieve;
// Operations
public:
void SubmitToOrderSend(const char *szMsg, const char *szSAddr, const char *szDAddr,const char *szLinkID, const char *szServiceType);
CString GetResMsg(CString &shortmsg,CString &servicetype,CString &csRegMobile,int iFlag);
BOOL IsGameUser(CString strSrc);
void SubmitToSend(const char *szMsg,const char *szSAddr,const char *szDAddr,const char *szLinkID,BOOL bCancle);
void SubmitToTable(const char *szMsg,const char *szSAddr,const char *szDAddr,const char *szLinkID,const char *szTable);
void SubmitToMonthTable(const char *szMsg,const char *szSAddr,const char *szDAddr,const char *szLinkID,const char *szTable);
void LoadCmdTab();
void GetMoTabName(CString strMsg, CString &strMoTab, const char * szDestAddr);
BOOL IsFindedMoTable(int nIndex,CString strCmd, CString &strMoTab);
void LoadIni();
BOOL InitSocket();
int SendPacket(CTcpAsyncSocket *pstSocket,unsigned char* szSendBuf,int nSendLen);
void AddToMoniterList(CTcpAsyncSocket* pstClientSocket);
int SendSGipBindResp(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf,char cResult);
int SendSGipUnBindResp(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf);
void AddToList(SDeliverNodeBuffer *pstDeliverNodeBuf,CTcpAsyncSocket* pstClientSocket);
void HandleDeliverMsg(SDeliverNodeBuffer *pstDeliverNode,SClientNodeBuffer *pstNodeBuf,char *szRecvBuf,int nLen);
void LogMsg(const char* szMsg,int iFlag=0);
void Quit();
BOOL ConnectDB();
BOOL HandleDeliverPdu(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf);
BOOL HandleReportPdu(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf);
BOOL IsTimeToForbidMobile();
void SubmitToDeliverLog(const char *szMsg, const char *szSAddr, const char *szDAddr ,const char *szLinkID);
int SendSGipDeliverResp(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf,char cResult);
int SendSGipReportResp(SClientNodeBuffer *pstNodeBuf,const char* szRecvBuf,char cResult);
void HandleActiveTest();
int SendSGipUnBind(SClientNodeBuffer *pstNode);
BOOL m_bConnectDeliverDB;
// add by ycf 20020825
BOOL IsEnableMobile(const char *szSAddr);
void LoadMobile();
BOOL IsMobileHead(CString strMobile);
BOOL IsScrapMobile(CString strMobile);
BOOL IsConsecutiveMobile(CString strMobile);
BOOL LoadMobileHead();
BOOL LoadScrapMobile();
BOOL LoadConsecutiveMobile();
void LoadCmdGameQuit();
CString GameQuitCmd(CString strMobile,CString strSrcCmd,CString &strMessage);
CString GetQuitSQL(CString strSql,CString strSrc);
BOOL SubmitToDatabase(const char *szSql);
BOOL IsGameUser(CString strGameSql,CString strSrc);
BOOL IncludeChinese(CString strMsg);
//------------------
void LoadInValidMobile();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDeliverThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDeliverThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DELIVERTHREAD_H__ADA578ED_0DAF_410A_8566_782E74AD66A8__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -