1 //        Copyright DarkRiDDeR (Roman Barinov) 2020.
2 // Distributed under the Boost Software License, Version 1.0.
3 //       (See accompanying file LICENSE or copy at
4 //          http://www.boost.org/LICENSE_1_0.txt)
5 
6 module bindbc.nng.binddynamic;
7 
8 
9 version(BindNNG_Static) {}
10 else version = BindNNG_Dynamic;
11 
12 version(BindNNG_Dynamic):
13 
14 import bindbc.loader;
15 import bindbc.nng.types;
16 
17 
18 
19 extern (C) @trusted @nogc nothrow {
20     // nng.h:
21     alias pnng_fini = void function();
22     alias pnng_close = int function(nng_socket);
23     alias pnng_socket_id = int function(nng_socket);
24     alias pnng_closeall = void function();
25     alias pnng_setopt = int function(nng_socket, const(char)* , const void *, size_t);
26     alias pnng_setopt_bool = int function(nng_socket, const(char)* , bool);
27     alias pnng_setopt_int = int function(nng_socket, const(char)* , int);
28     alias pnng_setopt_ms = int function(nng_socket, const(char)* , nng_duration);
29     alias pnng_setopt_size = int function(nng_socket, const(char)* , size_t);
30     alias pnng_setopt_uint64 = int function(nng_socket, const(char)* , uint64_t);
31     alias pnng_setopt_string = int function(nng_socket, const(char)* , const(char)* );
32     alias pnng_setopt_ptr = int function(nng_socket, const(char)* , void *);
33     alias pnng_getopt = int function(nng_socket, const(char)* , void *, size_t *);
34     alias pnng_getopt_bool = int function(nng_socket, const(char)* , bool *);
35     alias pnng_getopt_int = int function(nng_socket, const(char)* , int *);
36     alias pnng_getopt_ms = int function(nng_socket, const(char)* , nng_duration *);
37     alias pnng_getopt_size = int function(nng_socket, const(char)* , size_t *);
38     alias pnng_getopt_uint64 = int function(nng_socket, const(char)* , uint64_t *);
39     alias pnng_getopt_ptr = int function(nng_socket, const(char)* , void **);
40     alias pnng_getopt_string = int function(nng_socket, const(char)* , char **);
41     alias pnng_socket_set = int function(nng_socket, const(char)* , const void *, size_t);
42     alias pnng_socket_set_bool = int function(nng_socket, const(char)* , bool);
43     alias pnng_socket_set_int = int function(nng_socket, const(char)* , int);
44     alias pnng_socket_set_size = int function(nng_socket, const(char)* , size_t);
45     alias pnng_socket_set_uint64 = int function(nng_socket, const(char)* , uint64_t);
46     alias pnng_socket_set_string = int function(nng_socket, const(char)* , const(char)* );
47     alias pnng_socket_set_ptr = int function(nng_socket, const(char)* , void *);
48     alias pnng_socket_set_ms = int function(nng_socket, const(char)* , nng_duration);
49     alias pnng_socket_set_addr = int function(nng_socket, const(char)* , const nng_sockaddr *);
50     alias pnng_socket_get = int function(nng_socket, const(char)* , void *, size_t *);
51     alias pnng_socket_get_bool = int function(nng_socket, const(char)* , bool *);
52     alias pnng_socket_get_int = int function(nng_socket, const(char)* , int *);
53     alias pnng_socket_get_size = int function(nng_socket, const(char)* , size_t *);
54     alias pnng_socket_get_uint64 = int function(nng_socket, const(char)* , uint64_t *);
55     alias pnng_socket_get_string = int function(nng_socket, const(char)* , char **);
56     alias pnng_socket_get_ptr = int function(nng_socket, const(char)* , void **);
57     alias pnng_socket_get_ms = int function(nng_socket, const(char)* , nng_duration *);
58     alias pnng_socket_get_addr = int function(nng_socket, const(char)* , nng_sockaddr *);
59     alias pnng_pipe_notify = int function(nng_socket, nng_pipe_ev, nng_pipe_cb, void *);
60     alias pnng_listen = int function(nng_socket, const(char)* , nng_listener *, int);
61     alias pnng_dial = int function(nng_socket, const(char)* , nng_dialer *, int);
62     alias pnng_dialer_create = int function(nng_dialer *, nng_socket, const(char)* );
63     alias pnng_listener_create = int function(nng_listener *, nng_socket, const(char)* );
64     alias pnng_dialer_start = int function(nng_dialer, int);
65     alias pnng_listener_start = int function(nng_listener, int);
66     alias pnng_dialer_close = int function(nng_dialer);
67     alias pnng_listener_close = int function(nng_listener);
68     alias pnng_dialer_id = int function(nng_dialer);
69     alias pnng_listener_id = int function(nng_listener);
70     alias pnng_dialer_setopt = int function(nng_dialer, const(char)* , const void *, size_t);
71     alias pnng_dialer_setopt_bool = int function(nng_dialer, const(char)* , bool);
72     alias pnng_dialer_setopt_int = int function(nng_dialer, const(char)* , int);
73     alias pnng_dialer_setopt_ms = int function(nng_dialer, const(char)* , nng_duration);
74     alias pnng_dialer_setopt_size = int function(nng_dialer, const(char)* , size_t);
75     alias pnng_dialer_setopt_uint64 = int function(nng_dialer, const(char)* , uint64_t);
76     alias pnng_dialer_setopt_ptr = int function(nng_dialer, const(char)* , void *);
77     alias pnng_dialer_setopt_string = int function(nng_dialer, const(char)* , const(char)* );
78     alias pnng_dialer_getopt = int function(nng_dialer, const(char)* , void *, size_t *);
79     alias pnng_dialer_getopt_bool = int function(nng_dialer, const(char)* , bool *);
80     alias pnng_dialer_getopt_int = int function(nng_dialer, const(char)* , int *);
81     alias pnng_dialer_getopt_ms = int function(nng_dialer, const(char)* , nng_duration *);
82     alias pnng_dialer_getopt_size = int function(nng_dialer, const(char)* , size_t *);
83     alias pnng_dialer_getopt_sockaddr = int function(nng_dialer, const(char)* , nng_sockaddr *);
84     alias pnng_dialer_getopt_uint64 = int function(nng_dialer, const(char)* , uint64_t *);
85     alias pnng_dialer_getopt_ptr = int function(nng_dialer, const(char)* , void **);
86     alias pnng_dialer_getopt_string = int function(nng_dialer, const(char)* , char **);
87     alias pnng_dialer_set = int function(nng_dialer, const(char)* , const void *, size_t);
88     alias pnng_dialer_set_bool = int function(nng_dialer, const(char)* , bool);
89     alias pnng_dialer_set_int = int function(nng_dialer, const(char)* , int);
90     alias pnng_dialer_set_size = int function(nng_dialer, const(char)* , size_t);
91     alias pnng_dialer_set_uint64 = int function(nng_dialer, const(char)* , uint64_t);
92     alias pnng_dialer_set_string = int function(nng_dialer, const(char)* , const(char)* );
93     alias pnng_dialer_set_ptr = int function(nng_dialer, const(char)* , void *);
94     alias pnng_dialer_set_ms = int function(nng_dialer, const(char)* , nng_duration);
95     alias pnng_dialer_set_addr = int function(nng_dialer, const(char)* , const nng_sockaddr *);
96     alias pnng_dialer_get = int function(nng_dialer, const(char)* , void *, size_t *);
97     alias pnng_dialer_get_bool = int function(nng_dialer, const(char)* , bool *);
98     alias pnng_dialer_get_int = int function(nng_dialer, const(char)* , int *);
99     alias pnng_dialer_get_size = int function(nng_dialer, const(char)* , size_t *);
100     alias pnng_dialer_get_uint64 = int function(nng_dialer, const(char)* , uint64_t *);
101     alias pnng_dialer_get_string = int function(nng_dialer, const(char)* , char **);
102     alias pnng_dialer_get_ptr = int function(nng_dialer, const(char)* , void **);
103     alias pnng_dialer_get_ms = int function(nng_dialer, const(char)* , nng_duration *);
104     alias pnng_dialer_get_addr = int function(nng_dialer, const(char)* , nng_sockaddr *);
105     alias pnng_listener_setopt = int function(nng_listener, const(char)* , const void *, size_t);
106     alias pnng_listener_setopt_bool = int function(nng_listener, const(char)* , bool);
107     alias pnng_listener_setopt_int = int function(nng_listener, const(char)* , int);
108     alias pnng_listener_setopt_ms = int function(nng_listener, const(char)* , nng_duration);
109     alias pnng_listener_setopt_size = int function(nng_listener, const(char)* , size_t);
110     alias pnng_listener_setopt_uint64 = int function(nng_listener, const(char)* , uint64_t);
111     alias pnng_listener_setopt_ptr = int function(nng_listener, const(char)* , void *);
112     alias pnng_listener_setopt_string = int function(nng_listener, const(char)* , const(char)* );
113     alias pnng_listener_getopt = int function(nng_listener, const(char)* , void *, size_t *);
114     alias pnng_listener_getopt_bool = int function(nng_listener, const(char)* , bool *);
115     alias pnng_listener_getopt_int = int function(nng_listener, const(char)* , int *);
116     alias pnng_listener_getopt_ms = int function(nng_listener, const(char)* , nng_duration *);
117     alias pnng_listener_getopt_size = int function(nng_listener, const(char)* , size_t *);
118     alias pnng_listener_getopt_sockaddr = int function(nng_listener, const(char)* , nng_sockaddr *);
119     alias pnng_listener_getopt_uint64 = int function(nng_listener, const(char)* , uint64_t *);
120     alias pnng_listener_getopt_ptr = int function(nng_listener, const(char)* , void **);
121     alias pnng_listener_getopt_string = int function(nng_listener, const(char)* , char **);
122     alias pnng_listener_set = int function(nng_listener, const(char)* , const void *, size_t);
123     alias pnng_listener_set_bool = int function(nng_listener, const(char)* , bool);
124     alias pnng_listener_set_int = int function(nng_listener, const(char)* , int);
125     alias pnng_listener_set_size = int function(nng_listener, const(char)* , size_t);
126     alias pnng_listener_set_uint64 = int function(nng_listener, const(char)* , uint64_t);
127     alias pnng_listener_set_string = int function(nng_listener, const(char)* , const(char)* );
128     alias pnng_listener_set_ptr = int function(nng_listener, const(char)* , void *);
129     alias pnng_listener_set_ms = int function(nng_listener, const(char)* , nng_duration);
130     alias pnng_listener_set_addr = int function(nng_listener, const(char)* , const nng_sockaddr *);
131     alias pnng_listener_get = int function(nng_listener, const(char)* , void *, size_t *);
132     alias pnng_listener_get_bool = int function(nng_listener, const(char)* , bool *);
133     alias pnng_listener_get_int = int function(nng_listener, const(char)* , int *);
134     alias pnng_listener_get_size = int function(nng_listener, const(char)* , size_t *);
135     alias pnng_listener_get_uint64 = int function(nng_listener, const(char)* , uint64_t *);
136     alias pnng_listener_get_string = int function(nng_listener, const(char)* , char **);
137     alias pnng_listener_get_ptr = int function(nng_listener, const(char)* , void **);
138     alias pnng_listener_get_ms = int function(nng_listener, const(char)* , nng_duration *);
139     alias pnng_listener_get_addr = int function(nng_listener, const(char)* , nng_sockaddr *);
140     alias pnng_strerror = const(char)*  function(int);
141     alias pnng_send = int function(nng_socket, void *, size_t, int);
142     alias pnng_recv = int function(nng_socket, void *, size_t *, int);
143     alias pnng_sendmsg = int function(nng_socket, nng_msg *, int);
144     alias pnng_recvmsg = int function(nng_socket, nng_msg **, int);
145     alias pnng_send_aio = void function(nng_socket, nng_aio *);
146     alias pnng_recv_aio = void function(nng_socket, nng_aio *);
147     alias pnng_ctx_open = int function(nng_ctx *, nng_socket);
148     alias pnng_ctx_close = int function(nng_ctx);
149     alias pnng_ctx_id = int function(nng_ctx);
150     alias pnng_ctx_recv = void function(nng_ctx, nng_aio *);
151     alias pnng_ctx_send = void function(nng_ctx, nng_aio *);
152     alias pnng_ctx_getopt = int function(nng_ctx, const(char)* , void *, size_t *);
153     alias pnng_ctx_getopt_bool = int function(nng_ctx, const(char)* , bool *);
154     alias pnng_ctx_getopt_int = int function(nng_ctx, const(char)* , int *);
155     alias pnng_ctx_getopt_ms = int function(nng_ctx, const(char)* , nng_duration *);
156     alias pnng_ctx_getopt_size = int function(nng_ctx, const(char)* , size_t *);
157     alias pnng_ctx_setopt = int function(nng_ctx, const(char)* , const void *, size_t);
158     alias pnng_ctx_setopt_bool = int function(nng_ctx, const(char)* , bool);
159     alias pnng_ctx_setopt_int = int function(nng_ctx, const(char)* , int);
160     alias pnng_ctx_setopt_ms = int function(nng_ctx, const(char)* , nng_duration);
161     alias pnng_ctx_setopt_size = int function(nng_ctx, const(char)* , size_t);
162     alias pnng_ctx_get = int function(nng_ctx, const(char)* , void *, size_t *);
163     alias pnng_ctx_get_bool = int function(nng_ctx, const(char)* , bool *);
164     alias pnng_ctx_get_int = int function(nng_ctx, const(char)* , int *);
165     alias pnng_ctx_get_size = int function(nng_ctx, const(char)* , size_t *);
166     alias pnng_ctx_get_uint64 = int function(nng_ctx, const(char)* , uint64_t *);
167     alias pnng_ctx_get_string = int function(nng_ctx, const(char)* , char **);
168     alias pnng_ctx_get_ptr = int function(nng_ctx, const(char)* , void **);
169     alias pnng_ctx_get_ms = int function(nng_ctx, const(char)* , nng_duration *);
170     alias pnng_ctx_get_addr = int function(nng_ctx, const(char)* , nng_sockaddr *);
171     alias pnng_ctx_set = int function(nng_ctx, const(char)* , const void *, size_t);
172     alias pnng_ctx_set_bool = int function(nng_ctx, const(char)* , bool);
173     alias pnng_ctx_set_int = int function(nng_ctx, const(char)* , int);
174     alias pnng_ctx_set_size = int function(nng_ctx, const(char)* , size_t);
175     alias pnng_ctx_set_uint64 = int function(nng_ctx, const(char)* , uint64_t);
176     alias pnng_ctx_set_string = int function(nng_ctx, const(char)* , const(char)* );
177     alias pnng_ctx_set_ptr = int function(nng_ctx, const(char)* , void *);
178     alias pnng_ctx_set_ms = int function(nng_ctx, const(char)* , nng_duration);
179     alias pnng_ctx_set_addr = int function(nng_ctx, const(char)* , const nng_sockaddr *);
180     alias pnng_alloc = void * function(size_t);
181     alias pnng_free = void function(void *, size_t);
182     alias pnng_strdup = char * function(const(char)* );
183     alias pnng_strfree = void function(char *);
184     alias pnng_aio_alloc = int function(nng_aio **, void **, void *);
185     alias pnng_aio_free = void function(nng_aio *);
186     alias pnng_aio_stop = void function(nng_aio *);
187     alias pnng_aio_result = int function(nng_aio *);
188     alias pnng_aio_count = size_t function(nng_aio *);
189     alias pnng_aio_cancel = void function(nng_aio *);
190     alias pnng_aio_abort = void function(nng_aio *, int);
191     alias pnng_aio_wait = void function(nng_aio *);
192     alias pnng_aio_set_msg = void function(nng_aio *, nng_msg *);
193     alias pnng_aio_get_msg = nng_msg * function(nng_aio *);
194     alias pnng_aio_set_input = int function(nng_aio *, uint, void *);
195     alias pnng_aio_get_input = void *function(nng_aio *, uint);
196     alias pnng_aio_set_output = int function(nng_aio *, uint, void *);
197     alias pnng_aio_get_output = void *function(nng_aio *, uint);
198     alias pnng_aio_set_timeout = void function(nng_aio *, nng_duration);
199     alias pnng_aio_set_iov = int function(nng_aio *, uint, const nng_iov *);
200     alias pnng_aio_begin = bool function(nng_aio *);
201     alias pnng_aio_finish = void function(nng_aio *, int);
202     alias pnng_aio_defer = void function(nng_aio *, nng_aio_cancelfn, void *);
203     alias pnng_sleep_aio = void function(nng_duration, nng_aio *);
204     alias pnng_msg_alloc = int   function(nng_msg **, size_t);
205     alias pnng_msg_free = void  function(nng_msg *);
206     alias pnng_msg_realloc = int   function(nng_msg *, size_t);
207     alias pnng_msg_header = void *function(nng_msg *);
208     alias pnng_msg_header_len = size_t function(const nng_msg *);
209     alias pnng_msg_body = void * function(nng_msg *);
210     alias pnng_msg_len = size_t function(const nng_msg *);
211     alias pnng_msg_append = int function(nng_msg *, const void *, size_t);
212     alias pnng_msg_insert = int function(nng_msg *, const void *, size_t);
213     alias pnng_msg_trim = int function(nng_msg *, size_t);
214     alias pnng_msg_chop = int function(nng_msg *, size_t);
215     alias pnng_msg_header_append  = int function(nng_msg *, const void *, size_t);
216     alias pnng_msg_header_insert = int function(nng_msg *, const void *, size_t);
217     alias pnng_msg_header_trim = int function(nng_msg *, size_t);
218     alias pnng_msg_header_chop = int function(nng_msg *, size_t);
219     alias pnng_msg_header_append_u16 = int function(nng_msg *, uint16_t);
220     alias pnng_msg_header_append_u32 = int function(nng_msg *, uint32_t);
221     alias pnng_msg_header_append_u64 = int function(nng_msg *, uint64_t);
222     alias pnng_msg_header_insert_u16 = int function(nng_msg *, uint16_t);
223     alias pnng_msg_header_insert_u32 = int function(nng_msg *, uint32_t);
224     alias pnng_msg_header_insert_u64 = int function(nng_msg *, uint64_t);
225     alias pnng_msg_header_chop_u16 = int function(nng_msg *, uint16_t *);
226     alias pnng_msg_header_chop_u32 = int function(nng_msg *, uint32_t *);
227     alias pnng_msg_header_chop_u64 = int function(nng_msg *, uint64_t *);
228     alias pnng_msg_header_trim_u16 = int function(nng_msg *, uint16_t *);
229     alias pnng_msg_header_trim_u32 = int function(nng_msg *, uint32_t *);
230     alias pnng_msg_header_trim_u64 = int function(nng_msg *, uint64_t *);
231     alias pnng_msg_append_u16 = int function(nng_msg *, uint16_t);
232     alias pnng_msg_append_u32 = int function(nng_msg *, uint32_t);
233     alias pnng_msg_append_u64 = int function(nng_msg *, uint64_t);
234     alias pnng_msg_insert_u16 = int function(nng_msg *, uint16_t);
235     alias pnng_msg_insert_u32 = int function(nng_msg *, uint32_t);
236     alias pnng_msg_insert_u64 = int function(nng_msg *, uint64_t);
237     alias pnng_msg_chop_u16 = int function(nng_msg *, uint16_t *);
238     alias pnng_msg_chop_u32  = int function(nng_msg *, uint32_t *);
239     alias pnng_msg_chop_u64 = int function(nng_msg *, uint64_t *);
240     alias pnng_msg_trim_u16 = int function(nng_msg *, uint16_t *);
241     alias pnng_msg_trim_u32 = int function(nng_msg *, uint32_t *);
242     alias pnng_msg_trim_u64 = int function(nng_msg *, uint64_t *);
243     alias pnng_msg_dup = int function(nng_msg **, const nng_msg *);
244     alias pnng_msg_clear = void function(nng_msg *);
245     alias pnng_msg_header_clear = void function(nng_msg *);
246     alias pnng_msg_set_pipe = void function(nng_msg *, nng_pipe);
247     alias pnng_msg_get_pipe = nng_pipe function(const nng_msg *);
248     alias pnng_msg_getopt = int   function(nng_msg *, int, void *, size_t *);
249     alias pnng_pipe_getopt = int function(nng_pipe, const(char)* , void *, size_t *);
250     alias pnng_pipe_getopt_bool = int function(nng_pipe, const(char)* , bool *);
251     alias pnng_pipe_getopt_int = int function(nng_pipe, const(char)* , int *);
252     alias pnng_pipe_getopt_ms = int function(nng_pipe, const(char)* , nng_duration *);
253     alias pnng_pipe_getopt_size = int function(nng_pipe, const(char)* , size_t *);
254     alias pnng_pipe_getopt_sockaddr = int function(nng_pipe, const(char)* , nng_sockaddr *);
255     alias pnng_pipe_getopt_uint64 = int function(nng_pipe, const(char)* , uint64_t *);
256     alias pnng_pipe_getopt_ptr = int function(nng_pipe, const(char)* , void **);
257     alias pnng_pipe_getopt_string = int function(nng_pipe, const(char)* , char **);
258     alias pnng_pipe_get = int function(nng_pipe, const(char)* , void *, size_t *);
259     alias pnng_pipe_get_bool = int function(nng_pipe, const(char)* , bool *);
260     alias pnng_pipe_get_int = int function(nng_pipe, const(char)* , int *);
261     alias pnng_pipe_get_ms = int function(nng_pipe, const(char)* , nng_duration *);
262     alias pnng_pipe_get_size = int function(nng_pipe, const(char)* , size_t *);
263     alias pnng_pipe_get_uint64 = int function(nng_pipe, const(char)* , uint64_t *);
264     alias pnng_pipe_get_string = int function(nng_pipe, const(char)* , char **);
265     alias pnng_pipe_get_ptr = int function(nng_pipe, const(char)* , void **);
266     alias pnng_pipe_get_addr = int function(nng_pipe, const(char)* , nng_sockaddr *);
267     alias pnng_pipe_close = int function(nng_pipe);
268     alias pnng_pipe_id = int function(nng_pipe);
269     alias pnng_pipe_socket = nng_socket function(nng_pipe);
270     alias pnng_pipe_dialer = nng_dialer function(nng_pipe);
271     alias pnng_pipe_listener = nng_listener function(nng_pipe);
272     alias pnng_stats_get = int function(nng_stat **);
273     alias pnng_stats_free = void function(nng_stat *);
274     alias pnng_stats_dump = void function(nng_stat *);
275     alias pnng_stat_next = nng_stat * function(nng_stat *);
276     alias pnng_stat_child = nng_stat * function(nng_stat *);
277     alias pnng_stat_name = const(char)*  function(nng_stat *);
278     alias pnng_stat_type = int function(nng_stat *);
279     alias pnng_stat_find = nng_stat *function(nng_stat *, const(char)* );
280     alias pnng_stat_find_socket = nng_stat * function(nng_stat *, nng_socket);
281     alias pnng_stat_find_dialer = nng_stat * function(nng_stat *, nng_dialer);
282     alias pnng_stat_find_listener = nng_stat * function(nng_stat *, nng_listener);
283     alias pnng_stat_unit = int function(nng_stat *);
284     alias pnng_stat_value = uint64_t function(nng_stat *);
285     alias pnng_stat_string = const(char)*  function(nng_stat *);
286     alias pnng_stat_desc = const(char)*  function(nng_stat *);
287     alias pnng_stat_timestamp = uint64_t function(nng_stat *);
288     alias pnng_device = int function(nng_socket, nng_socket);
289     alias pnng_url_parse = int function(nng_url **, const(char)* );
290     alias pnng_url_free = void function(nng_url *);
291     alias pnng_url_clone = int function(nng_url **, const nng_url *);
292     alias pnng_version = const(char)*  function();
293     alias pnng_stream_free = void function(nng_stream *);
294     alias pnng_stream_close = void function(nng_stream *);
295     alias pnng_stream_send = void function(nng_stream *, nng_aio *);
296     alias pnng_stream_recv = void function(nng_stream *, nng_aio *);
297     alias pnng_stream_get = int  function(nng_stream *, const(char)* , void *, size_t *);
298     alias pnng_stream_get_bool = int  function(nng_stream *, const(char)* , bool *);
299     alias pnng_stream_get_int = int  function(nng_stream *, const(char)* , int *);
300     alias pnng_stream_get_ms = int  function(nng_stream *, const(char)* , nng_duration *);
301     alias pnng_stream_get_size = int  function(nng_stream *, const(char)* , size_t *);
302     alias pnng_stream_get_uint64 = int  function(nng_stream *, const(char)* , uint64_t *);
303     alias pnng_stream_get_string = int  function(nng_stream *, const(char)* , char **);
304     alias pnng_stream_get_ptr = int  function(nng_stream *, const(char)* , void **);
305     alias pnng_stream_get_addr = int  function(nng_stream *, const(char)* , nng_sockaddr *);
306     alias pnng_stream_set = int  function(nng_stream *, const(char)* , const void *, size_t);
307     alias pnng_stream_set_bool = int  function(nng_stream *, const(char)* , bool);
308     alias pnng_stream_set_int = int  function(nng_stream *, const(char)* , int);
309     alias pnng_stream_set_ms = int  function(nng_stream *, const(char)* , nng_duration);
310     alias pnng_stream_set_size = int  function(nng_stream *, const(char)* , size_t);
311     alias pnng_stream_set_uint64 = int  function(nng_stream *, const(char)* , uint64_t);
312     alias pnng_stream_set_string = int  function(nng_stream *, const(char)* , const(char)* );
313     alias pnng_stream_set_ptr = int  function(nng_stream *, const(char)* , void *);
314     alias pnng_stream_set_addr = int  function(nng_stream *, const(char)* , const nng_sockaddr *);
315     alias pnng_stream_dialer_alloc = int function(nng_stream_dialer **, const(char)* );
316     alias pnng_stream_dialer_alloc_url = int function(nng_stream_dialer **, const nng_url *);
317     alias pnng_stream_dialer_free = void function(nng_stream_dialer *);
318     alias pnng_stream_dialer_close = void function(nng_stream_dialer *);
319     alias pnng_stream_dialer_dial = void function(nng_stream_dialer *, nng_aio *);
320     alias pnng_stream_dialer_set = int  function(nng_stream_dialer *, const(char)* , const void *, size_t);
321     alias pnng_stream_dialer_get = int function(nng_stream_dialer *, const(char)* , void *, size_t *);
322     alias pnng_stream_dialer_get_bool = int function(nng_stream_dialer *, const(char)* , bool *);
323     alias pnng_stream_dialer_get_int = int function(nng_stream_dialer *, const(char)* , int *);
324     alias pnng_stream_dialer_get_ms = int function(nng_stream_dialer *, const(char)* , nng_duration *);
325     alias pnng_stream_dialer_get_size = int function(nng_stream_dialer *, const(char)* , size_t *);
326     alias pnng_stream_dialer_get_uint64 = int function(nng_stream_dialer *, const(char)* , uint64_t *);
327     alias pnng_stream_dialer_get_string = int function(nng_stream_dialer *, const(char)* , char **);
328     alias pnng_stream_dialer_get_ptr = int function(nng_stream_dialer *, const(char)* , void **);
329     alias pnng_stream_dialer_get_addr = int function(nng_stream_dialer *, const(char)* , nng_sockaddr *);
330     alias pnng_stream_dialer_set_bool = int function(nng_stream_dialer *, const(char)* , bool);
331     alias pnng_stream_dialer_set_int = int function(nng_stream_dialer *, const(char)* , int);
332     alias pnng_stream_dialer_set_ms = int function(nng_stream_dialer *, const(char)* , nng_duration);
333     alias pnng_stream_dialer_set_size = int function(nng_stream_dialer *, const(char)* , size_t);
334     alias pnng_stream_dialer_set_uint64 = int function(nng_stream_dialer *, const(char)* , uint64_t);
335     alias pnng_stream_dialer_set_string = int function(nng_stream_dialer *, const(char)* , const(char)* );
336     alias pnng_stream_dialer_set_ptr = int function(nng_stream_dialer *, const(char)* , void *);
337     alias pnng_stream_dialer_set_addr = int function(nng_stream_dialer *, const(char)* , const nng_sockaddr *);
338     alias pnng_stream_listener_alloc = int function(nng_stream_listener **, const(char)* );
339     alias pnng_stream_listener_alloc_url = int function(nng_stream_listener **, const nng_url *);
340     alias pnng_stream_listener_free = void function(nng_stream_listener *);
341     alias pnng_stream_listener_close = void function(nng_stream_listener *);
342     alias pnng_stream_listener_listen = int function(nng_stream_listener *);
343     alias pnng_stream_listener_accept = void function(nng_stream_listener *, nng_aio *);
344     alias pnng_stream_listener_set = int function(nng_stream_listener *, const(char)* , const void *, size_t);
345     alias pnng_stream_listener_get = int function(nng_stream_listener *, const(char)* , void *, size_t *);
346     alias pnng_stream_listener_get_bool = int function(nng_stream_listener *, const(char)* , bool *);
347     alias pnng_stream_listener_get_int = int function(nng_stream_listener *, const(char)* , int *);
348     alias pnng_stream_listener_get_ms = int function(nng_stream_listener *, const(char)* , nng_duration *);
349     alias pnng_stream_listener_get_size = int function(nng_stream_listener *, const(char)* , size_t *);
350     alias pnng_stream_listener_get_uint64 = int function(nng_stream_listener *, const(char)* , uint64_t *);
351     alias pnng_stream_listener_get_string = int function(nng_stream_listener *, const(char)* , char **);
352     alias pnng_stream_listener_get_ptr = int function(nng_stream_listener *, const(char)* , void **);
353     alias pnng_stream_listener_get_addr = int function(nng_stream_listener *, const(char)* , nng_sockaddr *);
354     alias pnng_stream_listener_set_bool = int function(nng_stream_listener *, const(char)* , bool);
355     alias pnng_stream_listener_set_int = int function(nng_stream_listener *, const(char)* , int);
356     alias pnng_stream_listener_set_ms = int function(nng_stream_listener *, const(char)* , nng_duration);
357     alias pnng_stream_listener_set_size = int function(nng_stream_listener *, const(char)* , size_t);
358     alias pnng_stream_listener_set_uint64 = int function(nng_stream_listener *, const(char)* , uint64_t);
359     alias pnng_stream_listener_set_string = int function(nng_stream_listener *, const(char)* , const(char)* );
360     alias pnng_stream_listener_set_ptr = int function(nng_stream_listener *, const(char)* , void *);
361     alias pnng_stream_listener_set_addr = int function(nng_stream_listener *, const(char)* , const nng_sockaddr *);
362 
363 
364     // compat/nanomsg/nn.h:
365     alias pnn_cmsg_next = nn_cmsghdr * function(nn_msghdr *, nn_cmsghdr *);
366     alias pnn_socket = int function(int, int);
367     alias pnn_setsockopt = int function(int, int, int, const void *, size_t);
368     alias pnn_getsockopt = int function(int, int, int, void *, size_t *);
369     alias pnn_bind = int function(int, const(char)* );
370     alias pnn_connect = int function(int, const(char)* );
371     alias pnn_shutdown = int function(int, int);
372     alias pnn_send = int function(int, const void *, size_t, int);
373     alias pnn_recv = int function(int, void *, size_t, int);
374     alias pnn_sendmsg = int function(int, const nn_msghdr *, int);
375     alias pnn_recvmsg = int function(int, nn_msghdr *, int);
376     alias pnn_close = int function(int);
377     alias pnn_poll = int function(nn_pollfd *, int, int);
378     alias pnn_device = int function(int, int);
379     alias pnn_get_statistic = uint64_t function(int, int);
380     alias pnn_allocmsg = void * function(size_t, int);
381     alias pnn_reallocmsg = void * function(void *, size_t);
382     alias pnn_freemsg = int function(void *);
383     alias pnn_errno = int function();
384     alias pnn_strerror = const(char)*  function(int);
385     alias pnn_term = void function();
386 
387 
388     // protocol/bus0/bus.h
389     alias pnng_bus0_open = int function(nng_socket *);
390     alias pnng_bus0_open_raw = int function(nng_socket *);
391     alias pnng_bus_open = nng_bus0_open;
392     alias pnng_bus_open_raw = nng_bus0_open_raw;
393 
394 
395     // protocol/pair0/pair.h
396     alias pnng_pair0_open = int function(nng_socket *);
397     alias pnng_pair0_open_raw = int function(nng_socket *);
398     //alias pnng_pair_open = nng_pair0_open;
399     //alias pnng_pair_open_raw = nng_pair0_open_raw;
400 
401 
402     // protocol/pair1/pair.h
403     alias pnng_pair1_open = int function(nng_socket *);
404     alias pnng_pair1_open_raw = int function(nng_socket *);
405     //alias pnng_pair_open = nng_pair1_open;
406     //alias pnng_pair_open_raw = nng_pair1_open_raw;
407 
408     // protocol/pipeline0/pull.h
409     alias pnng_pull0_open = int function(nng_socket *);
410     alias pnng_pull0_open_raw = int function(nng_socket *);
411     alias pnng_pull_open = nng_pull0_open;
412     alias pnng_pull_open_raw = nng_pull0_open_raw;
413 
414     // protocol/pipeline0/push.h
415     alias pnng_push0_open = int function(nng_socket *);
416     alias pnng_push0_open_raw = int function(nng_socket *);
417     alias pnng_push_open = nng_push0_open;
418     alias pnng_push_open_raw = nng_push0_open_raw;
419 
420     // protocol/pubsub0/pub.h
421     alias pnng_pub0_open = int function(nng_socket *);
422     alias pnng_pub0_open_raw = int function(nng_socket *);
423     alias pnng_pub_open = nng_pub0_open;
424     alias pnng_pub_open_raw = nng_pub0_open_raw;
425 
426     // protocol/pubsub0/sub.h
427     alias pnng_sub0_open = int function(nng_socket *);
428     alias pnng_sub0_open_raw = int function(nng_socket *);
429     alias pnng_sub_open = nng_sub0_open;
430     alias pnng_sub_open_raw = nng_sub0_open_raw;
431 
432     // protocol/reqrep0/rep.h
433     alias pnng_rep0_open = int function(nng_socket *);
434     alias pnng_rep0_open_raw = int function(nng_socket *);
435     alias pnng_rep_open = nng_rep0_open;
436     alias pnng_rep_open_raw = pnng_rep0_open_raw;
437 
438     // protocol/reqrep0/req.h
439     alias pnng_req0_open = int function(nng_socket *);
440     alias pnng_req0_open_raw = int function(nng_socket *);
441     alias pnng_req_open = nng_req0_open;
442     alias pnng_req_open_raw = pnng_req0_open_raw;
443 
444     // protocol/survey0/respond.h
445     alias pnng_respondent0_open = int function(nng_socket *);
446     alias pnng_respondent0_open_raw = int function(nng_socket *);
447     alias pnng_respondent_open = nng_respondent0_open;
448     alias pnng_respondent_open_raw = nng_respondent0_open_raw;
449 
450     // protocol/survey0/survey.h
451     alias pnng_surveyor0_open = int function(nng_socket *);
452     alias pnng_surveyor0_open_raw = int function(nng_socket *);
453     alias pnng_surveyor_open = nng_surveyor0_open;
454     alias pnng_surveyor_open_raw = nng_surveyor0_open_raw;
455 
456     // supplemental/http/http.h
457     alias pnng_http_req_alloc = int function(nng_http_req **, const nng_url *);
458     alias pnng_http_req_free = void function(nng_http_req *);
459     alias pnng_http_req_get_method = const(char)*  function(nng_http_req *);
460     alias pnng_http_req_get_version = const(char)*  function(nng_http_req *);
461     alias pnng_http_req_get_uri = const(char)*  function(nng_http_req *);
462     alias pnng_http_req_set_header = int function(nng_http_req *, const(char)* , const(char)* );
463     alias pnng_http_req_add_header = int function(nng_http_req *, const(char)* , const(char)* );
464     alias pnng_http_req_del_header = int function(nng_http_req *, const(char)* );
465     alias pnng_http_req_get_header = const(char)*  function(nng_http_req *, const(char)* );
466     alias pnng_http_req_set_method = int function(nng_http_req *, const(char)* );
467     alias pnng_http_req_set_version = int function(nng_http_req *, const(char)* );
468     alias pnng_http_req_set_uri = int function(nng_http_req *, const(char)* );
469     alias pnng_http_req_set_data = int function(nng_http_req *, const void *, size_t);
470     alias pnng_http_req_copy_data = int function(nng_http_req *, const void *, size_t);
471     alias pnng_http_req_get_data = void function(nng_http_req *, void **, size_t *);
472     alias pnng_http_res_alloc = int function(nng_http_res **);
473     alias pnng_http_res_alloc_error = int function(nng_http_res **, uint16_t);
474     alias pnng_http_res_free = void function(nng_http_res *);
475     alias pnng_http_res_get_status = uint16_t function(nng_http_res *);
476     alias pnng_http_res_set_status = int function(nng_http_res *, uint16_t);
477     alias pnng_http_res_get_reason = const(char)*  function(nng_http_res *);
478     alias pnng_http_res_set_reason = int function(nng_http_res *, const(char)* );
479     alias pnng_http_res_set_header = int function(nng_http_res *, const(char)* , const(char)* );
480     alias pnng_http_res_add_header = int function(nng_http_res *, const(char)* , const(char)* );
481     alias pnng_http_res_del_header = int function(nng_http_res *, const(char)* );
482     alias pnng_http_res_get_header = const(char)* function(nng_http_res *, const(char)* );
483     alias pnng_http_res_set_version = int function(nng_http_res *, const(char)* );
484     alias pnng_http_res_get_version = const(char)*  function(nng_http_res *);
485     alias pnng_http_res_get_data = void function(nng_http_res *, void **, size_t *);
486     alias pnng_http_res_set_data = int function(nng_http_res *, const void *, size_t);
487     alias pnng_http_res_copy_data = int function(nng_http_res *, const void *, size_t);
488     alias pnng_http_conn_close = void function(nng_http_conn *);
489     alias pnng_http_conn_read = void function(nng_http_conn *, nng_aio *);
490     alias pnng_http_conn_read_all = void function(nng_http_conn *, nng_aio *);
491     alias pnng_http_conn_write = void function(nng_http_conn *, nng_aio *);
492     alias pnng_http_conn_write_all = void function(nng_http_conn *, nng_aio *);
493     alias pnng_http_conn_write_req = void function(nng_http_conn *, nng_http_req *, nng_aio *);
494     alias pnng_http_conn_write_res = void function(nng_http_conn *, nng_http_res *, nng_aio *);
495     alias pnng_http_conn_read_req = void function(nng_http_conn *, nng_http_req *, nng_aio *);
496     alias pnng_http_conn_read_res = void function(nng_http_conn *, nng_http_res *, nng_aio *);
497     alias pnng_http_req_reset = void function(nng_http_req *);
498     alias pnng_http_res_reset = void function(nng_http_res *);
499     alias pnng_http_handler_alloc = int function(nng_http_handler **, const(char)* , void **);
500     alias pnng_http_handler_free = void function(nng_http_handler *);
501     alias pnng_http_handler_alloc_file = int function(nng_http_handler **, const(char)* , const(char)* );
502     alias pnng_http_handler_alloc_static = int function(nng_http_handler **, const(char)* , const void *, size_t, const(char)* );
503     alias pnng_http_handler_alloc_redirect = int function(nng_http_handler **, const(char)* , uint16_t, const(char)* );
504     alias pnng_http_handler_alloc_directory = int function(nng_http_handler **, const(char)* , const(char)* );
505     alias pnng_http_handler_set_method = int function(nng_http_handler *, const(char)* );
506     alias pnng_http_handler_set_host = int function(nng_http_handler *, const(char)* );
507     alias pnng_http_handler_collect_body = int function(nng_http_handler *, bool, size_t);
508     alias pnng_http_handler_set_tree = int function(nng_http_handler *);
509     alias pnng_http_handler_set_data = int function(nng_http_handler *, void *, void **);
510     alias pnng_http_handler_get_data = void * function(nng_http_handler *);
511     alias pnng_http_server_hold = int function(nng_http_server **, const nng_url *);
512     alias pnng_http_server_release = void function(nng_http_server *);
513     alias pnng_http_server_start = int function(nng_http_server *);
514     alias pnng_http_server_stop = void function(nng_http_server *);
515     alias pnng_http_server_add_handler = int function(nng_http_server *, nng_http_handler *);
516     alias pnng_http_server_del_handler = int function(nng_http_server *, nng_http_handler *);
517     alias pnng_http_server_set_tls = int function(nng_http_server *, nng_tls_config *);
518     alias pnng_http_server_get_tls = int function(nng_http_server *, nng_tls_config **);
519     alias pnng_http_server_get_addr = int function(nng_http_server *, nng_sockaddr *);
520     alias pnng_http_server_set_error_page = int function(nng_http_server *, uint16_t, const(char)* );
521     alias pnng_http_server_set_error_file = int function(nng_http_server *, uint16_t, const(char)* );
522     alias pnng_http_server_res_error = int function(nng_http_server *, nng_http_res *);
523     alias pnng_http_hijack = int function(nng_http_conn *);
524     alias pnng_http_client_alloc = int function(nng_http_client **, const nng_url *);
525     alias pnng_http_client_free = void function(nng_http_client *);
526     alias pnng_http_client_set_tls = int function(nng_http_client *, nng_tls_config *);
527     alias pnng_http_client_get_tls = int function(nng_http_client *, nng_tls_config **);
528     alias pnng_http_client_connect = void function(nng_http_client *, nng_aio *);
529     alias pnng_http_conn_transact = void function(nng_http_conn *, nng_http_req *, nng_http_res *, nng_aio *);
530     alias pnng_http_client_transact = void function(nng_http_client *, nng_http_req *, nng_http_res *, nng_aio *);
531 
532     // supplemental/tls/tls.h
533     alias pnng_tls_config_alloc = int function(nng_tls_config **, nng_tls_mode);
534     alias pnng_tls_config_hold = void function(nng_tls_config *);
535     alias pnng_tls_config_free = void function(nng_tls_config *);
536     alias pnng_tls_config_server_name = int function(nng_tls_config *, const(char)* );
537     alias pnng_tls_config_ca_chain = int function(nng_tls_config *, const(char)* , const(char)* );
538     alias pnng_tls_config_own_cert = int function(nng_tls_config *, const(char)* , const(char)* , const(char)* );
539     alias pnng_tls_config_key = int function(nng_tls_config *, const uint8_t *, size_t);
540     alias pnng_tls_config_pass = int function(nng_tls_config *, const(char)* );
541     alias pnng_tls_config_auth_mode = int function(nng_tls_config *, nng_tls_auth_mode);
542     alias pnng_tls_config_ca_file = int function(nng_tls_config *, const(char)* );
543     alias pnng_tls_config_cert_key_file = int function(nng_tls_config *, const(char)* , const(char)* );
544 
545     // supplemental/util/options.h
546     alias pnng_opts_parse = int function(int argc, const(char)*  argv, const nng_optspec *opts, int *val, char **optarg, int *optidx);
547 
548     // supplemental/util/platform.h
549     alias pnng_clock = nng_time function();
550     alias pnng_msleep = void function(nng_duration);
551     alias pnng_thread_create = int function(nng_thread **, void **, void *);
552     alias pnng_thread_destroy = void function(nng_thread *);
553     alias pnng_mtx_alloc = int function(nng_mtx **);
554     alias pnng_mtx_free = void function(nng_mtx *);
555     alias pnng_mtx_lock = void function(nng_mtx *);
556     alias pnng_mtx_unlock = void function(nng_mtx *);
557     alias pnng_cv_alloc = int function(nng_cv **, nng_mtx *);
558     alias pnng_cv_free = void function(nng_cv *);
559     alias pnng_cv_wait = void function(nng_cv *);
560     alias pnng_cv_until = int function(nng_cv *, nng_time);
561     alias pnng_cv_wake = void function(nng_cv *);
562     alias pnng_cv_wake1 = void function(nng_cv *);
563     alias pnng_random = uint32_t function();
564 
565     // transport/inproc/inproc.h
566     alias pnng_inproc_register = int function();
567 
568     // transport/ipc/ipc.h
569     alias pnng_ipc_register = int function();
570 
571     // transport/tcp/tcp.h
572     alias pnng_tcp_register = int function();
573 
574     // transport/tls/tls.h
575     alias pnng_tls_register = int function();
576 
577     // transport/ws/websocket.h
578     alias pnng_ws_register = int function();
579     alias pnng_wss_register = int function();
580 
581     // transport/zerotier/zerotier.h
582     alias pnng_zt_register = int function();
583 }
584 
585 __gshared {
586     pnng_fini nng_fini;
587     pnng_close nng_close;
588     pnng_socket_id nng_socket_id;
589     pnng_closeall nng_closeall;
590     pnng_setopt nng_setopt;
591     pnng_setopt_bool nng_setopt_bool;
592     pnng_setopt_int nng_setopt_int;
593     pnng_setopt_ms nng_setopt_ms;
594     pnng_setopt_size nng_setopt_size;
595     pnng_setopt_uint64 nng_setopt_uint64;
596     pnng_setopt_string nng_setopt_string;
597     pnng_setopt_ptr nng_setopt_ptr;
598     pnng_getopt nng_getopt;
599     pnng_getopt_bool nng_getopt_bool;
600     pnng_getopt_int nng_getopt_int;
601     pnng_getopt_ms nng_getopt_ms;
602     pnng_getopt_size nng_getopt_size;
603     pnng_getopt_uint64 nng_getopt_uint64;
604     pnng_getopt_ptr nng_getopt_ptr;
605     pnng_getopt_string nng_getopt_string;
606     pnng_socket_set nng_socket_set;
607     pnng_socket_set_bool nng_socket_set_bool;
608     pnng_socket_set_int nng_socket_set_int;
609     pnng_socket_set_size nng_socket_set_size;
610     pnng_socket_set_uint64 nng_socket_set_uint64;
611     pnng_socket_set_string nng_socket_set_string;
612     pnng_socket_set_ptr nng_socket_set_ptr;
613     pnng_socket_set_ms nng_socket_set_ms;
614     pnng_socket_set_addr nng_socket_set_addr;
615     pnng_socket_get nng_socket_get;
616     pnng_socket_get_bool nng_socket_get_bool;
617     pnng_socket_get_int nng_socket_get_int;
618     pnng_socket_get_size nng_socket_get_size;
619     pnng_socket_get_uint64 nng_socket_get_uint64;
620     pnng_socket_get_string nng_socket_get_string;
621     pnng_socket_get_ptr nng_socket_get_ptr;
622     pnng_socket_get_ms nng_socket_get_ms;
623     pnng_socket_get_addr nng_socket_get_addr;
624     pnng_pipe_notify nng_pipe_notify;
625     pnng_listen nng_listen;
626     pnng_dial nng_dial;
627     pnng_dialer_create nng_dialer_create;
628     pnng_listener_create nng_listener_create;
629     pnng_dialer_start nng_dialer_start;
630     pnng_listener_start nng_listener_start;
631     pnng_dialer_close nng_dialer_close;
632     pnng_listener_close nng_listener_close;
633     pnng_dialer_id nng_dialer_id;
634     pnng_listener_id nng_listener_id;
635     pnng_dialer_setopt nng_dialer_setopt;
636     pnng_dialer_setopt_bool nng_dialer_setopt_bool;
637     pnng_dialer_setopt_int nng_dialer_setopt_int;
638     pnng_dialer_setopt_ms nng_dialer_setopt_ms;
639     pnng_dialer_setopt_size nng_dialer_setopt_size;
640     pnng_dialer_setopt_uint64 nng_dialer_setopt_uint64;
641     pnng_dialer_setopt_ptr nng_dialer_setopt_ptr;
642     pnng_dialer_setopt_string nng_dialer_setopt_string;
643     pnng_dialer_getopt nng_dialer_getopt;
644     pnng_dialer_getopt_bool nng_dialer_getopt_bool;
645     pnng_dialer_getopt_int nng_dialer_getopt_int;
646     pnng_dialer_getopt_ms nng_dialer_getopt_ms;
647     pnng_dialer_getopt_size nng_dialer_getopt_size;
648     pnng_dialer_getopt_sockaddr nng_dialer_getopt_sockaddr;
649     pnng_dialer_getopt_uint64 nng_dialer_getopt_uint64;
650     pnng_dialer_getopt_ptr nng_dialer_getopt_ptr;
651     pnng_dialer_getopt_string nng_dialer_getopt_string;
652     pnng_dialer_set nng_dialer_set;
653     pnng_dialer_set_bool nng_dialer_set_bool;
654     pnng_dialer_set_int nng_dialer_set_int;
655     pnng_dialer_set_size nng_dialer_set_size;
656     pnng_dialer_set_uint64 nng_dialer_set_uint64;
657     pnng_dialer_set_string nng_dialer_set_string;
658     pnng_dialer_set_ptr nng_dialer_set_ptr;
659     pnng_dialer_set_ms nng_dialer_set_ms;
660     pnng_dialer_set_addr nng_dialer_set_addr;
661     pnng_dialer_get nng_dialer_get;
662     pnng_dialer_get_bool nng_dialer_get_bool;
663     pnng_dialer_get_int nng_dialer_get_int;
664     pnng_dialer_get_size nng_dialer_get_size;
665     pnng_dialer_get_uint64 nng_dialer_get_uint64;
666     pnng_dialer_get_string nng_dialer_get_string;
667     pnng_dialer_get_ptr nng_dialer_get_ptr;
668     pnng_dialer_get_ms nng_dialer_get_ms;
669     pnng_dialer_get_addr nng_dialer_get_addr;
670     pnng_listener_setopt nng_listener_setopt;
671     pnng_listener_setopt_bool nng_listener_setopt_bool;
672     pnng_listener_setopt_int nng_listener_setopt_int;
673     pnng_listener_setopt_ms nng_listener_setopt_ms;
674     pnng_listener_setopt_size nng_listener_setopt_size;
675     pnng_listener_setopt_uint64 nng_listener_setopt_uint64;
676     pnng_listener_setopt_ptr nng_listener_setopt_ptr;
677     pnng_listener_setopt_string nng_listener_setopt_string;
678     pnng_listener_getopt nng_listener_getopt;
679     pnng_listener_getopt_bool nng_listener_getopt_bool;
680     pnng_listener_getopt_int nng_listener_getopt_int;
681     pnng_listener_getopt_ms nng_listener_getopt_ms;
682     pnng_listener_getopt_size nng_listener_getopt_size;
683     pnng_listener_getopt_sockaddr nng_listener_getopt_sockaddr;
684     pnng_listener_getopt_uint64 nng_listener_getopt_uint64;
685     pnng_listener_getopt_ptr nng_listener_getopt_ptr;
686     pnng_listener_getopt_string nng_listener_getopt_string;
687     pnng_listener_set nng_listener_set;
688     pnng_listener_set_bool nng_listener_set_bool;
689     pnng_listener_set_int nng_listener_set_int;
690     pnng_listener_set_size nng_listener_set_size;
691     pnng_listener_set_uint64 nng_listener_set_uint64;
692     pnng_listener_set_string nng_listener_set_string;
693     pnng_listener_set_ptr nng_listener_set_ptr;
694     pnng_listener_set_ms nng_listener_set_ms;
695     pnng_listener_set_addr nng_listener_set_addr;
696     pnng_listener_get nng_listener_get;
697     pnng_listener_get_bool nng_listener_get_bool;
698     pnng_listener_get_int nng_listener_get_int;
699     pnng_listener_get_size nng_listener_get_size;
700     pnng_listener_get_uint64 nng_listener_get_uint64;
701     pnng_listener_get_string nng_listener_get_string;
702     pnng_listener_get_ptr nng_listener_get_ptr;
703     pnng_listener_get_ms nng_listener_get_ms;
704     pnng_listener_get_addr nng_listener_get_addr;
705     pnng_strerror nng_strerror;
706     pnng_send nng_send;
707     pnng_recv nng_recv;
708     pnng_sendmsg nng_sendmsg;
709     pnng_recvmsg nng_recvmsg;
710     pnng_send_aio nng_send_aio;
711     pnng_recv_aio nng_recv_aio;
712     pnng_ctx_open nng_ctx_open;
713     pnng_ctx_close nng_ctx_close;
714     pnng_ctx_id nng_ctx_id;
715     pnng_ctx_recv nng_ctx_recv;
716     pnng_ctx_send nng_ctx_send;
717     pnng_ctx_getopt nng_ctx_getopt;
718     pnng_ctx_getopt_bool nng_ctx_getopt_bool;
719     pnng_ctx_getopt_int nng_ctx_getopt_int;
720     pnng_ctx_getopt_ms nng_ctx_getopt_ms;
721     pnng_ctx_getopt_size nng_ctx_getopt_size;
722     pnng_ctx_setopt nng_ctx_setopt;
723     pnng_ctx_setopt_bool nng_ctx_setopt_bool;
724     pnng_ctx_setopt_int nng_ctx_setopt_int;
725     pnng_ctx_setopt_ms nng_ctx_setopt_ms;
726     pnng_ctx_setopt_size nng_ctx_setopt_size;
727     pnng_ctx_get nng_ctx_get;
728     pnng_ctx_get_bool nng_ctx_get_bool;
729     pnng_ctx_get_int nng_ctx_get_int;
730     pnng_ctx_get_size nng_ctx_get_size;
731     pnng_ctx_get_uint64 nng_ctx_get_uint64;
732     pnng_ctx_get_string nng_ctx_get_string;
733     pnng_ctx_get_ptr nng_ctx_get_ptr;
734     pnng_ctx_get_ms nng_ctx_get_ms;
735     pnng_ctx_get_addr nng_ctx_get_addr;
736     pnng_ctx_set nng_ctx_set;
737     pnng_ctx_set_bool nng_ctx_set_bool;
738     pnng_ctx_set_int nng_ctx_set_int;
739     pnng_ctx_set_size nng_ctx_set_size;
740     pnng_ctx_set_uint64 nng_ctx_set_uint64;
741     pnng_ctx_set_string nng_ctx_set_string;
742     pnng_ctx_set_ptr nng_ctx_set_ptr;
743     pnng_ctx_set_ms nng_ctx_set_ms;
744     pnng_ctx_set_addr nng_ctx_set_addr;
745     pnng_alloc nng_alloc;
746     pnng_free nng_free;
747     pnng_strdup nng_strdup;
748     pnng_strfree nng_strfree;
749     pnng_aio_alloc nng_aio_alloc;
750     pnng_aio_free nng_aio_free;
751     pnng_aio_stop nng_aio_stop;
752     pnng_aio_result nng_aio_result;
753     pnng_aio_count nng_aio_count;
754     pnng_aio_cancel nng_aio_cancel;
755     pnng_aio_abort nng_aio_abort;
756     pnng_aio_wait nng_aio_wait;
757     pnng_aio_set_msg nng_aio_set_msg;
758     pnng_aio_get_msg nng_aio_get_msg;
759     pnng_aio_set_input nng_aio_set_input;
760     pnng_aio_get_input nng_aio_get_input;
761     pnng_aio_set_output nng_aio_set_output;
762     pnng_aio_get_output nng_aio_get_output;
763     pnng_aio_set_timeout nng_aio_set_timeout;
764     pnng_aio_set_iov nng_aio_set_iov;
765     pnng_aio_begin nng_aio_begin;
766     pnng_aio_finish nng_aio_finish;
767     pnng_aio_defer nng_aio_defer;
768     pnng_sleep_aio nng_sleep_aio;
769     pnng_msg_alloc nng_msg_alloc;
770     pnng_msg_free nng_msg_free;
771     pnng_msg_realloc nng_msg_realloc;
772     pnng_msg_header nng_msg_header;
773     pnng_msg_header_len nng_msg_header_len;
774     pnng_msg_body nng_msg_body;
775     pnng_msg_len nng_msg_len;
776     pnng_msg_append nng_msg_append;
777     pnng_msg_insert nng_msg_insert;
778     pnng_msg_trim nng_msg_trim;
779     pnng_msg_chop nng_msg_chop;
780     pnng_msg_header_append nng_msg_header_append;
781     pnng_msg_header_insert nng_msg_header_insert;
782     pnng_msg_header_trim nng_msg_header_trim;
783     pnng_msg_header_chop nng_msg_header_chop;
784     pnng_msg_header_append_u16 nng_msg_header_append_u16;
785     pnng_msg_header_append_u32 nng_msg_header_append_u32;
786     pnng_msg_header_append_u64 nng_msg_header_append_u64;
787     pnng_msg_header_insert_u16 nng_msg_header_insert_u16;
788     pnng_msg_header_insert_u32 nng_msg_header_insert_u32;
789     pnng_msg_header_insert_u64 nng_msg_header_insert_u64;
790     pnng_msg_header_chop_u16 nng_msg_header_chop_u16;
791     pnng_msg_header_chop_u32 nng_msg_header_chop_u32;
792     pnng_msg_header_chop_u64 nng_msg_header_chop_u64;
793     pnng_msg_header_trim_u16 nng_msg_header_trim_u16;
794     pnng_msg_header_trim_u32 nng_msg_header_trim_u32;
795     pnng_msg_header_trim_u64 nng_msg_header_trim_u64;
796     pnng_msg_append_u16 nng_msg_append_u16;
797     pnng_msg_append_u32 nng_msg_append_u32;
798     pnng_msg_append_u64 nng_msg_append_u64;
799     pnng_msg_insert_u16 nng_msg_insert_u16;
800     pnng_msg_insert_u32 nng_msg_insert_u32;
801     pnng_msg_insert_u64 nng_msg_insert_u64;
802     pnng_msg_chop_u16 nng_msg_chop_u16;
803     pnng_msg_chop_u32 nng_msg_chop_u32;
804     pnng_msg_chop_u64 nng_msg_chop_u64;
805     pnng_msg_trim_u16 nng_msg_trim_u16;
806     pnng_msg_trim_u32 nng_msg_trim_u32;
807     pnng_msg_trim_u64 nng_msg_trim_u64;
808     pnng_msg_dup nng_msg_dup;
809     pnng_msg_clear nng_msg_clear;
810     pnng_msg_header_clear nng_msg_header_clear;
811     pnng_msg_set_pipe nng_msg_set_pipe;
812     pnng_msg_get_pipe nng_msg_get_pipe;
813     pnng_msg_getopt nng_msg_getopt;
814     pnng_pipe_getopt nng_pipe_getopt;
815     pnng_pipe_getopt_bool nng_pipe_getopt_bool;
816     pnng_pipe_getopt_int nng_pipe_getopt_int;
817     pnng_pipe_getopt_ms nng_pipe_getopt_ms;
818     pnng_pipe_getopt_size nng_pipe_getopt_size;
819     pnng_pipe_getopt_sockaddr nng_pipe_getopt_sockaddr;
820     pnng_pipe_getopt_uint64 nng_pipe_getopt_uint64;
821     pnng_pipe_getopt_ptr nng_pipe_getopt_ptr;
822     pnng_pipe_getopt_string nng_pipe_getopt_string;
823     pnng_pipe_get nng_pipe_get;
824     pnng_pipe_get_bool nng_pipe_get_bool;
825     pnng_pipe_get_int nng_pipe_get_int;
826     pnng_pipe_get_ms nng_pipe_get_ms;
827     pnng_pipe_get_size nng_pipe_get_size;
828     pnng_pipe_get_uint64 nng_pipe_get_uint64;
829     pnng_pipe_get_string nng_pipe_get_string;
830     pnng_pipe_get_ptr nng_pipe_get_ptr;
831     pnng_pipe_get_addr nng_pipe_get_addr;
832     pnng_pipe_close nng_pipe_close;
833     pnng_pipe_id nng_pipe_id;
834     pnng_pipe_socket nng_pipe_socket;
835     pnng_pipe_dialer nng_pipe_dialer;
836     pnng_pipe_listener nng_pipe_listener;
837     pnng_stats_get nng_stats_get;
838     pnng_stats_free nng_stats_free;
839     pnng_stats_dump nng_stats_dump;
840     pnng_stat_next nng_stat_next;
841     pnng_stat_child nng_stat_child;
842     pnng_stat_name nng_stat_name;
843     pnng_stat_type nng_stat_type;
844     pnng_stat_find nng_stat_find;
845     pnng_stat_find_socket nng_stat_find_socket;
846     pnng_stat_find_dialer nng_stat_find_dialer;
847     pnng_stat_find_listener nng_stat_find_listener;
848     pnng_stat_unit nng_stat_unit;
849     pnng_stat_value nng_stat_value;
850     pnng_stat_string nng_stat_string;
851     pnng_stat_desc nng_stat_desc;
852     pnng_stat_timestamp nng_stat_timestamp;
853     pnng_device nng_device;
854     pnng_url_parse nng_url_parse;
855     pnng_url_free nng_url_free;
856     pnng_url_clone nng_url_clone;
857     pnng_version nng_version;
858     pnng_stream_free nng_stream_free;
859     pnng_stream_close nng_stream_close;
860     pnng_stream_send nng_stream_send;
861     pnng_stream_recv nng_stream_recv;
862     pnng_stream_get nng_stream_get;
863     pnng_stream_get_bool nng_stream_get_bool;
864     pnng_stream_get_int nng_stream_get_int;
865     pnng_stream_get_ms nng_stream_get_ms;
866     pnng_stream_get_size nng_stream_get_size;
867     pnng_stream_get_uint64 nng_stream_get_uint64;
868     pnng_stream_get_string nng_stream_get_string;
869     pnng_stream_get_ptr nng_stream_get_ptr;
870     pnng_stream_get_addr nng_stream_get_addr;
871     pnng_stream_set nng_stream_set;
872     pnng_stream_set_bool nng_stream_set_bool;
873     pnng_stream_set_int nng_stream_set_int;
874     pnng_stream_set_ms nng_stream_set_ms;
875     pnng_stream_set_size nng_stream_set_size;
876     pnng_stream_set_uint64 nng_stream_set_uint64;
877     pnng_stream_set_string nng_stream_set_string;
878     pnng_stream_set_ptr nng_stream_set_ptr;
879     pnng_stream_set_addr nng_stream_set_addr;
880     pnng_stream_dialer_alloc nng_stream_dialer_alloc;
881     pnng_stream_dialer_alloc_url nng_stream_dialer_alloc_url;
882     pnng_stream_dialer_free nng_stream_dialer_free;
883     pnng_stream_dialer_close nng_stream_dialer_close;
884     pnng_stream_dialer_dial nng_stream_dialer_dial;
885     pnng_stream_dialer_set nng_stream_dialer_set;
886     pnng_stream_dialer_get nng_stream_dialer_get;
887     pnng_stream_dialer_get_bool nng_stream_dialer_get_bool;
888     pnng_stream_dialer_get_int nng_stream_dialer_get_int;
889     pnng_stream_dialer_get_ms nng_stream_dialer_get_ms;
890     pnng_stream_dialer_get_size nng_stream_dialer_get_size;
891     pnng_stream_dialer_get_uint64 nng_stream_dialer_get_uint64;
892     pnng_stream_dialer_get_string nng_stream_dialer_get_string;
893     pnng_stream_dialer_get_ptr nng_stream_dialer_get_ptr;
894     pnng_stream_dialer_get_addr nng_stream_dialer_get_addr;
895     pnng_stream_dialer_set_bool nng_stream_dialer_set_bool;
896     pnng_stream_dialer_set_int nng_stream_dialer_set_int;
897     pnng_stream_dialer_set_ms nng_stream_dialer_set_ms;
898     pnng_stream_dialer_set_size nng_stream_dialer_set_size;
899     pnng_stream_dialer_set_uint64 nng_stream_dialer_set_uint64;
900     pnng_stream_dialer_set_string nng_stream_dialer_set_string;
901     pnng_stream_dialer_set_ptr nng_stream_dialer_set_ptr;
902     pnng_stream_dialer_set_addr nng_stream_dialer_set_addr;
903     pnng_stream_listener_alloc nng_stream_listener_alloc;
904     pnng_stream_listener_alloc_url nng_stream_listener_alloc_url;
905     pnng_stream_listener_free nng_stream_listener_free;
906     pnng_stream_listener_close nng_stream_listener_close;
907     pnng_stream_listener_listen nng_stream_listener_listen;
908     pnng_stream_listener_accept nng_stream_listener_accept;
909     pnng_stream_listener_set nng_stream_listener_set;
910     pnng_stream_listener_get nng_stream_listener_get;
911     pnng_stream_listener_get_bool nng_stream_listener_get_bool;
912     pnng_stream_listener_get_int nng_stream_listener_get_int;
913     pnng_stream_listener_get_ms nng_stream_listener_get_ms;
914     pnng_stream_listener_get_size nng_stream_listener_get_size;
915     pnng_stream_listener_get_uint64 nng_stream_listener_get_uint64;
916     pnng_stream_listener_get_string nng_stream_listener_get_string;
917     pnng_stream_listener_get_ptr nng_stream_listener_get_ptr;
918     pnng_stream_listener_get_addr nng_stream_listener_get_addr;
919     pnng_stream_listener_set_bool nng_stream_listener_set_bool;
920     pnng_stream_listener_set_int nng_stream_listener_set_int;
921     pnng_stream_listener_set_ms nng_stream_listener_set_ms;
922     pnng_stream_listener_set_size nng_stream_listener_set_size;
923     pnng_stream_listener_set_uint64 nng_stream_listener_set_uint64;
924     pnng_stream_listener_set_string nng_stream_listener_set_string;
925     pnng_stream_listener_set_ptr nng_stream_listener_set_ptr;
926     pnng_stream_listener_set_addr nng_stream_listener_set_addr;
927     pnn_cmsg_next nn_cmsg_next;
928     pnn_socket nn_socket;
929     pnn_setsockopt nn_setsockopt;
930     pnn_getsockopt nn_getsockopt;
931     pnn_bind nn_bind;
932     pnn_connect nn_connect;
933     pnn_shutdown nn_shutdown;
934     pnn_send nn_send;
935     pnn_recv nn_recv;
936     pnn_sendmsg nn_sendmsg;
937     pnn_recvmsg nn_recvmsg;
938     pnn_close nn_close;
939     pnn_poll nn_poll;
940     pnn_device nn_device;
941     pnn_get_statistic nn_get_statistic;
942     pnn_allocmsg nn_allocmsg;
943     pnn_reallocmsg nn_reallocmsg;
944     pnn_freemsg nn_freemsg;
945     pnn_errno nn_errno;
946     pnn_strerror nn_strerror;
947     pnn_term nn_term;
948     pnng_bus0_open nng_bus0_open;
949     pnng_bus0_open_raw nng_bus0_open_raw;
950     pnng_bus0_open nng_bus_open;
951     pnng_bus0_open_raw nng_bus_open_raw;
952     pnng_pair0_open nng_pair0_open;
953     pnng_pair0_open_raw nng_pair0_open_raw;
954     //pnng_pair0_open nng_pair_open;
955     //pnng_pair0_open_raw nng_pair_open_raw;
956     pnng_pair1_open nng_pair1_open;
957     pnng_pair1_open_raw nng_pair1_open_raw;
958     //pnng_pair1_open nng_pair_open;
959     //pnng_pair1_open_raw nng_pair_open_raw;
960     pnng_pull0_open nng_pull0_open;
961     pnng_pull0_open_raw nng_pull0_open_raw;
962     pnng_pull0_open nng_pull_open;
963     pnng_pull0_open_raw nng_pull_open_raw;
964     pnng_push0_open nng_push0_open;
965     pnng_push0_open_raw nng_push0_open_raw;
966     pnng_push0_open nng_push_open;
967     pnng_push0_open_raw nng_push_open_raw;
968     pnng_pub0_open nng_pub0_open;
969     pnng_pub0_open_raw nng_pub0_open_raw;
970     pnng_pub0_open nng_pub_open;
971     pnng_pub0_open_raw nng_pub_open_raw;
972     pnng_sub0_open nng_sub0_open;
973     pnng_sub0_open_raw nng_sub0_open_raw;
974     pnng_sub0_open nng_sub_open;
975     pnng_sub0_open_raw nng_sub_open_raw;
976     pnng_rep0_open nng_rep0_open;
977     pnng_rep0_open_raw nng_rep0_open_raw;
978     pnng_rep0_open nng_rep_open;
979     pnng_rep0_open_raw nng_rep_open_raw;
980     pnng_respondent0_open nng_respondent0_open;
981     pnng_respondent0_open_raw nng_respondent0_open_raw;
982     pnng_respondent0_open nng_respondent_open;
983     pnng_respondent0_open_raw nng_respondent_open_raw;
984     pnng_surveyor0_open nng_surveyor0_open;
985     pnng_surveyor0_open_raw nng_surveyor0_open_raw;
986     pnng_surveyor0_open nng_surveyor_open;
987     pnng_surveyor0_open_raw nng_surveyor_open_raw;
988     pnng_http_req_alloc nng_http_req_alloc;
989     pnng_http_req_free nng_http_req_free;
990     pnng_http_req_get_method nng_http_req_get_method;
991     pnng_http_req_get_version nng_http_req_get_version;
992     pnng_http_req_get_uri nng_http_req_get_uri;
993     pnng_http_req_set_header nng_http_req_set_header;
994     pnng_http_req_add_header nng_http_req_add_header;
995     pnng_http_req_del_header nng_http_req_del_header;
996     pnng_http_req_get_header nng_http_req_get_header;
997     pnng_http_req_set_method nng_http_req_set_method;
998     pnng_http_req_set_version nng_http_req_set_version;
999     pnng_http_req_set_uri nng_http_req_set_uri;
1000     pnng_http_req_set_data nng_http_req_set_data;
1001     pnng_http_req_copy_data nng_http_req_copy_data;
1002     pnng_http_req_get_data nng_http_req_get_data;
1003     pnng_http_res_alloc nng_http_res_alloc;
1004     pnng_http_res_alloc_error nng_http_res_alloc_error;
1005     pnng_http_res_free nng_http_res_free;
1006     pnng_http_res_get_status nng_http_res_get_status;
1007     pnng_http_res_set_status nng_http_res_set_status;
1008     pnng_http_res_get_reason nng_http_res_get_reason;
1009     pnng_http_res_set_reason nng_http_res_set_reason;
1010     pnng_http_res_set_header nng_http_res_set_header;
1011     pnng_http_res_add_header nng_http_res_add_header;
1012     pnng_http_res_del_header nng_http_res_del_header;
1013     pnng_http_res_get_header nng_http_res_get_header;
1014     pnng_http_res_set_version nng_http_res_set_version;
1015     pnng_http_res_get_version nng_http_res_get_version;
1016     pnng_http_res_get_data nng_http_res_get_data;
1017     pnng_http_res_set_data nng_http_res_set_data;
1018     pnng_http_res_copy_data nng_http_res_copy_data;
1019     pnng_http_conn_close nng_http_conn_close;
1020     pnng_http_conn_read nng_http_conn_read;
1021     pnng_http_conn_read_all nng_http_conn_read_all;
1022     pnng_http_conn_write nng_http_conn_write;
1023     pnng_http_conn_write_all nng_http_conn_write_all;
1024     pnng_http_conn_write_req nng_http_conn_write_req;
1025     pnng_http_conn_write_res nng_http_conn_write_res;
1026     pnng_http_conn_read_req nng_http_conn_read_req;
1027     pnng_http_conn_read_res nng_http_conn_read_res;
1028     pnng_http_req_reset nng_http_req_reset;
1029     pnng_http_res_reset nng_http_res_reset;
1030     pnng_http_handler_alloc nng_http_handler_alloc;
1031     pnng_http_handler_free nng_http_handler_free;
1032     pnng_http_handler_alloc_file nng_http_handler_alloc_file;
1033     pnng_http_handler_alloc_static nng_http_handler_alloc_static;
1034     pnng_http_handler_alloc_redirect nng_http_handler_alloc_redirect;
1035     pnng_http_handler_alloc_directory nng_http_handler_alloc_directory;
1036     pnng_http_handler_set_method nng_http_handler_set_method;
1037     pnng_http_handler_set_host nng_http_handler_set_host;
1038     pnng_http_handler_collect_body nng_http_handler_collect_body;
1039     pnng_http_handler_set_tree nng_http_handler_set_tree;
1040     pnng_http_handler_set_data nng_http_handler_set_data;
1041     pnng_http_handler_get_data nng_http_handler_get_data;
1042     pnng_http_server_hold nng_http_server_hold;
1043     pnng_http_server_release nng_http_server_release;
1044     pnng_http_server_start nng_http_server_start;
1045     pnng_http_server_stop nng_http_server_stop;
1046     pnng_http_server_add_handler nng_http_server_add_handler;
1047     pnng_http_server_del_handler nng_http_server_del_handler;
1048     pnng_http_server_set_tls nng_http_server_set_tls;
1049     pnng_http_server_get_tls nng_http_server_get_tls;
1050     pnng_http_server_get_addr nng_http_server_get_addr;
1051     pnng_http_server_set_error_page nng_http_server_set_error_page;
1052     pnng_http_server_set_error_file nng_http_server_set_error_file;
1053     pnng_http_server_res_error nng_http_server_res_error;
1054     pnng_http_hijack nng_http_hijack;
1055     pnng_http_client_alloc nng_http_client_alloc;
1056     pnng_http_client_free nng_http_client_free;
1057     pnng_http_client_set_tls nng_http_client_set_tls;
1058     pnng_http_client_get_tls nng_http_client_get_tls;
1059     pnng_http_client_connect nng_http_client_connect;
1060     pnng_http_conn_transact nng_http_conn_transact;
1061     pnng_http_client_transact nng_http_client_transact;
1062     pnng_tls_config_alloc nng_tls_config_alloc;
1063     pnng_tls_config_hold nng_tls_config_hold;
1064     pnng_tls_config_free nng_tls_config_free;
1065     pnng_tls_config_server_name nng_tls_config_server_name;
1066     pnng_tls_config_ca_chain nng_tls_config_ca_chain;
1067     pnng_tls_config_own_cert nng_tls_config_own_cert;
1068     pnng_tls_config_key nng_tls_config_key;
1069     pnng_tls_config_pass nng_tls_config_pass;
1070     pnng_tls_config_auth_mode nng_tls_config_auth_mode;
1071     pnng_tls_config_ca_file nng_tls_config_ca_file;
1072     pnng_tls_config_cert_key_file nng_tls_config_cert_key_file;
1073     pnng_opts_parse nng_opts_parse;
1074     pnng_clock nng_clock;
1075     pnng_msleep nng_msleep;
1076     pnng_thread_create nng_thread_create;
1077     pnng_thread_destroy nng_thread_destroy;
1078     pnng_mtx_alloc nng_mtx_alloc;
1079     pnng_mtx_free nng_mtx_free;
1080     pnng_mtx_lock nng_mtx_lock;
1081     pnng_mtx_unlock nng_mtx_unlock;
1082     pnng_cv_alloc nng_cv_alloc;
1083     pnng_cv_free nng_cv_free;
1084     pnng_cv_wait nng_cv_wait;
1085     pnng_cv_until nng_cv_until;
1086     pnng_cv_wake nng_cv_wake;
1087     pnng_cv_wake1 nng_cv_wake1;
1088     pnng_random nng_random;
1089     pnng_inproc_register nng_inproc_register;
1090     pnng_ipc_register nng_ipc_register;
1091     pnng_tcp_register nng_tcp_register;
1092     pnng_tls_register nng_tls_register;
1093     pnng_ws_register nng_ws_register;
1094     pnng_wss_register nng_wss_register;
1095     pnng_zt_register nng_zt_register;
1096 }
1097 
1098 
1099 private {
1100     SharedLib lib;
1101     NNGSupport loadedVersion;
1102 }
1103 
1104 enum NNGSupport {
1105     noLibrary,
1106     badLibrary,
1107     nng
1108 }
1109 
1110 NNGSupport loadedNNGVersion() { return loadedVersion; }
1111 bool isNNGLoaded() { return lib != invalidHandle; }
1112 
1113 
1114 NNGSupport loadNNG() {
1115     version(Windows) {
1116         const(char)[][1] libNames = [
1117             "./nng/build/Release/nng.lib"
1118         ];
1119     }
1120     else {
1121         const(char)[][1] libNames = [
1122             "./nng/build/libnng.a"
1123         ];
1124     }
1125 
1126     NNGSupport ret;
1127     foreach(name; libNames) {
1128         ret = loadNNG(name.ptr);
1129         if(ret != NNGSupport.noLibrary) break;
1130     }
1131     return ret;
1132 }
1133 
1134 NNGSupport loadNNG(const(char)* libName)
1135 {
1136     lib = load(libName);
1137     if(lib == invalidHandle) {
1138         return NNGSupport.noLibrary;
1139     }
1140 
1141     auto errCount = errorCount();
1142     loadedVersion = NNGSupport.badLibrary;
1143 
1144 
1145     lib.bindSymbol(cast(void**)&nng_fini, "nng_fini");
1146     lib.bindSymbol(cast(void**)&nng_close, "nng_close");
1147     lib.bindSymbol(cast(void**)&nng_socket_id, "nng_socket_id");
1148     lib.bindSymbol(cast(void**)&nng_closeall, "nng_closeall");
1149     lib.bindSymbol(cast(void**)&nng_setopt, "nng_setopt");
1150     lib.bindSymbol(cast(void**)&nng_setopt_bool, "nng_setopt_bool");
1151     lib.bindSymbol(cast(void**)&nng_setopt_int, "nng_setopt_int");
1152     lib.bindSymbol(cast(void**)&nng_setopt_ms, "nng_setopt_ms");
1153     lib.bindSymbol(cast(void**)&nng_setopt_size, "nng_setopt_size");
1154     lib.bindSymbol(cast(void**)&nng_setopt_uint64, "nng_setopt_uint64");
1155     lib.bindSymbol(cast(void**)&nng_setopt_string, "nng_setopt_string");
1156     lib.bindSymbol(cast(void**)&nng_setopt_ptr, "nng_setopt_ptr");
1157     lib.bindSymbol(cast(void**)&nng_getopt, "nng_getopt");
1158     lib.bindSymbol(cast(void**)&nng_getopt_bool, "nng_getopt_bool");
1159     lib.bindSymbol(cast(void**)&nng_getopt_int, "nng_getopt_int");
1160     lib.bindSymbol(cast(void**)&nng_getopt_ms, "nng_getopt_ms");
1161     lib.bindSymbol(cast(void**)&nng_getopt_size, "nng_getopt_size");
1162     lib.bindSymbol(cast(void**)&nng_getopt_uint64, "nng_getopt_uint64");
1163     lib.bindSymbol(cast(void**)&nng_getopt_ptr, "nng_getopt_ptr");
1164     lib.bindSymbol(cast(void**)&nng_getopt_string, "nng_getopt_string");
1165     lib.bindSymbol(cast(void**)&nng_socket_set, "nng_socket_set");
1166     lib.bindSymbol(cast(void**)&nng_socket_set_bool, "nng_socket_set_bool");
1167     lib.bindSymbol(cast(void**)&nng_socket_set_int, "nng_socket_set_int");
1168     lib.bindSymbol(cast(void**)&nng_socket_set_size, "nng_socket_set_size");
1169     lib.bindSymbol(cast(void**)&nng_socket_set_uint64, "nng_socket_set_uint64");
1170     lib.bindSymbol(cast(void**)&nng_socket_set_string, "nng_socket_set_string");
1171     lib.bindSymbol(cast(void**)&nng_socket_set_ptr, "nng_socket_set_ptr");
1172     lib.bindSymbol(cast(void**)&nng_socket_set_ms, "nng_socket_set_ms");
1173     lib.bindSymbol(cast(void**)&nng_socket_set_addr, "nng_socket_set_addr");
1174     lib.bindSymbol(cast(void**)&nng_socket_get, "nng_socket_get");
1175     lib.bindSymbol(cast(void**)&nng_socket_get_bool, "nng_socket_get_bool");
1176     lib.bindSymbol(cast(void**)&nng_socket_get_int, "nng_socket_get_int");
1177     lib.bindSymbol(cast(void**)&nng_socket_get_size, "nng_socket_get_size");
1178     lib.bindSymbol(cast(void**)&nng_socket_get_uint64, "nng_socket_get_uint64");
1179     lib.bindSymbol(cast(void**)&nng_socket_get_string, "nng_socket_get_string");
1180     lib.bindSymbol(cast(void**)&nng_socket_get_ptr, "nng_socket_get_ptr");
1181     lib.bindSymbol(cast(void**)&nng_socket_get_ms, "nng_socket_get_ms");
1182     lib.bindSymbol(cast(void**)&nng_socket_get_addr, "nng_socket_get_addr");
1183     lib.bindSymbol(cast(void**)&nng_pipe_notify, "nng_pipe_notify");
1184     lib.bindSymbol(cast(void**)&nng_listen, "nng_listen");
1185     lib.bindSymbol(cast(void**)&nng_dial, "nng_dial");
1186     lib.bindSymbol(cast(void**)&nng_dialer_create, "nng_dialer_create");
1187     lib.bindSymbol(cast(void**)&nng_listener_create, "nng_listener_create");
1188     lib.bindSymbol(cast(void**)&nng_dialer_start, "nng_dialer_start");
1189     lib.bindSymbol(cast(void**)&nng_listener_start, "nng_listener_start");
1190     lib.bindSymbol(cast(void**)&nng_dialer_close, "nng_dialer_close");
1191     lib.bindSymbol(cast(void**)&nng_listener_close, "nng_listener_close");
1192     lib.bindSymbol(cast(void**)&nng_dialer_id, "nng_dialer_id");
1193     lib.bindSymbol(cast(void**)&nng_listener_id, "nng_listener_id");
1194     lib.bindSymbol(cast(void**)&nng_dialer_setopt, "nng_dialer_setopt");
1195     lib.bindSymbol(cast(void**)&nng_dialer_setopt_bool, "nng_dialer_setopt_bool");
1196     lib.bindSymbol(cast(void**)&nng_dialer_setopt_int, "nng_dialer_setopt_int");
1197     lib.bindSymbol(cast(void**)&nng_dialer_setopt_ms, "nng_dialer_setopt_ms");
1198     lib.bindSymbol(cast(void**)&nng_dialer_setopt_size, "nng_dialer_setopt_size");
1199     lib.bindSymbol(cast(void**)&nng_dialer_setopt_uint64, "nng_dialer_setopt_uint64");
1200     lib.bindSymbol(cast(void**)&nng_dialer_setopt_ptr, "nng_dialer_setopt_ptr");
1201     lib.bindSymbol(cast(void**)&nng_dialer_setopt_string, "nng_dialer_setopt_string");
1202     lib.bindSymbol(cast(void**)&nng_dialer_getopt, "nng_dialer_getopt");
1203     lib.bindSymbol(cast(void**)&nng_dialer_getopt_bool, "nng_dialer_getopt_bool");
1204     lib.bindSymbol(cast(void**)&nng_dialer_getopt_int, "nng_dialer_getopt_int");
1205     lib.bindSymbol(cast(void**)&nng_dialer_getopt_ms, "nng_dialer_getopt_ms");
1206     lib.bindSymbol(cast(void**)&nng_dialer_getopt_size, "nng_dialer_getopt_size");
1207     lib.bindSymbol(cast(void**)&nng_dialer_getopt_sockaddr, "nng_dialer_getopt_sockaddr");
1208     lib.bindSymbol(cast(void**)&nng_dialer_getopt_uint64, "nng_dialer_getopt_uint64");
1209     lib.bindSymbol(cast(void**)&nng_dialer_getopt_ptr, "nng_dialer_getopt_ptr");
1210     lib.bindSymbol(cast(void**)&nng_dialer_getopt_string, "nng_dialer_getopt_string");
1211     lib.bindSymbol(cast(void**)&nng_dialer_set, "nng_dialer_set");
1212     lib.bindSymbol(cast(void**)&nng_dialer_set_bool, "nng_dialer_set_bool");
1213     lib.bindSymbol(cast(void**)&nng_dialer_set_int, "nng_dialer_set_int");
1214     lib.bindSymbol(cast(void**)&nng_dialer_set_size, "nng_dialer_set_size");
1215     lib.bindSymbol(cast(void**)&nng_dialer_set_uint64, "nng_dialer_set_uint64");
1216     lib.bindSymbol(cast(void**)&nng_dialer_set_string, "nng_dialer_set_string");
1217     lib.bindSymbol(cast(void**)&nng_dialer_set_ptr, "nng_dialer_set_ptr");
1218     lib.bindSymbol(cast(void**)&nng_dialer_set_ms, "nng_dialer_set_ms");
1219     lib.bindSymbol(cast(void**)&nng_dialer_set_addr, "nng_dialer_set_addr");
1220     lib.bindSymbol(cast(void**)&nng_dialer_get, "nng_dialer_get");
1221     lib.bindSymbol(cast(void**)&nng_dialer_get_bool, "nng_dialer_get_bool");
1222     lib.bindSymbol(cast(void**)&nng_dialer_get_int, "nng_dialer_get_int");
1223     lib.bindSymbol(cast(void**)&nng_dialer_get_size, "nng_dialer_get_size");
1224     lib.bindSymbol(cast(void**)&nng_dialer_get_uint64, "nng_dialer_get_uint64");
1225     lib.bindSymbol(cast(void**)&nng_dialer_get_string, "nng_dialer_get_string");
1226     lib.bindSymbol(cast(void**)&nng_dialer_get_ptr, "nng_dialer_get_ptr");
1227     lib.bindSymbol(cast(void**)&nng_dialer_get_ms, "nng_dialer_get_ms");
1228     lib.bindSymbol(cast(void**)&nng_dialer_get_addr, "nng_dialer_get_addr");
1229     lib.bindSymbol(cast(void**)&nng_listener_setopt, "nng_listener_setopt");
1230     lib.bindSymbol(cast(void**)&nng_listener_setopt_bool, "nng_listener_setopt_bool");
1231     lib.bindSymbol(cast(void**)&nng_listener_setopt_int, "nng_listener_setopt_int");
1232     lib.bindSymbol(cast(void**)&nng_listener_setopt_ms, "nng_listener_setopt_ms");
1233     lib.bindSymbol(cast(void**)&nng_listener_setopt_size, "nng_listener_setopt_size");
1234     lib.bindSymbol(cast(void**)&nng_listener_setopt_uint64, "nng_listener_setopt_uint64");
1235     lib.bindSymbol(cast(void**)&nng_listener_setopt_ptr, "nng_listener_setopt_ptr");
1236     lib.bindSymbol(cast(void**)&nng_listener_setopt_string, "nng_listener_setopt_string");
1237     lib.bindSymbol(cast(void**)&nng_listener_getopt, "nng_listener_getopt");
1238     lib.bindSymbol(cast(void**)&nng_listener_getopt_bool, "nng_listener_getopt_bool");
1239     lib.bindSymbol(cast(void**)&nng_listener_getopt_int, "nng_listener_getopt_int");
1240     lib.bindSymbol(cast(void**)&nng_listener_getopt_ms, "nng_listener_getopt_ms");
1241     lib.bindSymbol(cast(void**)&nng_listener_getopt_size, "nng_listener_getopt_size");
1242     lib.bindSymbol(cast(void**)&nng_listener_getopt_sockaddr, "nng_listener_getopt_sockaddr");
1243     lib.bindSymbol(cast(void**)&nng_listener_getopt_uint64, "nng_listener_getopt_uint64");
1244     lib.bindSymbol(cast(void**)&nng_listener_getopt_ptr, "nng_listener_getopt_ptr");
1245     lib.bindSymbol(cast(void**)&nng_listener_getopt_string, "nng_listener_getopt_string");
1246     lib.bindSymbol(cast(void**)&nng_listener_set, "nng_listener_set");
1247     lib.bindSymbol(cast(void**)&nng_listener_set_bool, "nng_listener_set_bool");
1248     lib.bindSymbol(cast(void**)&nng_listener_set_int, "nng_listener_set_int");
1249     lib.bindSymbol(cast(void**)&nng_listener_set_size, "nng_listener_set_size");
1250     lib.bindSymbol(cast(void**)&nng_listener_set_uint64, "nng_listener_set_uint64");
1251     lib.bindSymbol(cast(void**)&nng_listener_set_string, "nng_listener_set_string");
1252     lib.bindSymbol(cast(void**)&nng_listener_set_ptr, "nng_listener_set_ptr");
1253     lib.bindSymbol(cast(void**)&nng_listener_set_ms, "nng_listener_set_ms");
1254     lib.bindSymbol(cast(void**)&nng_listener_set_addr, "nng_listener_set_addr");
1255     lib.bindSymbol(cast(void**)&nng_listener_get, "nng_listener_get");
1256     lib.bindSymbol(cast(void**)&nng_listener_get_bool, "nng_listener_get_bool");
1257     lib.bindSymbol(cast(void**)&nng_listener_get_int, "nng_listener_get_int");
1258     lib.bindSymbol(cast(void**)&nng_listener_get_size, "nng_listener_get_size");
1259     lib.bindSymbol(cast(void**)&nng_listener_get_uint64, "nng_listener_get_uint64");
1260     lib.bindSymbol(cast(void**)&nng_listener_get_string, "nng_listener_get_string");
1261     lib.bindSymbol(cast(void**)&nng_listener_get_ptr, "nng_listener_get_ptr");
1262     lib.bindSymbol(cast(void**)&nng_listener_get_ms, "nng_listener_get_ms");
1263     lib.bindSymbol(cast(void**)&nng_listener_get_addr, "nng_listener_get_addr");
1264     lib.bindSymbol(cast(void**)&nng_strerror, "nng_strerror");
1265     lib.bindSymbol(cast(void**)&nng_send, "nng_send");
1266     lib.bindSymbol(cast(void**)&nng_recv, "nng_recv");
1267     lib.bindSymbol(cast(void**)&nng_sendmsg, "nng_sendmsg");
1268     lib.bindSymbol(cast(void**)&nng_recvmsg, "nng_recvmsg");
1269     lib.bindSymbol(cast(void**)&nng_send_aio, "nng_send_aio");
1270     lib.bindSymbol(cast(void**)&nng_recv_aio, "nng_recv_aio");
1271     lib.bindSymbol(cast(void**)&nng_ctx_open, "nng_ctx_open");
1272     lib.bindSymbol(cast(void**)&nng_ctx_close, "nng_ctx_close");
1273     lib.bindSymbol(cast(void**)&nng_ctx_id, "nng_ctx_id");
1274     lib.bindSymbol(cast(void**)&nng_ctx_recv, "nng_ctx_recv");
1275     lib.bindSymbol(cast(void**)&nng_ctx_send, "nng_ctx_send");
1276     lib.bindSymbol(cast(void**)&nng_ctx_getopt, "nng_ctx_getopt");
1277     lib.bindSymbol(cast(void**)&nng_ctx_getopt_bool, "nng_ctx_getopt_bool");
1278     lib.bindSymbol(cast(void**)&nng_ctx_getopt_int, "nng_ctx_getopt_int");
1279     lib.bindSymbol(cast(void**)&nng_ctx_getopt_ms, "nng_ctx_getopt_ms");
1280     lib.bindSymbol(cast(void**)&nng_ctx_getopt_size, "nng_ctx_getopt_size");
1281     lib.bindSymbol(cast(void**)&nng_ctx_setopt, "nng_ctx_setopt");
1282     lib.bindSymbol(cast(void**)&nng_ctx_setopt_bool, "nng_ctx_setopt_bool");
1283     lib.bindSymbol(cast(void**)&nng_ctx_setopt_int, "nng_ctx_setopt_int");
1284     lib.bindSymbol(cast(void**)&nng_ctx_setopt_ms, "nng_ctx_setopt_ms");
1285     lib.bindSymbol(cast(void**)&nng_ctx_setopt_size, "nng_ctx_setopt_size");
1286     lib.bindSymbol(cast(void**)&nng_ctx_get, "nng_ctx_get");
1287     lib.bindSymbol(cast(void**)&nng_ctx_get_bool, "nng_ctx_get_bool");
1288     lib.bindSymbol(cast(void**)&nng_ctx_get_int, "nng_ctx_get_int");
1289     lib.bindSymbol(cast(void**)&nng_ctx_get_size, "nng_ctx_get_size");
1290     lib.bindSymbol(cast(void**)&nng_ctx_get_uint64, "nng_ctx_get_uint64");
1291     lib.bindSymbol(cast(void**)&nng_ctx_get_string, "nng_ctx_get_string");
1292     lib.bindSymbol(cast(void**)&nng_ctx_get_ptr, "nng_ctx_get_ptr");
1293     lib.bindSymbol(cast(void**)&nng_ctx_get_ms, "nng_ctx_get_ms");
1294     lib.bindSymbol(cast(void**)&nng_ctx_get_addr, "nng_ctx_get_addr");
1295     lib.bindSymbol(cast(void**)&nng_ctx_set, "nng_ctx_set");
1296     lib.bindSymbol(cast(void**)&nng_ctx_set_bool, "nng_ctx_set_bool");
1297     lib.bindSymbol(cast(void**)&nng_ctx_set_int, "nng_ctx_set_int");
1298     lib.bindSymbol(cast(void**)&nng_ctx_set_size, "nng_ctx_set_size");
1299     lib.bindSymbol(cast(void**)&nng_ctx_set_uint64, "nng_ctx_set_uint64");
1300     lib.bindSymbol(cast(void**)&nng_ctx_set_string, "nng_ctx_set_string");
1301     lib.bindSymbol(cast(void**)&nng_ctx_set_ptr, "nng_ctx_set_ptr");
1302     lib.bindSymbol(cast(void**)&nng_ctx_set_ms, "nng_ctx_set_ms");
1303     lib.bindSymbol(cast(void**)&nng_ctx_set_addr, "nng_ctx_set_addr");
1304     lib.bindSymbol(cast(void**)&nng_alloc, "nng_alloc");
1305     lib.bindSymbol(cast(void**)&nng_free, "nng_free");
1306     lib.bindSymbol(cast(void**)&nng_strdup, "nng_strdup");
1307     lib.bindSymbol(cast(void**)&nng_strfree, "nng_strfree");
1308     lib.bindSymbol(cast(void**)&nng_aio_alloc, "nng_aio_alloc");
1309     lib.bindSymbol(cast(void**)&nng_aio_free, "nng_aio_free");
1310     lib.bindSymbol(cast(void**)&nng_aio_stop, "nng_aio_stop");
1311     lib.bindSymbol(cast(void**)&nng_aio_result, "nng_aio_result");
1312     lib.bindSymbol(cast(void**)&nng_aio_count, "nng_aio_count");
1313     lib.bindSymbol(cast(void**)&nng_aio_cancel, "nng_aio_cancel");
1314     lib.bindSymbol(cast(void**)&nng_aio_abort, "nng_aio_abort");
1315     lib.bindSymbol(cast(void**)&nng_aio_wait, "nng_aio_wait");
1316     lib.bindSymbol(cast(void**)&nng_aio_set_msg, "nng_aio_set_msg");
1317     lib.bindSymbol(cast(void**)&nng_aio_get_msg, "nng_aio_get_msg");
1318     lib.bindSymbol(cast(void**)&nng_aio_set_input, "nng_aio_set_input");
1319     lib.bindSymbol(cast(void**)&nng_aio_get_input, "nng_aio_get_input");
1320     lib.bindSymbol(cast(void**)&nng_aio_set_output, "nng_aio_set_output");
1321     lib.bindSymbol(cast(void**)&nng_aio_get_output, "nng_aio_get_output");
1322     lib.bindSymbol(cast(void**)&nng_aio_set_timeout, "nng_aio_set_timeout");
1323     lib.bindSymbol(cast(void**)&nng_aio_set_iov, "nng_aio_set_iov");
1324     lib.bindSymbol(cast(void**)&nng_aio_begin, "nng_aio_begin");
1325     lib.bindSymbol(cast(void**)&nng_aio_finish, "nng_aio_finish");
1326     lib.bindSymbol(cast(void**)&nng_aio_defer, "nng_aio_defer");
1327     lib.bindSymbol(cast(void**)&nng_sleep_aio, "nng_sleep_aio");
1328     lib.bindSymbol(cast(void**)&nng_msg_alloc, "nng_msg_alloc");
1329     lib.bindSymbol(cast(void**)&nng_msg_free, "nng_msg_free");
1330     lib.bindSymbol(cast(void**)&nng_msg_realloc, "nng_msg_realloc");
1331     lib.bindSymbol(cast(void**)&nng_msg_header, "nng_msg_header");
1332     lib.bindSymbol(cast(void**)&nng_msg_header_len, "nng_msg_header_len");
1333     lib.bindSymbol(cast(void**)&nng_msg_body, "nng_msg_body");
1334     lib.bindSymbol(cast(void**)&nng_msg_len, "nng_msg_len");
1335     lib.bindSymbol(cast(void**)&nng_msg_append, "nng_msg_append");
1336     lib.bindSymbol(cast(void**)&nng_msg_insert, "nng_msg_insert");
1337     lib.bindSymbol(cast(void**)&nng_msg_trim, "nng_msg_trim");
1338     lib.bindSymbol(cast(void**)&nng_msg_chop, "nng_msg_chop");
1339     lib.bindSymbol(cast(void**)&nng_msg_header_append, "nng_msg_header_append");
1340     lib.bindSymbol(cast(void**)&nng_msg_header_insert, "nng_msg_header_insert");
1341     lib.bindSymbol(cast(void**)&nng_msg_header_trim, "nng_msg_header_trim");
1342     lib.bindSymbol(cast(void**)&nng_msg_header_chop, "nng_msg_header_chop");
1343     lib.bindSymbol(cast(void**)&nng_msg_header_append_u16, "nng_msg_header_append_u16");
1344     lib.bindSymbol(cast(void**)&nng_msg_header_append_u32, "nng_msg_header_append_u32");
1345     lib.bindSymbol(cast(void**)&nng_msg_header_append_u64, "nng_msg_header_append_u64");
1346     lib.bindSymbol(cast(void**)&nng_msg_header_insert_u16, "nng_msg_header_insert_u16");
1347     lib.bindSymbol(cast(void**)&nng_msg_header_insert_u32, "nng_msg_header_insert_u32");
1348     lib.bindSymbol(cast(void**)&nng_msg_header_insert_u64, "nng_msg_header_insert_u64");
1349     lib.bindSymbol(cast(void**)&nng_msg_header_chop_u16, "nng_msg_header_chop_u16");
1350     lib.bindSymbol(cast(void**)&nng_msg_header_chop_u32, "nng_msg_header_chop_u32");
1351     lib.bindSymbol(cast(void**)&nng_msg_header_chop_u64, "nng_msg_header_chop_u64");
1352     lib.bindSymbol(cast(void**)&nng_msg_header_trim_u16, "nng_msg_header_trim_u16");
1353     lib.bindSymbol(cast(void**)&nng_msg_header_trim_u32, "nng_msg_header_trim_u32");
1354     lib.bindSymbol(cast(void**)&nng_msg_header_trim_u64, "nng_msg_header_trim_u64");
1355     lib.bindSymbol(cast(void**)&nng_msg_append_u16, "nng_msg_append_u16");
1356     lib.bindSymbol(cast(void**)&nng_msg_append_u32, "nng_msg_append_u32");
1357     lib.bindSymbol(cast(void**)&nng_msg_append_u64, "nng_msg_append_u64");
1358     lib.bindSymbol(cast(void**)&nng_msg_insert_u16, "nng_msg_insert_u16");
1359     lib.bindSymbol(cast(void**)&nng_msg_insert_u32, "nng_msg_insert_u32");
1360     lib.bindSymbol(cast(void**)&nng_msg_insert_u64, "nng_msg_insert_u64");
1361     lib.bindSymbol(cast(void**)&nng_msg_chop_u16, "nng_msg_chop_u16");
1362     lib.bindSymbol(cast(void**)&nng_msg_chop_u32, "nng_msg_chop_u32");
1363     lib.bindSymbol(cast(void**)&nng_msg_chop_u64, "nng_msg_chop_u64");
1364     lib.bindSymbol(cast(void**)&nng_msg_trim_u16, "nng_msg_trim_u16");
1365     lib.bindSymbol(cast(void**)&nng_msg_trim_u32, "nng_msg_trim_u32");
1366     lib.bindSymbol(cast(void**)&nng_msg_trim_u64, "nng_msg_trim_u64");
1367     lib.bindSymbol(cast(void**)&nng_msg_dup, "nng_msg_dup");
1368     lib.bindSymbol(cast(void**)&nng_msg_clear, "nng_msg_clear");
1369     lib.bindSymbol(cast(void**)&nng_msg_header_clear, "nng_msg_header_clear");
1370     lib.bindSymbol(cast(void**)&nng_msg_set_pipe, "nng_msg_set_pipe");
1371     lib.bindSymbol(cast(void**)&nng_msg_get_pipe, "nng_msg_get_pipe");
1372     lib.bindSymbol(cast(void**)&nng_msg_getopt, "nng_msg_getopt");
1373     lib.bindSymbol(cast(void**)&nng_pipe_getopt, "nng_pipe_getopt");
1374     lib.bindSymbol(cast(void**)&nng_pipe_getopt_bool, "nng_pipe_getopt_bool");
1375     lib.bindSymbol(cast(void**)&nng_pipe_getopt_int, "nng_pipe_getopt_int");
1376     lib.bindSymbol(cast(void**)&nng_pipe_getopt_ms, "nng_pipe_getopt_ms");
1377     lib.bindSymbol(cast(void**)&nng_pipe_getopt_size, "nng_pipe_getopt_size");
1378     lib.bindSymbol(cast(void**)&nng_pipe_getopt_sockaddr, "nng_pipe_getopt_sockaddr");
1379     lib.bindSymbol(cast(void**)&nng_pipe_getopt_uint64, "nng_pipe_getopt_uint64");
1380     lib.bindSymbol(cast(void**)&nng_pipe_getopt_ptr, "nng_pipe_getopt_ptr");
1381     lib.bindSymbol(cast(void**)&nng_pipe_getopt_string, "nng_pipe_getopt_string");
1382     lib.bindSymbol(cast(void**)&nng_pipe_get, "nng_pipe_get");
1383     lib.bindSymbol(cast(void**)&nng_pipe_get_bool, "nng_pipe_get_bool");
1384     lib.bindSymbol(cast(void**)&nng_pipe_get_int, "nng_pipe_get_int");
1385     lib.bindSymbol(cast(void**)&nng_pipe_get_ms, "nng_pipe_get_ms");
1386     lib.bindSymbol(cast(void**)&nng_pipe_get_size, "nng_pipe_get_size");
1387     lib.bindSymbol(cast(void**)&nng_pipe_get_uint64, "nng_pipe_get_uint64");
1388     lib.bindSymbol(cast(void**)&nng_pipe_get_string, "nng_pipe_get_string");
1389     lib.bindSymbol(cast(void**)&nng_pipe_get_ptr, "nng_pipe_get_ptr");
1390     lib.bindSymbol(cast(void**)&nng_pipe_get_addr, "nng_pipe_get_addr");
1391     lib.bindSymbol(cast(void**)&nng_pipe_close, "nng_pipe_close");
1392     lib.bindSymbol(cast(void**)&nng_pipe_id, "nng_pipe_id");
1393     lib.bindSymbol(cast(void**)&nng_pipe_socket, "nng_pipe_socket");
1394     lib.bindSymbol(cast(void**)&nng_pipe_dialer, "nng_pipe_dialer");
1395     lib.bindSymbol(cast(void**)&nng_pipe_listener, "nng_pipe_listener");
1396     lib.bindSymbol(cast(void**)&nng_stats_get, "nng_stats_get");
1397     lib.bindSymbol(cast(void**)&nng_stats_free, "nng_stats_free");
1398     lib.bindSymbol(cast(void**)&nng_stats_dump, "nng_stats_dump");
1399     lib.bindSymbol(cast(void**)&nng_stat_next, "nng_stat_next");
1400     lib.bindSymbol(cast(void**)&nng_stat_child, "nng_stat_child");
1401     lib.bindSymbol(cast(void**)&nng_stat_name, "nng_stat_name");
1402     lib.bindSymbol(cast(void**)&nng_stat_type, "nng_stat_type");
1403     lib.bindSymbol(cast(void**)&nng_stat_find, "nng_stat_find");
1404     lib.bindSymbol(cast(void**)&nng_stat_find_socket, "nng_stat_find_socket");
1405     lib.bindSymbol(cast(void**)&nng_stat_find_dialer, "nng_stat_find_dialer");
1406     lib.bindSymbol(cast(void**)&nng_stat_find_listener, "nng_stat_find_listener");
1407     lib.bindSymbol(cast(void**)&nng_stat_unit, "nng_stat_unit");
1408     lib.bindSymbol(cast(void**)&nng_stat_value, "nng_stat_value");
1409     lib.bindSymbol(cast(void**)&nng_stat_string, "nng_stat_string");
1410     lib.bindSymbol(cast(void**)&nng_stat_desc, "nng_stat_desc");
1411     lib.bindSymbol(cast(void**)&nng_stat_timestamp, "nng_stat_timestamp");
1412     lib.bindSymbol(cast(void**)&nng_device, "nng_device");
1413     lib.bindSymbol(cast(void**)&nng_url_parse, "nng_url_parse");
1414     lib.bindSymbol(cast(void**)&nng_url_free, "nng_url_free");
1415     lib.bindSymbol(cast(void**)&nng_url_clone, "nng_url_clone");
1416     lib.bindSymbol(cast(void**)&nng_version, "nng_version");
1417     lib.bindSymbol(cast(void**)&nng_stream_free, "nng_stream_free");
1418     lib.bindSymbol(cast(void**)&nng_stream_close, "nng_stream_close");
1419     lib.bindSymbol(cast(void**)&nng_stream_send, "nng_stream_send");
1420     lib.bindSymbol(cast(void**)&nng_stream_recv, "nng_stream_recv");
1421     lib.bindSymbol(cast(void**)&nng_stream_get, "nng_stream_get");
1422     lib.bindSymbol(cast(void**)&nng_stream_get_bool, "nng_stream_get_bool");
1423     lib.bindSymbol(cast(void**)&nng_stream_get_int, "nng_stream_get_int");
1424     lib.bindSymbol(cast(void**)&nng_stream_get_ms, "nng_stream_get_ms");
1425     lib.bindSymbol(cast(void**)&nng_stream_get_size, "nng_stream_get_size");
1426     lib.bindSymbol(cast(void**)&nng_stream_get_uint64, "nng_stream_get_uint64");
1427     lib.bindSymbol(cast(void**)&nng_stream_get_string, "nng_stream_get_string");
1428     lib.bindSymbol(cast(void**)&nng_stream_get_ptr, "nng_stream_get_ptr");
1429     lib.bindSymbol(cast(void**)&nng_stream_get_addr, "nng_stream_get_addr");
1430     lib.bindSymbol(cast(void**)&nng_stream_set, "nng_stream_set");
1431     lib.bindSymbol(cast(void**)&nng_stream_set_bool, "nng_stream_set_bool");
1432     lib.bindSymbol(cast(void**)&nng_stream_set_int, "nng_stream_set_int");
1433     lib.bindSymbol(cast(void**)&nng_stream_set_ms, "nng_stream_set_ms");
1434     lib.bindSymbol(cast(void**)&nng_stream_set_size, "nng_stream_set_size");
1435     lib.bindSymbol(cast(void**)&nng_stream_set_uint64, "nng_stream_set_uint64");
1436     lib.bindSymbol(cast(void**)&nng_stream_set_string, "nng_stream_set_string");
1437     lib.bindSymbol(cast(void**)&nng_stream_set_ptr, "nng_stream_set_ptr");
1438     lib.bindSymbol(cast(void**)&nng_stream_set_addr, "nng_stream_set_addr");
1439     lib.bindSymbol(cast(void**)&nng_stream_dialer_alloc, "nng_stream_dialer_alloc");
1440     lib.bindSymbol(cast(void**)&nng_stream_dialer_alloc_url, "nng_stream_dialer_alloc_url");
1441     lib.bindSymbol(cast(void**)&nng_stream_dialer_free, "nng_stream_dialer_free");
1442     lib.bindSymbol(cast(void**)&nng_stream_dialer_close, "nng_stream_dialer_close");
1443     lib.bindSymbol(cast(void**)&nng_stream_dialer_dial, "nng_stream_dialer_dial");
1444     lib.bindSymbol(cast(void**)&nng_stream_dialer_set, "nng_stream_dialer_set");
1445     lib.bindSymbol(cast(void**)&nng_stream_dialer_get, "nng_stream_dialer_get");
1446     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_bool, "nng_stream_dialer_get_bool");
1447     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_int, "nng_stream_dialer_get_int");
1448     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_ms, "nng_stream_dialer_get_ms");
1449     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_size, "nng_stream_dialer_get_size");
1450     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_uint64, "nng_stream_dialer_get_uint64");
1451     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_string, "nng_stream_dialer_get_string");
1452     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_ptr, "nng_stream_dialer_get_ptr");
1453     lib.bindSymbol(cast(void**)&nng_stream_dialer_get_addr, "nng_stream_dialer_get_addr");
1454     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_bool, "nng_stream_dialer_set_bool");
1455     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_int, "nng_stream_dialer_set_int");
1456     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_ms, "nng_stream_dialer_set_ms");
1457     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_size, "nng_stream_dialer_set_size");
1458     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_uint64, "nng_stream_dialer_set_uint64");
1459     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_string, "nng_stream_dialer_set_string");
1460     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_ptr, "nng_stream_dialer_set_ptr");
1461     lib.bindSymbol(cast(void**)&nng_stream_dialer_set_addr, "nng_stream_dialer_set_addr");
1462     lib.bindSymbol(cast(void**)&nng_stream_listener_alloc, "nng_stream_listener_alloc");
1463     lib.bindSymbol(cast(void**)&nng_stream_listener_alloc_url, "nng_stream_listener_alloc_url");
1464     lib.bindSymbol(cast(void**)&nng_stream_listener_free, "nng_stream_listener_free");
1465     lib.bindSymbol(cast(void**)&nng_stream_listener_close, "nng_stream_listener_close");
1466     lib.bindSymbol(cast(void**)&nng_stream_listener_listen, "nng_stream_listener_listen");
1467     lib.bindSymbol(cast(void**)&nng_stream_listener_accept, "nng_stream_listener_accept");
1468     lib.bindSymbol(cast(void**)&nng_stream_listener_set, "nng_stream_listener_set");
1469     lib.bindSymbol(cast(void**)&nng_stream_listener_get, "nng_stream_listener_get");
1470     lib.bindSymbol(cast(void**)&nng_stream_listener_get_bool, "nng_stream_listener_get_bool");
1471     lib.bindSymbol(cast(void**)&nng_stream_listener_get_int, "nng_stream_listener_get_int");
1472     lib.bindSymbol(cast(void**)&nng_stream_listener_get_ms, "nng_stream_listener_get_ms");
1473     lib.bindSymbol(cast(void**)&nng_stream_listener_get_size, "nng_stream_listener_get_size");
1474     lib.bindSymbol(cast(void**)&nng_stream_listener_get_uint64, "nng_stream_listener_get_uint64");
1475     lib.bindSymbol(cast(void**)&nng_stream_listener_get_string, "nng_stream_listener_get_string");
1476     lib.bindSymbol(cast(void**)&nng_stream_listener_get_ptr, "nng_stream_listener_get_ptr");
1477     lib.bindSymbol(cast(void**)&nng_stream_listener_get_addr, "nng_stream_listener_get_addr");
1478     lib.bindSymbol(cast(void**)&nng_stream_listener_set_bool, "nng_stream_listener_set_bool");
1479     lib.bindSymbol(cast(void**)&nng_stream_listener_set_int, "nng_stream_listener_set_int");
1480     lib.bindSymbol(cast(void**)&nng_stream_listener_set_ms, "nng_stream_listener_set_ms");
1481     lib.bindSymbol(cast(void**)&nng_stream_listener_set_size, "nng_stream_listener_set_size");
1482     lib.bindSymbol(cast(void**)&nng_stream_listener_set_uint64, "nng_stream_listener_set_uint64");
1483     lib.bindSymbol(cast(void**)&nng_stream_listener_set_string, "nng_stream_listener_set_string");
1484     lib.bindSymbol(cast(void**)&nng_stream_listener_set_ptr, "nng_stream_listener_set_ptr");
1485     lib.bindSymbol(cast(void**)&nng_stream_listener_set_addr, "nng_stream_listener_set_addr");
1486     lib.bindSymbol(cast(void**)&nn_cmsg_next, "nn_cmsg_next");
1487     lib.bindSymbol(cast(void**)&nn_socket, "nn_socket");
1488     lib.bindSymbol(cast(void**)&nn_setsockopt, "nn_setsockopt");
1489     lib.bindSymbol(cast(void**)&nn_getsockopt, "nn_getsockopt");
1490     lib.bindSymbol(cast(void**)&nn_bind, "nn_bind");
1491     lib.bindSymbol(cast(void**)&nn_connect, "nn_connect");
1492     lib.bindSymbol(cast(void**)&nn_shutdown, "nn_shutdown");
1493     lib.bindSymbol(cast(void**)&nn_send, "nn_send");
1494     lib.bindSymbol(cast(void**)&nn_recv, "nn_recv");
1495     lib.bindSymbol(cast(void**)&nn_sendmsg, "nn_sendmsg");
1496     lib.bindSymbol(cast(void**)&nn_recvmsg, "nn_recvmsg");
1497     lib.bindSymbol(cast(void**)&nn_close, "nn_close");
1498     lib.bindSymbol(cast(void**)&nn_poll, "nn_poll");
1499     lib.bindSymbol(cast(void**)&nn_device, "nn_device");
1500     lib.bindSymbol(cast(void**)&nn_get_statistic, "nn_get_statistic");
1501     lib.bindSymbol(cast(void**)&nn_allocmsg, "nn_allocmsg");
1502     lib.bindSymbol(cast(void**)&nn_reallocmsg, "nn_reallocmsg");
1503     lib.bindSymbol(cast(void**)&nn_freemsg, "nn_freemsg");
1504     lib.bindSymbol(cast(void**)&nn_errno, "nn_errno");
1505     lib.bindSymbol(cast(void**)&nn_strerror, "nn_strerror");
1506     lib.bindSymbol(cast(void**)&nn_term, "nn_term");
1507     lib.bindSymbol(cast(void**)&nng_bus0_open, "nng_bus0_open");
1508     lib.bindSymbol(cast(void**)&nng_bus0_open_raw, "nng_bus0_open_raw");
1509     lib.bindSymbol(cast(void**)&nng_bus_open, "nng_bus_open");
1510     lib.bindSymbol(cast(void**)&nng_bus_open_raw, "nng_bus_open_raw");
1511     lib.bindSymbol(cast(void**)&nng_pair0_open, "nng_pair0_open");
1512     lib.bindSymbol(cast(void**)&nng_pair0_open_raw, "nng_pair0_open_raw");
1513     //lib.bindSymbol(cast(void**)&nng_pair_open, "nng_pair_open");
1514     //lib.bindSymbol(cast(void**)&nng_pair_open_raw, "nng_pair_open_raw");
1515     lib.bindSymbol(cast(void**)&nng_pair1_open, "nng_pair1_open");
1516     lib.bindSymbol(cast(void**)&nng_pair1_open_raw, "nng_pair1_open_raw");
1517     //lib.bindSymbol(cast(void**)&nng_pair_open, "nng_pair_open");
1518     //lib.bindSymbol(cast(void**)&nng_pair_open_raw, "nng_pair_open_raw");
1519     lib.bindSymbol(cast(void**)&nng_pull0_open, "nng_pull0_open");
1520     lib.bindSymbol(cast(void**)&nng_pull0_open_raw, "nng_pull0_open_raw");
1521     lib.bindSymbol(cast(void**)&nng_pull_open, "nng_pull_open");
1522     lib.bindSymbol(cast(void**)&nng_pull_open_raw, "nng_pull_open_raw");
1523     lib.bindSymbol(cast(void**)&nng_push0_open, "nng_push0_open");
1524     lib.bindSymbol(cast(void**)&nng_push0_open_raw, "nng_push0_open_raw");
1525     lib.bindSymbol(cast(void**)&nng_push_open, "nng_push_open");
1526     lib.bindSymbol(cast(void**)&nng_push_open_raw, "nng_push_open_raw");
1527     lib.bindSymbol(cast(void**)&nng_pub0_open, "nng_pub0_open");
1528     lib.bindSymbol(cast(void**)&nng_pub0_open_raw, "nng_pub0_open_raw");
1529     lib.bindSymbol(cast(void**)&nng_pub_open, "nng_pub_open");
1530     lib.bindSymbol(cast(void**)&nng_pub_open_raw, "nng_pub_open_raw");
1531     lib.bindSymbol(cast(void**)&nng_sub0_open, "nng_sub0_open");
1532     lib.bindSymbol(cast(void**)&nng_sub0_open_raw, "nng_sub0_open_raw");
1533     lib.bindSymbol(cast(void**)&nng_sub_open, "nng_sub_open");
1534     lib.bindSymbol(cast(void**)&nng_sub_open_raw, "nng_sub_open_raw");
1535     lib.bindSymbol(cast(void**)&nng_rep0_open, "nng_rep0_open");
1536     lib.bindSymbol(cast(void**)&nng_rep0_open_raw, "nng_rep0_open_raw");
1537     lib.bindSymbol(cast(void**)&nng_rep_open, "nng_rep_open");
1538     lib.bindSymbol(cast(void**)&nng_rep_open_raw, "nng_rep_open_raw");
1539     lib.bindSymbol(cast(void**)&nng_respondent0_open, "nng_respondent0_open");
1540     lib.bindSymbol(cast(void**)&nng_respondent0_open_raw, "nng_respondent0_open_raw");
1541     lib.bindSymbol(cast(void**)&nng_respondent_open, "nng_respondent_open");
1542     lib.bindSymbol(cast(void**)&nng_respondent_open_raw, "nng_respondent_open_raw");
1543     lib.bindSymbol(cast(void**)&nng_surveyor0_open, "nng_surveyor0_open");
1544     lib.bindSymbol(cast(void**)&nng_surveyor0_open_raw, "nng_surveyor0_open_raw");
1545     lib.bindSymbol(cast(void**)&nng_surveyor_open, "nng_surveyor_open");
1546     lib.bindSymbol(cast(void**)&nng_surveyor_open_raw, "nng_surveyor_open_raw");
1547     lib.bindSymbol(cast(void**)&nng_http_req_alloc, "nng_http_req_alloc");
1548     lib.bindSymbol(cast(void**)&nng_http_req_free, "nng_http_req_free");
1549     lib.bindSymbol(cast(void**)&nng_http_req_get_method, "nng_http_req_get_method");
1550     lib.bindSymbol(cast(void**)&nng_http_req_get_version, "nng_http_req_get_version");
1551     lib.bindSymbol(cast(void**)&nng_http_req_get_uri, "nng_http_req_get_uri");
1552     lib.bindSymbol(cast(void**)&nng_http_req_set_header, "nng_http_req_set_header");
1553     lib.bindSymbol(cast(void**)&nng_http_req_add_header, "nng_http_req_add_header");
1554     lib.bindSymbol(cast(void**)&nng_http_req_del_header, "nng_http_req_del_header");
1555     lib.bindSymbol(cast(void**)&nng_http_req_get_header, "nng_http_req_get_header");
1556     lib.bindSymbol(cast(void**)&nng_http_req_set_method, "nng_http_req_set_method");
1557     lib.bindSymbol(cast(void**)&nng_http_req_set_version, "nng_http_req_set_version");
1558     lib.bindSymbol(cast(void**)&nng_http_req_set_uri, "nng_http_req_set_uri");
1559     lib.bindSymbol(cast(void**)&nng_http_req_set_data, "nng_http_req_set_data");
1560     lib.bindSymbol(cast(void**)&nng_http_req_copy_data, "nng_http_req_copy_data");
1561     lib.bindSymbol(cast(void**)&nng_http_req_get_data, "nng_http_req_get_data");
1562     lib.bindSymbol(cast(void**)&nng_http_res_alloc, "nng_http_res_alloc");
1563     lib.bindSymbol(cast(void**)&nng_http_res_alloc_error, "nng_http_res_alloc_error");
1564     lib.bindSymbol(cast(void**)&nng_http_res_free, "nng_http_res_free");
1565     lib.bindSymbol(cast(void**)&nng_http_res_get_status, "nng_http_res_get_status");
1566     lib.bindSymbol(cast(void**)&nng_http_res_set_status, "nng_http_res_set_status");
1567     lib.bindSymbol(cast(void**)&nng_http_res_get_reason, "nng_http_res_get_reason");
1568     lib.bindSymbol(cast(void**)&nng_http_res_set_reason, "nng_http_res_set_reason");
1569     lib.bindSymbol(cast(void**)&nng_http_res_set_header, "nng_http_res_set_header");
1570     lib.bindSymbol(cast(void**)&nng_http_res_add_header, "nng_http_res_add_header");
1571     lib.bindSymbol(cast(void**)&nng_http_res_del_header, "nng_http_res_del_header");
1572     lib.bindSymbol(cast(void**)&nng_http_res_get_header, "nng_http_res_get_header");
1573     lib.bindSymbol(cast(void**)&nng_http_res_set_version, "nng_http_res_set_version");
1574     lib.bindSymbol(cast(void**)&nng_http_res_get_version, "nng_http_res_get_version");
1575     lib.bindSymbol(cast(void**)&nng_http_res_get_data, "nng_http_res_get_data");
1576     lib.bindSymbol(cast(void**)&nng_http_res_set_data, "nng_http_res_set_data");
1577     lib.bindSymbol(cast(void**)&nng_http_res_copy_data, "nng_http_res_copy_data");
1578     lib.bindSymbol(cast(void**)&nng_http_conn_close, "nng_http_conn_close");
1579     lib.bindSymbol(cast(void**)&nng_http_conn_read, "nng_http_conn_read");
1580     lib.bindSymbol(cast(void**)&nng_http_conn_read_all, "nng_http_conn_read_all");
1581     lib.bindSymbol(cast(void**)&nng_http_conn_write, "nng_http_conn_write");
1582     lib.bindSymbol(cast(void**)&nng_http_conn_write_all, "nng_http_conn_write_all");
1583     lib.bindSymbol(cast(void**)&nng_http_conn_write_req, "nng_http_conn_write_req");
1584     lib.bindSymbol(cast(void**)&nng_http_conn_write_res, "nng_http_conn_write_res");
1585     lib.bindSymbol(cast(void**)&nng_http_conn_read_req, "nng_http_conn_read_req");
1586     lib.bindSymbol(cast(void**)&nng_http_conn_read_res, "nng_http_conn_read_res");
1587     lib.bindSymbol(cast(void**)&nng_http_req_reset, "nng_http_req_reset");
1588     lib.bindSymbol(cast(void**)&nng_http_res_reset, "nng_http_res_reset");
1589     lib.bindSymbol(cast(void**)&nng_http_handler_alloc, "nng_http_handler_alloc");
1590     lib.bindSymbol(cast(void**)&nng_http_handler_free, "nng_http_handler_free");
1591     lib.bindSymbol(cast(void**)&nng_http_handler_alloc_file, "nng_http_handler_alloc_file");
1592     lib.bindSymbol(cast(void**)&nng_http_handler_alloc_static, "nng_http_handler_alloc_static");
1593     lib.bindSymbol(cast(void**)&nng_http_handler_alloc_redirect, "nng_http_handler_alloc_redirect");
1594     lib.bindSymbol(cast(void**)&nng_http_handler_alloc_directory, "nng_http_handler_alloc_directory");
1595     lib.bindSymbol(cast(void**)&nng_http_handler_set_method, "nng_http_handler_set_method");
1596     lib.bindSymbol(cast(void**)&nng_http_handler_set_host, "nng_http_handler_set_host");
1597     lib.bindSymbol(cast(void**)&nng_http_handler_collect_body, "nng_http_handler_collect_body");
1598     lib.bindSymbol(cast(void**)&nng_http_handler_set_tree, "nng_http_handler_set_tree");
1599     lib.bindSymbol(cast(void**)&nng_http_handler_set_data, "nng_http_handler_set_data");
1600     lib.bindSymbol(cast(void**)&nng_http_handler_get_data, "nng_http_handler_get_data");
1601     lib.bindSymbol(cast(void**)&nng_http_server_hold, "nng_http_server_hold");
1602     lib.bindSymbol(cast(void**)&nng_http_server_release, "nng_http_server_release");
1603     lib.bindSymbol(cast(void**)&nng_http_server_start, "nng_http_server_start");
1604     lib.bindSymbol(cast(void**)&nng_http_server_stop, "nng_http_server_stop");
1605     lib.bindSymbol(cast(void**)&nng_http_server_add_handler, "nng_http_server_add_handler");
1606     lib.bindSymbol(cast(void**)&nng_http_server_del_handler, "nng_http_server_del_handler");
1607     lib.bindSymbol(cast(void**)&nng_http_server_set_tls, "nng_http_server_set_tls");
1608     lib.bindSymbol(cast(void**)&nng_http_server_get_tls, "nng_http_server_get_tls");
1609     lib.bindSymbol(cast(void**)&nng_http_server_get_addr, "nng_http_server_get_addr");
1610     lib.bindSymbol(cast(void**)&nng_http_server_set_error_page, "nng_http_server_set_error_page");
1611     lib.bindSymbol(cast(void**)&nng_http_server_set_error_file, "nng_http_server_set_error_file");
1612     lib.bindSymbol(cast(void**)&nng_http_server_res_error, "nng_http_server_res_error");
1613     lib.bindSymbol(cast(void**)&nng_http_hijack, "nng_http_hijack");
1614     lib.bindSymbol(cast(void**)&nng_http_client_alloc, "nng_http_client_alloc");
1615     lib.bindSymbol(cast(void**)&nng_http_client_free, "nng_http_client_free");
1616     lib.bindSymbol(cast(void**)&nng_http_client_set_tls, "nng_http_client_set_tls");
1617     lib.bindSymbol(cast(void**)&nng_http_client_get_tls, "nng_http_client_get_tls");
1618     lib.bindSymbol(cast(void**)&nng_http_client_connect, "nng_http_client_connect");
1619     lib.bindSymbol(cast(void**)&nng_http_conn_transact, "nng_http_conn_transact");
1620     lib.bindSymbol(cast(void**)&nng_http_client_transact, "nng_http_client_transact");
1621     lib.bindSymbol(cast(void**)&nng_tls_config_alloc, "nng_tls_config_alloc");
1622     lib.bindSymbol(cast(void**)&nng_tls_config_hold, "nng_tls_config_hold");
1623     lib.bindSymbol(cast(void**)&nng_tls_config_free, "nng_tls_config_free");
1624     lib.bindSymbol(cast(void**)&nng_tls_config_server_name, "nng_tls_config_server_name");
1625     lib.bindSymbol(cast(void**)&nng_tls_config_ca_chain, "nng_tls_config_ca_chain");
1626     lib.bindSymbol(cast(void**)&nng_tls_config_own_cert, "nng_tls_config_own_cert");
1627     lib.bindSymbol(cast(void**)&nng_tls_config_key, "nng_tls_config_key");
1628     lib.bindSymbol(cast(void**)&nng_tls_config_pass, "nng_tls_config_pass");
1629     lib.bindSymbol(cast(void**)&nng_tls_config_auth_mode, "nng_tls_config_auth_mode");
1630     lib.bindSymbol(cast(void**)&nng_tls_config_ca_file, "nng_tls_config_ca_file");
1631     lib.bindSymbol(cast(void**)&nng_tls_config_cert_key_file, "nng_tls_config_cert_key_file");
1632     lib.bindSymbol(cast(void**)&nng_opts_parse, "nng_opts_parse");
1633     lib.bindSymbol(cast(void**)&nng_clock, "nng_clock");
1634     lib.bindSymbol(cast(void**)&nng_msleep, "nng_msleep");
1635     lib.bindSymbol(cast(void**)&nng_thread_create, "nng_thread_create");
1636     lib.bindSymbol(cast(void**)&nng_thread_destroy, "nng_thread_destroy");
1637     lib.bindSymbol(cast(void**)&nng_mtx_alloc, "nng_mtx_alloc");
1638     lib.bindSymbol(cast(void**)&nng_mtx_free, "nng_mtx_free");
1639     lib.bindSymbol(cast(void**)&nng_mtx_lock, "nng_mtx_lock");
1640     lib.bindSymbol(cast(void**)&nng_mtx_unlock, "nng_mtx_unlock");
1641     lib.bindSymbol(cast(void**)&nng_cv_alloc, "nng_cv_alloc");
1642     lib.bindSymbol(cast(void**)&nng_cv_free, "nng_cv_free");
1643     lib.bindSymbol(cast(void**)&nng_cv_wait, "nng_cv_wait");
1644     lib.bindSymbol(cast(void**)&nng_cv_until, "nng_cv_until");
1645     lib.bindSymbol(cast(void**)&nng_cv_wake, "nng_cv_wake");
1646     lib.bindSymbol(cast(void**)&nng_cv_wake1, "nng_cv_wake1");
1647     lib.bindSymbol(cast(void**)&nng_random, "nng_random");
1648     lib.bindSymbol(cast(void**)&nng_inproc_register, "nng_inproc_register");
1649     lib.bindSymbol(cast(void**)&nng_ipc_register, "nng_ipc_register");
1650     lib.bindSymbol(cast(void**)&nng_tcp_register, "nng_tcp_register");
1651     lib.bindSymbol(cast(void**)&nng_tls_register, "nng_tls_register");
1652     lib.bindSymbol(cast(void**)&nng_ws_register, "nng_ws_register");
1653     lib.bindSymbol(cast(void**)&nng_wss_register, "nng_wss_register");
1654     lib.bindSymbol(cast(void**)&nng_zt_register, "nng_zt_register");
1655 
1656 
1657     if(errorCount() != errCount) loadedVersion = NNGSupport.badLibrary;
1658     else loadedVersion = NNGSupport.nng;
1659 
1660     return loadedVersion;
1661 }