📄 dmcthread.h
字号:
///
/// @file DMCThread.h
/// @brief Data manager center thread
/// @author LiuShijie
/// @date 2009-04-1
///
#ifndef __DMCTHREAD__
#define __DMCTHREAD__
#include "def.h"
#include "Thread.h"
//#include "mysql_lib.h"
#include "Queue.h"
using namespace std;
#define UNKOWN 0
#define BOUND 1
#define CONNECTING 2
#define SENDERR 3
#define SENTERR 4
#define STABLE 7
#define CONNECTED 8
#define CONNECT 9
//客户端访问
#define COMMAND_BIND_REQ 0x8001
#define COMMAND_BIND_REP 0x0001
#define COMMAND_VALIDATE_REQ 0x8002
#define COMMAND_VALIDATE_REP 0x0002
/*********************************************************
/*错误代码
**********************************************************/
#define VERSION_10 1
#define SUCCESS 0
#define ERR_INTERNAL 0x0001
#define ERR_USERID 0x0002 //
#define ERR_PROTOCOL 0x0003
#define ERR_TARGETSVR 0x0004 //
#define ERR_PASSWORD 0x0005 //密码不正确
#define ERR_MULTIONLINE 0x0006
#define ERR_COMMAND 0x0104
struct CLIENT
{
char flag;
unsigned char password[6];
char ip[20];
unsigned short port;
struct sockaddr_in servaddr;
int fd1;
int fd2;
int MO,MT;
};
struct SESSION
{
unsigned char flag;
int clientid;
int other;
unsigned char key[6];
int bufSize;
int bufLen;
char ip[20];
unsigned short port;
char* buffer;
};
struct BINDREQ
{
unsigned short command;
unsigned int len;
char version;
unsigned clientid;
};
struct BINDREP
{
unsigned short command;
unsigned int len;
unsigned short result;
unsigned char key[6];
};
struct VALIDATEREQ
{
unsigned short command;
unsigned int len;
unsigned char password[6];
};
struct VALIDATEREP
{
unsigned short command;
unsigned int len;
unsigned short result;
};
class DMCThread : public G_Thread
{
public:
/// @brief 构造函数
DMCThread(int,char*,char*,int,char*,char*,char*);
/// @brief 析构函数
~DMCThread();
/// @brief 主线程运行
void Run();
private:
struct CLIENT* clients[65536];
struct SESSION* sessions[65536];
//zlb_mysql::DataBase db;
time_t current;
int clock;
int day;
G_Lock maxOnlineLock;
int maxOnline;
unsigned long systemLogID;
int interval;
char job[100];
char ip[16];
int port;
char username[50];
char password[50];
char dbname[50];
int loadClients();
int updateClients();
public:
struct SESSION* initSession(int,char*,unsigned short);
struct SESSION* getSession(int);
void saveBuffer(int,void*,int);
void appendBuffer(int,void*,int);
void setSessionInvalid(int);
void setConnected(int,int,int);
struct CLIENT* getClientByID(int);
int getFD1(int);
int getFD2(int);
void reportMO(int,int);
void reportMT(int,int);
bool init(char*);
//zlb_mysql::DataBase db;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -