= nng_dialer_getopt(3)
//
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This document is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
// file was obtained (LICENSE.txt).  A copy of the license may also be
// found online at https://opensource.org/licenses/MIT.
//

== NAME

nng_dialer_getopt - get dialer option

== SYNOPSIS

[source, c]
----
#include <nng/nng.h>

int nng_dialer_getopt(nng_dialer d, const char *opt, void *val, size_t *valszp);

int nng_dialer_getopt_bool(nng_dialer d, const char *opt, bool *bvalp);

int nng_dialer_getopt_int(nng_dialer d, const char *opt, int *ivalp);

int nng_dialer_getopt_ms(nng_dialer d, const char *opt, nng_duration *durp);

int nng_dialer_getopt_ptr(nng_dialer d, const char *opt, void **ptr);

int nng_dialer_setopt_size(nng_dialer d, const char *opt, size_t *zp);

int nng_dialer_getopt_uint64(nng_dialer d, const char *opt, uint64_t *u64p);
----

== DESCRIPTION

(((options, dialer)))
The `nng_dialer_getopt()` functions are used to retrieve option values for
the <<nng_dialer.5#,dialer>> _d_.
The actual options that may be retrieved in this way
vary, and many are documented in <<nng_options.5#,nng_options(5)>>.

Additionally some transport-specific options and protocol-specific options
are documented with the transports and protocols themselves.

=== Forms

In all of these forms, the option _opt_ is retrieved from the dialer _d_.
The forms vary based on the type of the option they take.

TIP: Generally, it will be easier to use one of the typed versions of this
function.

NOTE: No validation that the option is actually of the associated type is
performed, so the caller must take care to use the *correct* typed form.

The details of the type, size, and semantics of the option will depend
on the actual option, and will be documented with the option itself.

==== `nng_dialer_getopt()`
This function is untyped and can be used to retrieve the value of any option.
The caller must store a pointer to a buffer to receive the value in _val_,
and the size of the buffer shall be stored at the location referenced
by _valszp_.

When the function returns, the actual size of the data copied (or that
would have been copied if sufficient space were present) is stored at
the location referened by _valszp_.
If the caller's buffer is not large
enough to hold the entire object, then the copy is truncated.
Therefore the caller should validate that the returned size in _valszp_ does not
exceed the original buffer size to check for truncation.

It is acceptable to pass `NULL` for _val_ if the value in _valszp_ is zero.
This can be used to determine the size of the buffer needed to receive
the object.

==== `nng_dialer_getopt_bool()`
This function is for options which take a boolean (`bool`).
The value will be stored at _ivalp_.

==== `nng_dialer_getopt_int()`
This function is for options which take an integer (`int`).
The value will be stored at _ivalp_.

==== `nng_dialer_getopt_ms()`
This function is used to retrieve time <<nng_duration.5#,durations>>
(such as timeouts), stored in _durp_ as a number of milliseconds.
(The special value ((`NNG_DUR_INFINITE`)) means an infinite amount of time, and
the special value ((`NNG_DUR_DEFAULT`)) means a context-specific default.)

==== `nng_dialer_getopt_ptr()`
This function is used to retrieve a pointer, _ptr_, to structured data.
The data referenced by _ptr_ is generally managed using other functions.
Note that this form is somewhat special in that the object is generally
not copied, but instead the *pointer* to the object is copied.

==== `nng_dialer_getopt_size()`
This function is used to retrieve a size into the pointer _zp_,
typically for buffer sizes, message maximum sizes, and similar options.

==== `nng_dialer_getopt_uint64()`
This function is used to retrieve a 64-bit unsigned value into the value
referenced by _u64p_.
This is typically used for options related to identifiers, network
numbers, and similar.

== RETURN VALUES

These functions returns 0 on success, and non-zero otherwise.

== ERRORS

`NNG_ECLOSED`:: Parameter _d_ does not refer to an open dialer.
`NNG_ENOTSUP`:: The option _opt_ is not supported.
`NNG_EWRITEONLY`:: The option _opt_ is write-only.

== SEE ALSO

<<nng_dialer_create.3#,nng_dialer_create(3)>>
<<nng_dialer_setopt.3#,nng_dialer_setopt(3)>>
<<nng_strerror.3#,nng_strerror(3)>>,
<<nng_dialer.5#,nng_dialer(5)>>,
<<nng_duration.5#,nng_duration(5)>>,
<<nng_options.5#,nng_options(5)>>,
<<nng.7#,nng(7)>>
