summaryrefslogtreecommitdiff
path: root/doc/xs_shutdown.txt
blob: 89439335228282ddc88194840f2ae880a536daa3 (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
xs_bind(3)
==========


NAME
----
xs_shutdown - shut down part of the socket


SYNOPSIS
--------
*int xs_shutdown (void '*socket', int 'how');*


DESCRIPTION
-----------
This function partially closes the socket. It disconnects or unbinds an endpoint
previously connected or bound by _xs_bind()_ or _xs_connect()_. 'how' parameter
is the endpoint ID as returned by _xs_bind()_ or _xs_connect()_.

Endpoint shutdown honours 'linger' socket option. I.e. if there are any pending
outbound messages, Crossroads will try to push them to the network for the
specified amount of time before giving up.

Note: inproc endpoints don't support partial shutdown at the moment.

RETURN VALUE
------------
The _xs_shutdown()_ function shall return zero if successful. Otherwise it
shall return `-1` and set 'errno' to one of the values defined below.

ERRORS
------
*EINVAL*::
The endpoint ID supplied doesn't correspond to any active endpoint.
*ENOTSUP*::
Specified endpoint doesn't support partial shutdown.
*ETERM*::
The 'context' associated with the specified 'socket' was terminated.
*ENOTSOCK*::
The provided 'socket' was invalid.


EXAMPLE
-------
.Binding socket to an endpoint, then unbinding it
----
/* Create a socket */
void *socket = xs_socket (context, XS_PUB);
assert (socket);
/* Bind it to a TCP endpoint */
int id = xs_bind (socket, "tcp://*:5555");
assert (id != -1);
/* Unbind the socket from the endpoint */
rc = xs_shutdown (socket, id);
assert (rc == 0);
----


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


AUTHORS
-------
This manual page was written by Martin Sustrik <sustrik@250bpm.com>.