mm_mux_demux package from message_multiplexing repomessage_multiplexing mm_core_msgs mm_eigen_msgs mm_messages mm_mux_demux mm_radio |
|
Package Summary
Tags | No category tags. |
Version | 0.2.4 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stonier/message_multiplexing.git |
VCS Type | git |
VCS Version | indigo |
Last Updated | 2016-10-23 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Daniel Stonier
Authors
- Daniel Stonier
PubSub (De)MultiPlexers
These classes allow a regular nanomsg pubsub system to be mux’d on the publisher side and demux’d on the subscriber side. On most systems you wouldn’t worry about it (c.f. ros which creates a port for every pub/sub connection), however for embedded systems this gets expensive - the extra creation of ports does get somewhat costly.
Overview
- Use a packet id (unsigned int) for each type of publication.
- Decoupled marshalling code in message_multiplexing::Message
classes. - Mux and demux registered with a name/url pair. Pubs and subs connect by name.
- Publishers can publish from anywhere.
- Only one subscriber per packet id
Classes
- Message : basic serialiser/deserialiser for a particular message type
- Publisher : can publish any/all packet types
- Subscriber : single packet type receiver which will convert a received buffer and relay to a user callback
- MessageRegistry : global enabler for managing the mux/demux’s and their connection with pubs/subs.
Socket Address Types
- IntraProcess :
inproc://a
- InterProcess :
ipc:///tmp/test.ipc
- InterPC :
tcp://server001:5560
Roadmap
Todos:
- zero-copy buffer allocations via nn_allocmsg for nanomsg transport
- as reduce cost of resizing buffers on the way in via the publisher (spec. for images, maybe c++11 std::move?)
- transports - mux and demux should separate the actual underlying transport (nanomsg/serial…)
- handle use case in which packets are gathered and sent (e.g. kobuki style)
- optional flag when sending that belays the send.
split packet signature from packet id/payload lengthloadable { packet_id : data_type } registries for pubs and subs to check againstswitch to ecl byte array converters inimpl/builders.hpp
mux should create muxes on the fly like demux- ~~publisher to encode, then send a buffer to the mux which relays across the wire ~~
convert the builders to specific Message class types with encode/decode functionality
Maybe dos:
- Relax the one subscriber per packet id constraint.
Testing
You can test the subscriber end of a connection without programming using nanocat
. An example:
> nanocat --sub --connect tcp://192.168.1.3:5555 --ascii
Changelog
0.2.0 (2014-09-17)
- nanomsg pipeline and service demo programs
- mux/demux static api renamed to allow cross-class templatisation calls
0.1.1 (2014-09-12)
- publisher and subscriber frontends.
- multiplexer and demultiplexer.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ecl_build | |
ecl_command_line | |
ecl_containers | |
ecl_formatters | |
ecl_threads | |
ecl_time | |
ecl_utilities | |
mm_core_msgs | |
mm_messages | |
nanomsg | |
catkin |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
message_multiplexing |
Launch files
Messages
Services
Plugins
Recent questions tagged mm_mux_demux at Robotics Stack Exchange
mm_mux_demux package from message_multiplexing repomessage_multiplexing mm_core_msgs mm_eigen_msgs mm_messages mm_mux_demux mm_radio |
|
Package Summary
Tags | No category tags. |
Version | 0.2.4 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/stonier/message_multiplexing.git |
VCS Type | git |
VCS Version | release/0.2-kinetic-melodic |
Last Updated | 2016-10-23 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Daniel Stonier
Authors
- Daniel Stonier
PubSub (De)MultiPlexers
These classes allow a regular nanomsg pubsub system to be mux’d on the publisher side and demux’d on the subscriber side. On most systems you wouldn’t worry about it (c.f. ros which creates a port for every pub/sub connection), however for embedded systems this gets expensive - the extra creation of ports does get somewhat costly.
Overview
- Use a packet id (unsigned int) for each type of publication.
- Decoupled marshalling code in message_multiplexing::Message
classes. - Mux and demux registered with a name/url pair. Pubs and subs connect by name.
- Publishers can publish from anywhere.
- Only one subscriber per packet id
Classes
- Message : basic serialiser/deserialiser for a particular message type
- Publisher : can publish any/all packet types
- Subscriber : single packet type receiver which will convert a received buffer and relay to a user callback
- MessageRegistry : global enabler for managing the mux/demux’s and their connection with pubs/subs.
Socket Address Types
- IntraProcess :
inproc://a
- InterProcess :
ipc:///tmp/test.ipc
- InterPC :
tcp://server001:5560
Roadmap
Todos:
- zero-copy buffer allocations via nn_allocmsg for nanomsg transport
- as reduce cost of resizing buffers on the way in via the publisher (spec. for images, maybe c++11 std::move?)
- transports - mux and demux should separate the actual underlying transport (nanomsg/serial…)
- handle use case in which packets are gathered and sent (e.g. kobuki style)
- optional flag when sending that belays the send.
split packet signature from packet id/payload lengthloadable { packet_id : data_type } registries for pubs and subs to check againstswitch to ecl byte array converters inimpl/builders.hpp
mux should create muxes on the fly like demux- ~~publisher to encode, then send a buffer to the mux which relays across the wire ~~
convert the builders to specific Message class types with encode/decode functionality
Maybe dos:
- Relax the one subscriber per packet id constraint.
Testing
You can test the subscriber end of a connection without programming using nanocat
. An example:
> nanocat --sub --connect tcp://192.168.1.3:5555 --ascii
Changelog
0.2.0 (2014-09-17)
- nanomsg pipeline and service demo programs
- mux/demux static api renamed to allow cross-class templatisation calls
0.1.1 (2014-09-12)
- publisher and subscriber frontends.
- multiplexer and demultiplexer.
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ecl_build | |
ecl_command_line | |
ecl_containers | |
ecl_formatters | |
ecl_threads | |
ecl_time | |
ecl_utilities | |
mm_core_msgs | |
mm_messages | |
nanomsg | |
catkin |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
message_multiplexing |