码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • fdbus之CFdbSession类


    背景介绍

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

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

    类图

     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
  • 相关阅读:
    游戏资讯查询易语言代码
    Ubuntu搭建AI画图工具stable diffusion-webui
    【数据结构】算法的时间复杂度和空间复杂度
    OPengl学习——初识opengl
    使用 Windows Core Audio APIs 进行 Loopback Recording 并生成 WAV 文件
    可视化学习:如何用WebGL绘制3D物体
    【Samba】win 11 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接
    在线标定新思路!SST-Calib:最新Camera-Lidar时空同步标定算法(ITSC 2022)
    Android Jetpack之LifeCycle
    理论+实践,带你了解分布式训练
  • 原文地址:https://blog.csdn.net/iqanchao/article/details/133363230
  • 最新文章
  • 查得到,也要搬得走:Zvec 全量遍历的设计与实现
    让 Agent 搭建行情中心:DolphinX 数据接入自动化实践
    HotKey Platform — 热Key检测平台
    Python 常用统计图表实战指南
    重新认识结构体:为什么 STM32 库函数喜欢接收一大包参数
    中医竟是AI Harness祖师爷?
    Agent 记忆系统难在取舍
    CodeReview的本质分析
    PHP Trait 为何可能成为语言的关键特性
    如何自定义一个MyBatis插件
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号