= nng_bus(7)
==========
:doctype: manpage
:manmanual: nng
:mansource: nng
:copyright: Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] + \
            Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV] + \
            {blank} + \
            This document is supplied under the terms of the \
            https://opensource.org/licenses/MIT[MIT License].

== NAME

nng_bus - bus protocol

== SYNOPSIS

[source,c]
----------
#include <nng/protocol/bus0/bus.h>

int nng_bus0_open(nng_socket *s);
----------

== DESCRIPTION

The _nng_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 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()` call creates 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 _nng_bus_ protocol has no protocol-specific options.

=== Protocol Headers

The _nng_bus_ protocol has no protocol-specific headers.
    
== SEE ALSO

<<nng#,nng(7)>>

== COPYRIGHT

{copyright}