采用C++模板技术,实现的分布式哈希存储服务器
来源:互联网 发布:传奇数据库攻速是哪个 编辑:程序博客网 时间:2024/05/29 00:31
一、设计目标:
1.采用c++模板技术,只需编写少量代码即可生成服务器
2.灵活,消息内容可以自定义,存储容量可配置
3.分布式,支持客户端和服务器之间多对多的关系
4.单机可以启动多个服务器实例
5.服务器配置简单易懂
二、使用举例
让我们先一个例子:
只要几十行代码,我们就已经完成了一个服务器的编写!
服务器框架包含在ServerContext.hpp文件中,网络部分采用多线程的反应器模式(Reactor,包含在Reactor.hpp中)
1.采用c++模板技术,只需编写少量代码即可生成服务器
2.灵活,消息内容可以自定义,存储容量可配置
3.分布式,支持客户端和服务器之间多对多的关系
4.单机可以启动多个服务器实例
5.服务器配置简单易懂
二、使用举例
让我们先一个例子:
- #include "ServerContext.hpp"
- #include "BlockId.hpp"
- struct MyContext : public SocketBufferServerContext<MyContext,BlockId,unsigned int>
- {
- typedef SocketBufferServerContext<MyContext,BlockId,unsigned int> Base;
- typedef Base::Key Key;
- typedef Base::Value Value;
- MyContext():cmd(-1){}
- static void DoUpdate(bool bInsert,Value & val,Response & response)
- {
- if(!bInsert)
- {
- val++;
- }
- response.appendInt(val);
- }
- void DoProcessCommand(int argc,int & index,char * argv[])
- {
- if(strcmp(argv[index],"-o") ==0 )
- {
- cmd = OUTPUT_COMMAND;
- }
- }
- static void DoOutput(Key const & key,Value const & val)
- {
- std::cout<<key<<","<<val<<std::endl;
- }
- bool DoStart()
- {
- if(cmd == OUTPUT_COMMAND)
- {
- this->storage->Output();
- return false;
- }
- return true;
- }
- private:
- int cmd;
- };
- int main(int argc,char * argv[])
- {
- MyContext ctx;
- if(!ctx.ProcessCommand(argc,argv) )
- {
- std::cout<<"ProcessCommand is failed/n";
- return 1;
- }
- if(!ctx.Start() )
- {
- return 1;
- }
- return 0;
- }
服务器框架包含在ServerContext.hpp文件中,网络部分采用多线程的反应器模式(Reactor,包含在Reactor.hpp中)
- 采用C++模板技术,实现的分布式哈希存储服务器
- 采用PHP实现"服务器推"技术的聊天室
- 采用PHP实现”服务器推”技术的聊天室
- 采用PHP实现”服务器推”技术的聊天室
- 采用PHP实现”服务器推”技术的聊天室
- 采用PHP实现”服务器推”技术的聊天室
- 采用PHP实现”服务器推”技术的聊天室
- 采用参数服务器的分布式机器学习
- 采用IOCP技术的socket服务器代码,
- C++顺序表的实现(采用模板)
- C++顺序表的实现(采用模板)
- 采用aidl技术实现电话的挂断
- 采用HTML5技术实现的远程桌面访问
- 如何实现C/S模式下客户机与服务器采用统一的时间
- C++ Primer是采用这样的技术让模板定义和实现分离 || vc2005 “NULL”: 未声明的标识符 vc2005
- 采用Memcached实现分布式Session
- 分布式存储技术
- 分布式存储服务器FastDFS
- 网络操作系统的通信基础知识
- DES加密与解密算法的实现
- 影响加载PNG图片效果的原因
- MOBILE Edit Box控件
- CreateWindow()
- 采用C++模板技术,实现的分布式哈希存储服务器
- IIS6.0安全设置方法
- 袁老博客的特点之一
- RSI背离在判断暂时反转中的应用
- jQuery基础知识
- Visual C#的Excel编程
- RequestDispatcher报NullPointer异常的解决
- [转载] 有效运用auto_ptr
- 网络字节序与主机字节序