• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

JMEngine: 一个主要用于游戏服务器的网络框架, boost使用较多

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

JMEngine

开源软件地址:

https://gitee.com/JimmyH/JMEngine

开源软件介绍:

#JMEngine开发环境选择
windows: vs2012以上(vs2012为支持可变模板参数,编译器需要使用vc_compilerCTPNov2012,external提供下载)
linux: gcc 4.8.1以上

c++ 网游服务器框架代码

网络:网络层使用boost::asio编写, 并再此之上封装了一个异步rpc调用模块, rpc协议使用protobuf, 支持超时

client -> server

class ClientHandler final : public JME_NetHandler{public:	void sessionConnectSucceed(JME_TcpSession::JME_TcpSessionPtr session)	{		session->start(1);	}	void sessionConnectFailed(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{	}	void sessionDisconnect(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{	}	void sessionReceiveMessage(JME_TcpSession::JME_TcpSessionPtr session,  JME_Message::JME_MessagePtr msg)	{	}	void sessionReadError(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{	}};int main(){	JMECore.start();	auto client_handler = boost::shared_ptr<ClientHandler>(new ClientHandler);	auto client_session = JME_TcpSession::create(client_handler, 10240, 5); 	client_session->connect("127.0.0.1", "2010");	while (1)	{		string cmd;		cin >> cmd;		if (!cmd.compare("quit"))		{			break;		}	}	JMECore.stop();	return 0;};

server <- client

class AcceptorHandler : 	public JME_NetHandler{public:	void sessionConnectSucceed(JME_TcpSession::JME_TcpSessionPtr session)	{		session->start(1);	}	void sessionConnectFailed(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{	}	void sessionDisconnect(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{	}	void sessionReceiveMessage(JME_TcpSession::JME_TcpSessionPtr session,  JME_Message::JME_MessagePtr msg)	{	}	void sessionReadError(JME_TcpSession::JME_TcpSessionPtr session, boost::system::error_code e)	{			}};int main(){	JMECore.start();	auto acceptor_handler = boost::shared_ptr<AcceptorHandler>(new AcceptorHandler);	auto acceptor = JME_TcpAcceptor::create(acceptor_handler, 2010);	acceptor->accept(0, 1024);	while (1)	{		string cmd;		cin >> cmd;		if (!cmd.compare("quit"))		{			break;		}	}	JMECore.stop();	return 0;};

日志:自主封装的日志库,支持按文件大小分割日志, 动态更改日志级别, 日志输出到文件采用独立线程

内存:使用开源内存池 nedmalloc

数据库:封装有一个通用的数据库连接池

typedef JMEngine::db::DBHelper<mongo::DBClientConnection> MongoDBHelper;typedef JMEngine::db::DBPool<mongo::DBClientConnection> MongoDBPool;bool connect(mongo::DBClientConnection* conn, const string& ip_str, const string& db_name, const string& name, const string& pwd){	string err = "";	if (!conn->connect(ip_str, err))	{		LOGE(err);		return false;	}	if (!conn->auth(db_name, name, pwd, err))	{		LOGE(err);		return false;	}	return true;}int main(){	MongoDBPool::DBPoolPtr _gdDBPool = MongoDBPool::create(n, boost::bind(&connect, _1, ip_str, db_name, name, pwd));	try	{		MongoDBHelper conn(_gdDBPool);		mongo::BSONObj b = conn->findOne(db_name_str, query.obj(), fileds);			if(b.isEmpty())			return 1;		Json::Value val;		Json::Reader reader;		reader.parse(b.jsonString(),val);		val.removeMember("_id");		return 0;	}	catch(const JMEngine::db::JME_DBException& err)	{		LOGE(err.what());	}	return 1;}

2015/12/31 新增 简单udp监听

class UdpHandler :	public JME_UdpNetHandler{public:	void onReceive(JME_UdpSessionPtr session, JME_MessagePtr msg)	{				//逻辑线程处理接收到的消息		session->writeMessage(*msg);	}	void onWrite(JME_UdpSessionPtr session)	{		//处理完一条消息后,才能继续接受下一条消息		session->startRead();	}};int main(){	JMECore.start();	auto udp_handler = boost::shared_ptr<UdpHandler>(new UdpHandler);	auto udp_session = JME_UdpSession::create(udp_handler, 6002, 10240);	udp_session->startRead();	while (1)	{		string cmd;		cin >> cmd;		if (!cmd.compare("quit"))		{			break;		}	}	JMECore.stop();	return 0;};

相关第三方库列表protobufboost.1.49.0

相关使用示例在 TestServers项目里地址: https://git.oschina.net/JimmyH/TestServers


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap