【文件属性】:
文件名称:ipc-pubsub:简化的POSIX共享内存上的IPC,带有PublisherSubscriber接口
文件大小:38KB
文件格式:ZIP
更新时间:2021-02-14 15:45:54
C++
ipc-pubsub
具有发布者/订阅者接口的POSIX共享内存上的简化IPC。
设计须知
思想
Unix / Posix队列需要调整以具有合理数量的可用文件描述符。 我希望不要这样。
UDP需要正确的网络设置,这似乎并不理想
信号量不允许任何数据,这意味着必须通过复杂的共享内存结构(包括有关可用节点的元数据)发送所有实际有效载荷
管道的状态有些复杂,可能导致虚假阻塞管道中的数据过多
设计
单个共享内存对象保留有索引和运行中消息
添加节点
写锁定元数据文件
读取当前的元数据
将节点信息附加到数据
写元数据
解锁元数据文件
发送信息
(可选)检索并使用shm缓冲区:: Allocate()-> ShmBuffer();
Send(ShmBuffer)或Send(data,len)
写锁定元数据文件
读取当前的元数据
附加到适当的飞行队列
解锁元数据文件
sem_up()在所有读者上
【文件预览】:
ipc-pubsub-main
----BUILD(0B)
----bazel()
--------BUILD(0B)
--------external()
----LICENSE(11KB)
----src()
--------ponger.cc(704B)
--------unix_dgram_writer.cc(4KB)
--------IPCNode.cc(9KB)
--------pinger.cc(876B)
--------UDSServer.h(1KB)
--------BUILD(3KB)
--------UDSClient.cc(5KB)
--------ipc_node_test.cc(177B)
--------UDSServer.cc(6KB)
--------unix_dgram_reader.cc(5KB)
--------IPCNode.h(2KB)
--------TopologyServer.h(1KB)
--------topology_node.cc(1KB)
--------TopologyManager.cc(9KB)
--------Utils.cc(973B)
--------TopologyManager.h(3KB)
--------Utils.h(355B)
--------test_topology_manager.cc(5KB)
--------standalone_subscriber.cc(5KB)
--------standalone_publisher.cc(5KB)
--------UDSClient.h(1KB)
--------TopologyServer.cc(6KB)
----.clang-format(5KB)
----.bazelrc(640B)
----protos()
--------BUILD(422B)
--------index.proto(1KB)
----README.md(1KB)
----WORKSPACE(2KB)