xs_setctxopt(3)
===============


NAME
----

xs_setctxopt - set Crossroads context options


SYNOPSIS
--------
*int xs_setctxopt (void '*context', int 'option_name', const void '*option_value', size_t 'option_len');*


DESCRIPTION
-----------
The _xs_setctxopt()_ function shall set the option specified by the
'option_name' argument to the value pointed to by the 'option_value'
argument, for the Crossroads context pointed to by the 'context' argument.
The 'option_len' argument is the size of the option value in bytes.

CAUTION: Context options take effect only if set with _xs_setctxopt()_
prior to creating the first socket in a given 'context' with _xs_socket()_.

The following options can be set with the _xs_setctxopt()_ function:


XS_MAX_SOCKETS: Set maximum number of sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'XS_MAX_SOCKETS' option shall set the maximum nuber of sockets that can
be simultaneously active in the given 'context'.

[horizontal]
Option value type:: int
Option value unit:: sockets
Default value:: 512

XS_IO_THREADS: Set number of worker threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'XS_IO_THREADS' option shall set the size of the thread pool created by
the given 'context' to handle I/O operations. The minimum value for this
option is `1`.

[horizontal]
Option value type:: int
Option value unit:: threads
Default value:: 1

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


ERRORS
------
*EINVAL*::
The requested option _option_name_ is unknown, or the requested _option_len_ or
_option_value_ is invalid.
*EFAULT*::
The provided 'context' was invalid.

EXAMPLE
-------
.Setting the number of I/O threads for a context to four.
----
void *context = xs_init ();
int io_threads = 4;
rc = xs_setctxopt (context, XS_IO_THREADS, &io_threads, sizeof (io_threads));
assert (rc == 0);
/* The above call MUST be called before any socket is created in context */
void *socket = xs_socket (context, XS_PUB);
----

SEE ALSO
--------
linkxs:xs_init[3]
linkxs:xs[7]


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