ZZDNet分布式网络通信软件
北京执竹科技有限公司
 
载入中...
搜索中...
未找到
ZZDNetRequest.h
浏览该文件的文档.
1
10#pragma once
11#include "ZZDNetExports.h"
12#ifdef WIN32
13#include <Windows.h>
14#endif
15#ifdef LINUX_GCC
16#include <string.h>
17#endif
18#define REQUEST_VAR_DECLEAR(NAME, TYPE, SIZE) \
19public:\
20void set##NAME(TYPE v) {m##NAME = v; updateVar(&m##NAME, SIZE);}\
21TYPE NAME() {return m##NAME;}\
22void add##NAME() {addVar(&m##NAME, SIZE);}\
23void remove##NAME() {removeVar(&m##NAME);}\
24protected:\
25 TYPE m##NAME;
26
27#define REQUEST_STRING_DECLEAR(NAME, SIZE) \
28public:\
29void set##NAME(const char* v) {strncpy(m##NAME, v, SIZE - 1); m##NAME[SIZE - 1] = 0;updateVar(m##NAME, SIZE);}\
30const char* NAME() {return m##NAME;}\
31void add##NAME() {addVar(m##NAME, SIZE);}\
32void remove##NAME() {removeVar(m##NAME);}\
33protected:\
34 char m##NAME[SIZE];
35
36#define REQUEST_DATA_DECLEAR(NAME) \
37public:\
38void set##NAME(const char* v, int size) {\
39 updateDataVar(#NAME, v, size);}\
40const char* NAME() {if (m##NAME##Size == 0) {return 0;}return m##NAME;}\
41int NAME##size(){return m##NAME##Size;}\
42void add##NAME() {m##NAME = 0;m##NAME##Size = 0;addDataVar(#NAME, &m##NAME, &m##NAME##Size);}\
43void remove##NAME() {removeDataVar(#NAME);}\
44protected:\
45 char *m##NAME;\
46 int m##NAME##Size;
47
48class ZZDNet;
49class ZZDNetRequestImp;
50class ZZDNetRequestManager;
52{
54public:
58 virtual ~ZZDNetRequest();
59
64 virtual const char *type() = 0; // 长度小于256
65
71 virtual bool send(ZZDNet *net);
72
79 bool parse(const char *content, int fixed, int var);
80
85 const char *content();
86
91 int size();
92
93protected:
98
103 virtual bool encode() = 0;
104
109
110protected:
116 void addVar(void *p, int size);
117
123 void updateVar(void *p, int size);
124
129 void removeVar(void *p);
130
137 void addDataVar(const char *name, char **var, int *size);
138
145 void updateDataVar(const char *name, const char *p, int size);
146
151 void removeDataVar(const char *name);
152
153private:
154 ZZDNetRequestImp *_imp;
155};
156
定义 ZZDNet.h:17
void removeVar(void *p)
删除变量
void updateEncode()
更新编码
void removeDataVar(const char *name)
删除数据变量
friend class ZZDNetRequestManager
定义 ZZDNetRequest.h:53
void addVar(void *p, int size)
增加变量
virtual bool send(ZZDNet *net)
发送
int size()
返回内容大小
virtual const char * type()=0
返回对象名称
ZZDNetRequest()
禁用默认构造函数,为了防止直接调用
void updateDataVar(const char *name, const char *p, int size)
更新数据变量
virtual bool encode()=0
编码
void addDataVar(const char *name, char **var, int *size)
增加数据变量
ZZDNetRequestImp * _imp
内部
定义 ZZDNetRequest.h:154
bool parse(const char *content, int fixed, int var)
解析更新内容
const char * content()
返回内容指针
void updateVar(void *p, int size)
更新变量
virtual ~ZZDNetRequest()
析构函数