| nn_symbol_info(3) |
| ================= |
| |
| NAME |
| ---- |
| nn_symbol_info - query the names and properties of nanomsg symbols |
| |
| |
| SYNOPSIS |
| -------- |
| *#include <nanomsg/nn.h>* |
| |
| *int nn_symbol_info (int 'i', struct nn_symbol_properties '*buf', int 'buflen');* |
| |
| |
| DESCRIPTION |
| ----------- |
| Retrieves the symbol name and value at index 'i'. Indices start at 0. An index |
| has no significance to its associated symbol; the mappings may change between |
| library versions. |
| |
| The nn_symbol_properties has the following definition: |
| |
| ---- |
| struct nn_symbol_properties { |
| |
| /* The constant value */ |
| int value; |
| |
| /* The constant name */ |
| const char* name; |
| |
| /* The constant namespace, or zero for namespaces themselves */ |
| int ns; |
| |
| /* The option type for socket option constants */ |
| int type; |
| |
| /* The unit for the option value for socket option constants */ |
| int unit; |
| }; |
| ---- |
| |
| More structure members may be added in future, but input pointer will be |
| written only up to 'buflen' so ABI is forward-compatible. |
| |
| Typically a client will iterate through the symbols until nn_symbol_info |
| returns NULL in order to collect all the symbols. |
| |
| All symbols exposed by 'nn_symbol_info' are available directly in the C API, |
| generally as preprocessor macros. Thus, this function is useful mostly for |
| language bindings that can't parse the header file and rely on retrieving the |
| symbols in the runtime. |
| |
| Note that the NN_MSG symbol is not exported by the 'nn_symbol_info' function. |
| First, it is a pointer rather than an integer; second, the symbol is not |
| supposed to be exported from language bindings to the user. Instead, language |
| bindings should provide the zero-copy functionality in a language-specific way, |
| if at all (zero-copy functionality may not make sense for some |
| languages/bindings). |
| |
| AVAILABLE NAMESPACES |
| -------------------- |
| *NN_NS_NAMESPACE*:: |
| Equals to zero and denotes the NN_NS_* constants themselves |
| *NN_NS_VERSION*:: |
| Nanomsg version constants |
| *NN_NS_DOMAIN*:: |
| Socket domain (or address family) constants AF_SP, AF_SP_RAW |
| *NN_NS_TRANSPORT*:: |
| Transport name constants (used for socket options mainly) |
| *NN_NS_PROTOCOL*:: |
| Socket protocol constants |
| *NN_NS_OPTION_LEVEL*:: |
| Socket option level constants (NN_SOL_SOCKET) |
| *NN_NS_SOCKET_OPTION*:: |
| Socket options for NN_SOL_SOCKET level |
| *NN_NS_TRANSPORT_OPTION*:: |
| Socket options for transport level (used with transport constants) |
| *NN_NS_OPTION_TYPE*:: |
| The option types (described below) |
| *NN_NS_FLAG*:: |
| The nn_send/nn_recv flags (only NN_DONTWAIT for now) |
| *NN_NS_ERROR*:: |
| The errno values |
| *NN_NS_LIMIT*:: |
| Various nanomsg limits (only NN_SOCKADDR_MAX for now) |
| |
| AVAILABLE OPTION TYPES |
| ---------------------- |
| *NN_TYPE_NONE*:: |
| No type, is returned for constants that are not socket options |
| *NN_TYPE_INT*:: |
| The integer type |
| *NN_TYPE_STR*:: |
| String (char *) type |
| |
| More types may be added in future nanomsg. You may enumerate all of them using |
| the 'nn_symbol_info' itself by checking 'NN_NS_OPTION_TYPE' namespace. |
| |
| AVAILABLE OPTION UNITS |
| ---------------------- |
| *NN_UNIT_NONE*:: |
| No unit, is returned for constants that are not socket options, or do not have |
| any meaningful unit (strings, integer values) |
| *NN_UNIT_BYTES*:: |
| The option value is expressed in bytes |
| *NN_UNIT_MILLISECONDS*:: |
| The option value is expressed in milliseconds |
| *NN_UNIT_PRIORITY*:: |
| The option value is a priority, an integer from 1 to 16 |
| *NN_UNIT_BOOLEAN*:: |
| The option value is boolean, an integer 0 or 1 |
| |
| More types may be added in future nanomsg. You may enumerate all of them using |
| the 'nn_symbol_info' itself by checking 'NN_NS_OPTION_TYPE' namespace. |
| |
| |
| RETURN VALUE |
| ------------ |
| If 'i' is valid, returns the number of bytes stored at the structure. The |
| maximum value that can be returned is 'buflen'. |
| |
| If 'i' is out-of-range, nn_symbol_info returns zero. |
| |
| |
| EXAMPLE |
| ------- |
| |
| ---- |
| int i; |
| for (i = 0; ; ++i) { |
| struct nn_symbol_properties sym; |
| int rc = nn_symbol_info (i, &sym, sizeof (sym)); |
| if(rc == 0) |
| break; |
| assert (rc == sizeof (sym)); |
| printf ("'%s' = %d\n", sym->name, sym->value); |
| } |
| ---- |
| |
| SEE ALSO |
| -------- |
| linknanomsg:nn_symbol[3] |
| linknanomsg:nn_errno[3] |
| linknanomsg:nn_strerror[3] |
| linknanomsg:nanomsg[7] |
| |
| |
| AUTHORS |
| ------- |
| Paul Colomiets <paul@colomiets.name> |