summaryrefslogtreecommitdiff
path: root/doc/xs_inproc.txt
blob: f0dae94ee21848eda45586d6fa4009dfbc917bea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
xs_inproc(7)
============


NAME
----
xs_inproc - local in-process (inter-thread) transport


SYNOPSIS
--------
The in-process transport passes messages via memory directly between threads
sharing a single 'context'.

ADDRESSING
----------
A Crossroads address string consists of two parts as follows:
'transport'`://`'endpoint'. The 'transport' part specifies the underlying
transport protocol to use, and for the in-process transport shall be set to
`inproc`.  The meaning of the 'endpoint' part for the in-process transport is
defined below.


Assigning a local address to a socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When assigning a local address to a 'socket' using _xs_bind()_ with the
'inproc' transport, the 'endpoint' shall be interpreted as an arbitrary string
identifying the 'name' to create. The 'name' must be unique within the
'context' associated with the 'socket' and may be up to 256 characters in
length.  No other restrictions are placed on the format of the 'name'.


Connecting a socket
~~~~~~~~~~~~~~~~~~~
When connecting a 'socket' to a peer address using _xs_connect()_ with the
'inproc' transport, the 'endpoint' shall be interpreted as an arbitrary string
identifying the 'name' to connect to.  The 'name' must have been previously
created by assigning it to at least one 'socket' within the same 'context'
as the 'socket' being connected.


WIRE FORMAT
-----------
Not applicable.


EXAMPLES
--------
.Assigning a local address to a socket
----
/* Assign the in-process name "#1" */
rc = xs_bind(socket, "inproc://#1");
assert (rc != -1);
/* Assign the in-process name "my-endpoint" */
rc = xs_bind(socket, "inproc://my-endpoint");
assert (rc != -1);
----

.Connecting a socket
----
/* Connect to the in-process name "#1" */
rc = xs_connect(socket, "inproc://#1");
assert (rc != -1);
/* Connect to the in-process name "my-endpoint" */
rc = xs_connect(socket, "inproc://my-endpoint");
assert (rc != -1);
----


SEE ALSO
--------
linkxs:xs_bind[3]
linkxs:xs_connect[3]
linkxs:xs_ipc[7]
linkxs:xs_tcp[7]
linkxs:xs_pgm[7]
linkxs:xs[7]


AUTHORS
-------
The Crossroads documentation was written by Martin Sustrik <sustrik@250bpm.com>
and Martin Lucina <martin@lucina.net>.