nanomsg next generation NNG  
Home GitHub Documentation

This documentation is for version v1.1.0 of nng, but the latest released version is v1.7.3. see the documentation for v1.7.3 for the most up-to-date information.


#include <nng/nng.h>

typedef struct nng_pipe_s nng_pipe;


An nng_pipe is a handle to a “pipe”, which can be thought of as a single connection. (In most cases this is actually the case — the pipe is an abstraction for a single TCP or IPC connection.) Pipes are associated with either the listener or dialer that created them, and therefore are also automatically associated with a single socket.

The nng_pipe structure is always passed by value (both for input parameters and return values), and should be treated opaquely. Passing structures this way ensures gives the compiler a chance to perform accurate type checks in functions passing values of this type.
Most applications should never concern themselves with individual pipes. However it is possible to access a pipe when more information about the source of a message is needed, or when more control is required over message delivery.

Pipe objects are created by dialers (nng_dialer objects) and listeners (nng_listener objects), which can be thought of as “owning” the pipe.

Pipe objects may be destroyed by the nng_pipe_close() function. They are also closed when their “owning” dialer or listener is closed, or when the remote peer closes the underlying connection.


A pipe may be initialized using the macro NNG_PIPE_INITIALIZER before it is opened, to prevent confusion with valid open pipes.

For example:

NNG Reference Manual vv1.1.0 © 2019 Staysail Systems, Inc, © 2018 Capitar IT Group BV
This document is supplied under the MIT License.
nanomsg™ and nng™ are trademarks of Garrett D'Amore.