From 9b156d28f1a830cc7339ab9993991ef5dd0b0fed Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 30 Mar 2024 15:57:15 -0700 Subject: Organization changes abound. --- docs/reference/src/tran/inproc.md | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 docs/reference/src/tran/inproc.md (limited to 'docs/reference/src/tran/inproc.md') diff --git a/docs/reference/src/tran/inproc.md b/docs/reference/src/tran/inproc.md new file mode 100644 index 00000000..bf5ae8d6 --- /dev/null +++ b/docs/reference/src/tran/inproc.md @@ -0,0 +1,49 @@ +# INPROC Transport + +The {{i:*inproc* transport}}{{hi:*inproc*}}{{intra-process}} provides communication support between +sockets within the same process. +This may be used as an alternative +to slower transports when data must be moved within the same process. + +This transport tries hard to avoid copying data, and thus is very +light-weight. + +## URI Format + +This transport uses URIs using the scheme {{i:`inproc://`}}, followed by +an arbitrary string of text, terminated by a `NUL` byte. + +Multiple URIs can be used within the +same application, and they will not interfere with one another. + +Two applications may also use the same URI without interfering with each +other, and they will be unable to communicate with each other using +that URI. + +## Socket Address + +When using an [`nng_sockaddr`](../api/nng_sockaddr.md) structure, +the actual structure is of type +[`nng_sockaddr_inproc`](../api/nng_sockaddr_inproc.md). + +## Transport Options + +The _inproc_ transport has no special options. + +> [!NOTE] +> While _inproc_ accepts the option [`NNG_OPT_RECVMAXSZ`] for +> compatibility, the value of the option is ignored with no enforcement. +> As _inproc_ peers are in the same address space, they are implicitly +> trusted, so the protection afforded by `NNG_OPT_RECVMAXSZ` is unnecessary. + +## Mixing Implementations + +When mixing the _NNG_ library with other implementations of these +protocols in the same process (such as the _mangos_ +or _libnanomsg_ implementations), it will not be possible to utilize +the _inproc_ transport to communicate across this boundary. + +This limitation also extends to using different instances of the _NNG_ +library within the same process. + +{{#include ../refs.md}} -- cgit v1.2.3-70-g09d2