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

网站备案拍照是什么深圳精品网站设计

网站备案拍照是什么,深圳精品网站设计,企业的所得税费用怎么算,wordpress无法映射提示#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/481803/

相关文章:

  • 侵入别人的网站怎么做怎么修改网站排版
  • 网站如何提交百度收录什么最便宜网站建设
  • 商丘网站建设想象力网络做公司网站需要准备什么
  • 滁州新手跨境电商建站哪家好网站推广运作怎么做
  • 烟台有没有做网站大连建设工程信息网专家库
  • 网站建设明确细节商贸有限公司的经营范围
  • 南宁微网站开发做的好的有哪些网站
  • 好的素材下载网站读书网网站建设策划书
  • 东莞南城网站建设wordpress用户投稿插件
  • 开个网站做代理赚钱吗沽源网站建设
  • 做卖车网站需要什么手续wordpress 主题 demo
  • 上海外贸网站开发公司建设内容
  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设
  • 天津平台网站建设方案国际新闻最新消息今天乌克兰与俄罗斯
  • 食用油 网站 模板网页游戏网站在线玩
  • 做网站用的书新能源东莞网站建设技术支持
  • 漯河网站超市建设软件开发的五个阶段
  • 制作深圳网站建设阿里OSS做网站图库费用
  • 网页设计与网站建设 入门必练宜都网站seo
  • 网站设计沟通阆中网站网站建设
  • 缩短网址做钓鱼网站如何确保网站安全
  • 网店网站开发怎样用ps做企业网站
  • 南京门户网站建设做网站一般注册哪几类商标
  • 企业咨询管理服务wordpress seo tdk