muduo网络库脉络分析(1)

去年看muduo网络库时没有总结博文,导致前段时间用muduo时发现好多东西都模模糊糊,于是就花时间又一次翻阅了muduo源码,并用此篇博文记录下其网络库整体脉络,以便是后来者入手起来更方便,同时也可用作自己以后复习的资料

1.如何入手muduo库

其实在这之前也没有尝试去分析一个网络库的总脉络,更没有去尝试把它以博文的形式总结下来。那么我们该如何尝试去分析这样一个网络库的整体脉络呢?其实我有想过将muduo/net中的每一个功能类详细的一一介绍,但是后来我感觉没必要,这样只会让初学者更加找不着北。基于此种情况,我打算从muduo库提供给用户最外层的TcpServer类入手,然后由外到内的道出其整体脉络

2.由外到内分析muduo

(1)TcpServer类

muduo库为用户提供了一个TcpServer类(定义在TcpServer.h中),该类就是用来生成整个muduo网络库架构的原始类。用户只需要创建一个该类的对象,那么一个搭载这整个muduo网络库的网络架构就形成了。要揭开该类的神秘面纱,那就先来看看它的数据成员
TcpServer类数据成员

 typedef std::map<string, TcpConnectionPtr> ConnectionMap;

  EventLoop* loop_;  
  const string ipPort_;
  const string name_;
  boost::scoped_ptr<Acceptor> acceptor_; 
  boost::shared_ptr<EventLoopThreadPool> threadPool_;
  ConnectionCallback connectionCallback_;
  MessageCallback messageCallback_;
  WriteCompleteCallback writeCompleteCallback_;
  ThreadInitCallback threadInitCallback_;
  AtomicInt32 started_;
  int nextConnId_;
  ConnectionMap connections_;

在介绍其数据成员之前得先为读者介绍muduo库中对几种网络“组件”的抽象

(1)TcpConnection:该类是对网络中各个TCP套接字连接的抽象
(2)EventLoop:该类算是对网络中I/O复用的整个流程块的抽象
(3)Acceptor:该类是对连接处理的一个抽象
(4)EventLoopThreadPool:该类是对多线程搭载多个EventLoop的抽象

好了介绍完上面那几个抽象类,我们在回过头来看TcpServer类的数据成员就会清楚明白很多,本篇博文中在介绍每个类的数据成员时我都不会也不可能做到细无巨细,所以我只会挑最重要的来介绍

在介绍之前请读者先在自己脑海中想象一下,如果让你实现一个TcpServer类,并通过该类直接就可以创建一个网络服务器的网络架构。那么该类中

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值