diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-03-24 21:46:35 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-03-24 21:46:35 -0700 |
| commit | b4fa69e7a6ef540e7d6a918c88f2816fff6c0cf0 (patch) | |
| tree | 5a95331eca8355d12672052cb54aa654b034de87 /docs/reference/src/protocols | |
| parent | 12cc58cb5f9f205ed69c18fb65e386c1f004e2df (diff) | |
| download | nng-b4fa69e7a6ef540e7d6a918c88f2816fff6c0cf0.tar.gz nng-b4fa69e7a6ef540e7d6a918c88f2816fff6c0cf0.tar.bz2 nng-b4fa69e7a6ef540e7d6a918c88f2816fff6c0cf0.zip | |
Organization and content
Diffstat (limited to 'docs/reference/src/protocols')
| -rw-r--r-- | docs/reference/src/protocols/bus.md | 58 | ||||
| -rw-r--r-- | docs/reference/src/protocols/index.md | 1 |
2 files changed, 59 insertions, 0 deletions
diff --git a/docs/reference/src/protocols/bus.md b/docs/reference/src/protocols/bus.md new file mode 100644 index 00000000..8583ed65 --- /dev/null +++ b/docs/reference/src/protocols/bus.md @@ -0,0 +1,58 @@ +# BUS Protocol + +{{hi:protocol, _BUS_}} +The {{i:_BUS_ protocol}} provides for building mesh networks where +every peer is connected to every other peer. +In this protocol, each message sent by a node is sent to every one of +its directly connected peers. + +> [!TIP] +> Messages are only sent to directly connected peers. +> This means that in the event that a peer is connected indirectly, it will not +> receive messages. +> When using this protocol to build mesh networks, it +> is therefore important that a _fully-connected_ mesh network be constructed. + +All message delivery in this pattern is {{i:best-effort}}, which means that +peers may not receive messages. +Furthermore, delivery may occur to some, +all, or none of the directly connected peers. +(Messages are not delivered when peer nodes are unable to receive.) +Hence, send operations will never block; instead if the +message cannot be delivered for any reason it is discarded. + +> [!TIP] +> In order to minimize the likelihood of message loss, this protocol +> should not be used for high throughput communications. +> Furthermore, the more traffic _in aggregate_ that occurs across the topology, +> the more likely that message loss is to occur. + +## Socket Operations + +The [`nng_bus0_open()`](../api/nng_bus_open.md) functions create a bus socket. +This socket may be used to send and receive messages. +Sending messages will attempt to deliver to each directly connected peer. + +## Protocol Versions + +Only version 0 of this protocol is supported. +(At the time of writing, no other versions of this protocol have been defined.) + +## Protocol Options + +The _BUS_ protocol has no protocol-specific options. + +## Protocol Headers + +When using a _BUS_ socket in [raw mode](../overview/raw.md), received messages will +contain the incoming [pipe](../api/nng_pipe.md) ID as the sole element in the header. +If a message containing such a header is sent using a raw _BUS_ socket, then, +the message will be delivered to all connected pipes _except_ the one +identified in the header. +This behavior is intended for use with [device](../api/nng_device.md) +configurations consisting of just a single socket. +Such configurations are useful in the creation of rebroadcasters, and this +capability prevents a message from being routed back to its source. +If no header is present, then a message is sent to all connected pipes. + +When using normal (cooked mode) _BUS_ sockets, no message headers are present. diff --git a/docs/reference/src/protocols/index.md b/docs/reference/src/protocols/index.md new file mode 100644 index 00000000..8d9f7317 --- /dev/null +++ b/docs/reference/src/protocols/index.md @@ -0,0 +1 @@ +# Protocols |
