| /* |
| Copyright (c) 2013 Evan Wies <evan@neomantra.net> |
| Copyright (c) 2013 GoPivotal, Inc. All rights reserved. |
| |
| Permission is hereby granted, free of charge, to any person obtaining a copy |
| of this software and associated documentation files (the "Software"), |
| to deal in the Software without restriction, including without limitation |
| the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| and/or sell copies of the Software, and to permit persons to whom |
| the Software is furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be included |
| in all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
| FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
| IN THE SOFTWARE. |
| */ |
| |
| #include "../nn.h" |
| |
| #include "../inproc.h" |
| #include "../ipc.h" |
| #include "../tcp.h" |
| |
| #include "../pair.h" |
| #include "../pubsub.h" |
| #include "../reqrep.h" |
| #include "../pipeline.h" |
| #include "../survey.h" |
| #include "../bus.h" |
| |
| struct sym_value_name { |
| int value; |
| const char* name; |
| }; |
| |
| static const struct sym_value_name sym_value_names [] = { |
| |
| {NN_VERSION_CURRENT, "NN_VERSION_CURRENT"}, |
| {NN_VERSION_REVISION, "NN_VERSION_REVISION"}, |
| {NN_VERSION_AGE, "NN_VERSION_AGE"}, |
| |
| {AF_SP, "AF_SP"}, |
| {AF_SP_RAW, "AF_SP_RAW"}, |
| |
| {NN_INPROC, "NN_INPROC"}, |
| {NN_IPC, "NN_IPC"}, |
| {NN_TCP, "NN_TCP"}, |
| |
| {NN_PAIR, "NN_PAIR"}, |
| {NN_PUB, "NN_PUB"}, |
| {NN_SUB, "NN_SUB"}, |
| {NN_REP, "NN_REP"}, |
| {NN_REQ, "NN_REQ"}, |
| {NN_PUSH, "NN_PUSH"}, |
| {NN_PULL, "NN_PULL"}, |
| {NN_SURVEYOR, "NN_SURVEYOR"}, |
| {NN_RESPONDENT, "NN_RESPONDENT"}, |
| {NN_BUS, "NN_BUS"}, |
| |
| {NN_SOCKADDR_MAX, "NN_SOCKADDR_MAX"}, |
| |
| {NN_SOL_SOCKET, "NN_SOL_SOCKET"}, |
| |
| {NN_LINGER, "NN_LINGER"}, |
| {NN_SNDBUF, "NN_SNDBUF"}, |
| {NN_RCVBUF, "NN_RCVBUF"}, |
| {NN_SNDTIMEO, "NN_SNDTIMEO"}, |
| {NN_RCVTIMEO, "NN_RCVTIMEO"}, |
| {NN_RECONNECT_IVL, "NN_RECONNECT_IVL"}, |
| {NN_RECONNECT_IVL_MAX, "NN_RECONNECT_IVL_MAX"}, |
| {NN_SNDPRIO, "NN_SNDPRIO"}, |
| {NN_SNDFD, "NN_SNDFD"}, |
| {NN_RCVFD, "NN_RCVFD"}, |
| {NN_DOMAIN, "NN_DOMAIN"}, |
| {NN_PROTOCOL, "NN_PROTOCOL"}, |
| {NN_IPV4ONLY, "NN_IPV4ONLY"}, |
| |
| {NN_SUB_SUBSCRIBE, "NN_SUB_SUBSCRIBE"}, |
| {NN_SUB_UNSUBSCRIBE, "NN_SUB_UNSUBSCRIBE"}, |
| {NN_REQ_RESEND_IVL, "NN_REQ_RESEND_IVL"}, |
| {NN_SURVEYOR_DEADLINE, "NN_SURVEYOR_DEADLINE"}, |
| {NN_TCP_NODELAY, "NN_TCP_NODELAY"}, |
| |
| {NN_DONTWAIT, "NN_DONTWAIT"}, |
| |
| {EADDRINUSE, "EADDRINUSE"}, |
| {EADDRNOTAVAIL, "EADDRNOTAVAIL"}, |
| {EAFNOSUPPORT, "EAFNOSUPPORT"}, |
| {EAGAIN, "EAGAIN"}, |
| {EBADF, "EBADF"}, |
| {ECONNREFUSED, "ECONNREFUSED"}, |
| {EFAULT, "EFAULT"}, |
| {EFSM, "EFSM"}, |
| {EINPROGRESS, "EINPROGRESS"}, |
| {EINTR, "EINTR"}, |
| {EINVAL, "EINVAL"}, |
| {EMFILE, "EMFILE"}, |
| {ENAMETOOLONG, "ENAMETOOLONG"}, |
| {ENETDOWN, "ENETDOWN"}, |
| {ENOBUFS, "ENOBUFS"}, |
| {ENODEV, "ENODEV"}, |
| {ENOMEM, "ENOMEM"}, |
| {ENOPROTOOPT, "ENOPROTOOPT"}, |
| {ENOTSOCK, "ENOTSOCK"}, |
| {ENOTSUP, "ENOTSUP"}, |
| {EPROTO, "EPROTO"}, |
| { EPROTONOSUPPORT, "EPROTONOSUPPORT"}, |
| {ETERM, "ETERM"}, |
| {ETIMEDOUT, "ETIMEDOUT"}, |
| #ifdef NN_HAVE_WINDOWS |
| {EACCES, "EACCES" }, |
| {ECONNABORTED, "ECONNABORTED"}, |
| {ECONNRESET, "ECONNRESET"}, |
| {EHOSTUNREACH, "EHOSTUNREACH"}, |
| {EMSGSIZE, "EMSGSIZE"}, |
| {ENETRESET, "ENETRESET"}, |
| {ENETUNREACH, "ENETUNREACH"}, |
| {ENOTCONN, "ENOTCONN"}, |
| #endif |
| }; |
| |
| const int SYM_VALUE_NAMES_LEN = (sizeof (sym_value_names) / |
| sizeof (sym_value_names [0])); |
| |
| const char *nn_symbol (int i, int *value) |
| { |
| const struct sym_value_name *svn; |
| if (i < 0 || i >= SYM_VALUE_NAMES_LEN) { |
| errno = EINVAL; |
| return NULL; |
| } |
| |
| svn = &sym_value_names [i]; |
| if (value) |
| *value = svn->value; |
| return svn->name; |
| } |
| |