Socket Transport (Experimental)
Description
The socket transport supports communication between
peers across arbitrary BSD sockets, such as those that are
created with nng_socket_pair
.
This transport only supports listeners, using nng_listener_create
.
note
Attempts to create dialers using this transport will result in NNG_ENOTSUP
.
The socket file descriptor is passed to the listener using
the NNG_OPT_SOCKET_FD
option (as an integer).
Setting this option will cause the listener to create a pipe
backed by the file descriptor.
The protocol between peers using this transport is compatible with the protocol used for the tcp transport, but this is an implementation detail and subject to change without notice. 1
note
This transport is experimental, and at present is only supported on POSIX platforms. 2
URL Format
This transport uses the URL socket://
, without further qualification.
Socket Address
The socket address will be of family NNG_AF_UNSPEC
.
There are no further socket details available.
Transport Options
The following transport options are supported by this transport.
Option | Type | Description |
---|---|---|
NNG_OPT_SOCKET_FD | int | Write-only option, that may be set multiple times on a listener. Each time this is set, the listener will create a pipe backed by the given file descriptor passed as an argument. |
NNG_OPT_PEER_GID | int | Read only option, returns the group ID of the process at the other end of the socket, if platform supports it. |
NNG_OPT_PEER_PID | int | Read only option, returns the processed ID of the process at the other end of the socket, if platform supports it. |
NNG_OPT_PEER_UID | int | Read only option, returns the user ID of the process at the other end of the socket, if platform supports it. |
NNG_OPT_PEER_ZONEID | int | Read only option, returns the zone ID of the process at the other end of the socket, if platform supports it. |
note
The NNG_OPT_PEER_GID
, NNG_OPT_PEER_PID
, NNG_OPT_PEER_UID
, and NNG_OPT_PEER_ZONEID
options depend on platform support.
These behave in exactly the same fashion as for the ipc transport.
1: Specifically it is not compatible with the ipc transport.
2: Windows lacks a suitable socketpair
equivalent function we could use.