fdbus之CFdbSession类

背景介绍

CFdbSession 这个类有着很重要的作用,session的中文含义就是会话,按照我的理解,一个会话就是一个连接,一个连接就对应一个socket。这个类实现了网络通信的细节,或者说这个类是网络通信功能入口类,他后面可能会调用udpsession或者tcpsession或者调用uds相关的功能

前文我们讲述了CFdbMessage(CBaseMessage),这个消息类定义了消息的具体内容和消息的操作方法。那这个消息应该如何发送出去到对应的端点呢?说到这里就是通过CFdbSession这个类来实现的。

类图

fdbus之CFdbSession类_第1张图片

 CSysFdWatch

该类的功能是监视文件描述描述的变化,使用该类有个要求,即文件描述符fd不能设置为BLOCK模式,否则起不到监视的效果。

如果要实现监视的效果一般会涉及到事件循环,所以这个类存在一个指针,该指针指向一个事件循环,监视的逻辑应该在事件循环中。

数据成员mFd应该指的是文件描述符。

CBaseFdWatch

该类的数据成员mWorker的含义是运行在那个线程

enable:使能该类

disable:禁用该类

attach:将该类绑定到某个线程下使其在指定线程下执行

CBaseSession

数据成员:

  • mContainer:senssion对象的容器
  • mSocket:该会话的socket id
  • mPayloadBuffer:消息负载缓冲区地址
  • mSid:会话id
  • mPendingMsgTable:个人理解是等待回复消息的消息列表

成员函数:

这里也是按照类型划分吧:

  • 接收消息后处理函数,例如doRequest doResponse doBroadcast doSubscribeReq
  • 解析消息prefix parsePrefix
  • 网络连接的一些操作,例如setUDPDestAddr

CFdbSession

数据成员:

  • mPid:进程id
  • mPeerUDPIp:对端的ip地址
  • mPeerUDPPort:对端的端口号

成员函数:

虽然这里成员函数都是子类实现的虚函数,前面的类都已经列出,这里将重要的入口列出,供后续忘记时可以快速找到功能入口:

  • 收到消息处理入口:onInput,从这个函数入口去看可以看到接收消息的处理过程
  • 发送消息的一个入口:sendMessage writeStream

你可能感兴趣的:(fdbus,fdbus,rpc,中间件)