从这个系列开始 陆续记录整个RBL开发的过程 废话不多说 直入主题
10:54:53 2014-08-25
今天开发任务:
RBL.h 的框架搭建出来 包括RBLServer RBLClient 和命令窗口
网络层: 因为我开发的目的就是linux 所有非linux系统的api 我都不会考虑。 在IO复用中我就选择了EPOLL模型 其他的实现 包括freeBSD等 主要原因是我没有精力去写
命令窗口:
struct RBLCommand { RBLCommand(const std::string& name_,RBLCommandProc *proc_,bool Write_):name(name_),proc(proc_),Write(Write_) { } std::string name; //名字 RBLCommandProc *proc; //函数入口指针 用typedef 函数指针语法模式来实现 bool Write; //是否是写命令 };struct RBLCommand { RBLCommand(const std::string& name_,RBLCommandProc *proc_,bool Write_):name(name_),proc(proc_),Write(Write_) { } std::string name; //名字 RBLCommandProc *proc; //函数入口指针 用typedef 函数指针语法模式来实现 bool Write; //是否是写命令 };
我要用这种模式来写的话 对RBL内核部分来讲 所有的查询都是调用这里面的操作符号,我用的语言采用C++ 也没有必要自己建造一个hash表造一个重复的车轮子:
写成上述的数据结构是出于这几点考虑的:
1) 编程复杂
2)这个命令表比较小,调用std::map 来做查找和gun_cxx::hash_map其实速度机会一样 而且这个命令表结构启动之后是不会扩大的 所以我就暂时就利用std::map来存储。