Transmitter
Transmitter
cyber/transport/transmitter/transmitter.h
一个基类
Endpoint有如下数据成员:
数据类型 | 变量名字 | 说明 |
---|---|---|
bool | enabled_ | 当前终端是否启用 |
Identity | id_ | 每一个终端都有独一无二的id |
RoleAttributes | attr_ | 终端的属性,是一个proto文件 |
成员变量
Transmitter有如下数据成员:
数据类型 | 变量名字 | 说明 |
---|---|---|
uint64_t | seq_num_; | 当前消息的序列号,默认从0开始数 |
MessageInfo | msg_info_; | 要转发的消息信息 |
MessageInfo
是一个类,它有如下成员
数据类型 | 变量名字 | 说明 |
---|---|---|
Identity | sender_id_; | 要是这条消息的发送方id,就是继承来的Endpoint->id_ |
uint64_t | channel_id_ = 0; | 这条消息需要放入哪个channel |
uint64_t s | seq_num_ = 0; | 当前消息的序列号,与当前Transmitter的类成员seq_num_一致 |
Identity | spare_id_; |
重要函数
从上面可以看到,具体的转发工作由它的子类完成。
但是需要关注一下 PerfEventCache。这个稍后再讲
IntraTransmitter
指针传递,进程内通信
成员变量
数据类型 | 变量名字 | 说明 |
---|---|---|
unit64_t | channel_id_ | |
IntraDispatcherPtr | dispatcher_ |
重要函数
重点关注 IntraTransmitter< M>::Transmit即可,其他暂时不需要关注:
可以看到重要工作都是由 IntraDispatcherPtr完成的,这里只是起一个转发的作用
ShmTransmitter
共享内存,进程间通信
成员变量
数据类型 | 变量名字 | 说明 |
---|---|---|
SegmentPtr | segment_ |
|
uint64_t | channel_id_ |
|
uint64_t | host_id_ |
|
NotifierPtr | notifier_ |
|
重要函数
重点关注 ShmTransmitter< M>::Transmit即可,其他暂时不需要关注:
实现:
-
申请空间
-
写入数据
-
通知 or 记录了刚刚写入的数据信息,以后可以通过readableinfo来读取数据