当前位置: 首页 > news >正文

网站建设需求分析文档园林景观设计公司总工岗位职责

网站建设需求分析文档,园林景观设计公司总工岗位职责,广州网页设计培训视频,wordpress woo插件使用提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言管理的字段 前言 搭建一个网络服务器#xff0c;在内部提供各个业务接口即可。 在业务处理函数中#xff0c;每次请求过来找到对应的信道#xff0c;通过信… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言管理的字段 前言 搭建一个网络服务器在内部提供各个业务接口即可。 在业务处理函数中每次请求过来找到对应的信道通过信道句柄调用前边封装好的处理接口进行处理最后返回响应即可。 管理的字段 服务器需要管理的字段其中需要搭建一个tcp服务器。然后就是我们业务所需的句柄一个是虚拟机管理句柄消费者管理句柄连接管理句柄和线程池句柄。 class Server { private:using MessagePtr std::shared_ptrgoogle::protobuf::Message;muduo::net::TcpServer _server;muduo::net::EventLoop _baseloop;ProtobufCodecPtr _codec; // 协议处理器 对收到的请求进行protobuf协议处理ProtobufDispatcher _dispatcher; // 请求分发器VirtualHost::ptr _host;ConsumerManager::ptr _consumer_manager;ConnectionManager::ptr _connection_manager;ThreadPool::ptr _pool; }我们需要为服务器注册业务请求处理函数。muduo库是支持protobuf协议的处理的。 // 注册请求处理函数 _dispatcher.registerMessageCallbackopenChannelRequest(std::bind(Server::OnOpenChannel,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackcloseChannelRequest(std::bind(Server::OnClodeChannle,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackdeclareExchangeRequest(std::bind(Server::OnDeclareExchange,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackdeleteExchangeRequest(std::bind(Server::OnDeleteExchange,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackdeclareQueueRequest(std::bind(Server::OnDeclareQueue,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackdeleteQueueRequest(std::bind(Server::OnDeleteQueue,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackqueueBindRequest(std::bind(Server::onQueueBind,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackqueueUnBindRequest(std::bind(Server::onQueueUnBind,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackbasicPublishRequest(std::bind(Server::onBasicPublish,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackbasicAckRequest(std::bind(Server::onBasicAck,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackbasicConsumeRequest(std::bind(Server::onBasicConsume,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3)); _dispatcher.registerMessageCallbackbasicCancelRequest(std::bind(Server::onBasicCancel,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3));}当新连接建立时我们需调用连接句柄创建一个新连接。 而连接断开时需要删除连接对象。 void onConnection(const muduo::net::TcpConnectionPtr conn){if (conn-connected() true){LOG_INFO 新连接建立了;_connection_manager-newConnection(_host,_consumer_manager,_codec,conn,_pool);}else{LOG_INFO 连接断开了;_connection_manager-delConnection(conn);}}而其他注册的业务处理函数也比较简答大体流程就是通过连接找到对应的连接管理对象然后通过请求中的rid字段找道连接管理中的对应信道。调用信道中封装好的处理接口进行处理即可。 void OnDeclareExchange(const muduo::net::TcpConnectionPtr conn,const declareExchangeRequestPtr message,muduo::Timestamp){Connection::ptr mconn _connection_manager-getConnection(conn);if(mconn.get() nullptr){DLOG(声明交换机时没有找到连接对应的Connection对象);conn-shutdown();return;}Channel::ptr cp mconn-getChannel(message-cid());if(cp.get() nullptr){DLOG(声明交换机时没有找到信道);conn-shutdown();return;}return cp-declareExchange(message); }这里有两个比较特殊一个打开信道一个是关闭信道 这两个操作是通过连接找到连接管理对象然后调用连接管理对象提供的打开信道和关闭信道操作进行处理。 void OnOpenChannel(const muduo::net::TcpConnectionPtr conn,const openChannelRequestPtr message,muduo::Timestamp){Connection::ptr mconn _connection_manager-getConnection(conn);if(mconn.get() nullptr){DLOG(打开信道时没有找到连接对应的Connection对象);conn-shutdown();return;}return mconn-openChannel(message); } //关闭信道 void OnClodeChannle(const muduo::net::TcpConnectionPtr conn,const closeChannelRequestPtr message,muduo::Timestamp){Connection::ptr mconn _connection_manager-getConnection(conn);if(mconn.get() nullptr){DLOG(关闭信道时没有找到连接对应的Connection对象);conn-shutdown();return;}return mconn-closeChannel(message); }在构造函数的时候由于队列消费者是以队列为单位管理的所以我们要获取已经存在的队列来进行队列消费者的初始化。 //消费者是按照队列为单元进行管理的,针对历史消息中的所有队列需要初始化队列的消费者管理结构QueueConsumerstd::unordered_mapstd::string, mq::MsgQueue::ptr mqmp _host-allQueue();for(auto mq : mqmp){_consumer_manager-initQueueConsumer(mq.first);}
http://www.w-s-a.com/news/65377/

相关文章:

  • 网络公司网站开发河北省城乡住房和建设厅网站
  • 做网站配置wordpress 中文api
  • 怎样把网站做的好看县蒙文网站建设汇报
  • 网站的优化什么做广西桂林新闻最新消息
  • 做网站准备什么软件搜索引擎广告推广
  • 网站开发地图板块浮动网页设计与制作的模板
  • 中国建设招聘信息网站昆明做网站建设的公司排名
  • 那些网站可以做自媒体wordpress 分类seo
  • 淮安市盱眙县建设局网站北京西站到八达岭长城最快路线
  • 在线免费网站企业查查官网入口官网
  • 天津网站优化公司哪家专业超融合系统
  • 邹平网站建设公司报价网站建设备案多长时间
  • 三合一网站开发教程wordpress主题汉化中文版
  • 广州网站建设高端全网营销图片
  • 措勤网站建设罗定城乡建设局网站
  • 苏州建网站流程wordpress不显示内容你
  • 网站流量数据golang建设网站
  • 2020电商网站排行榜如何开设网站
  • 绍兴seo网站管理创新的网站建站
  • 做网站需要的图片网站的视频怎么下载
  • 教人做家务的网站滕州网站建设网站行吗
  • 湖北专业的网瘾学校哪家口碑好seo百度百科
  • 保定网站制作软件网页制作工具程
  • o2o网站建设教程计算机培训班培训费用
  • 赤峰网站制作php智能建站系统
  • 做高防鞋 哪个网站能上架net网站开发net网站开发
  • 做网站公司郑州推广计划步骤
  • 网站建设计无形资产外国做美食视频网站
  • 创立一个网站需要什么网推技巧
  • 网站的会员功能怎么做wordpress主题开拓右边栏