diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-12 12:23:32 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-12 12:23:32 -0800 |
| commit | 0991802d1c91c790c60828145ddecbfe1583f6db (patch) | |
| tree | dc2e47e482dba13fa789a6946c16f0a934abdda4 /src/core/transport.c | |
| parent | 1adefe3879b211a47a784f477d56a9416ae72254 (diff) | |
| download | nng-0991802d1c91c790c60828145ddecbfe1583f6db.tar.gz nng-0991802d1c91c790c60828145ddecbfe1583f6db.tar.bz2 nng-0991802d1c91c790c60828145ddecbfe1583f6db.zip | |
Added threading primitives, more complete transport API.
Diffstat (limited to 'src/core/transport.c')
| -rw-r--r-- | src/core/transport.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/core/transport.c b/src/core/transport.c new file mode 100644 index 00000000..67f2ca2f --- /dev/null +++ b/src/core/transport.c @@ -0,0 +1,62 @@ +/* + * Copyright 2016 Garrett D'Amore <garrett@damore.org> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "core/nng_impl.h" + +/* + * For now the list of transports is hard-wired. Adding new transports + * to the system dynamically is something that might be considered later. + */ +extern struct nni_transport_ops nni_inproc_tran_ops; + +static struct nni_transport_ops *transports[] = { + &nni_inproc_tran_ops, + NULL +}; + +/* + * nni_transport_init initializes the entire transport subsystem, including + * each individual transport. + */ +void +nni_transport_init(void) +{ + int i; + struct nni_transport_ops *ops; + + for (i = 0; (ops = transports[i]) != NULL; i++) { + ops->tran_init(); + } +} + +void +nni_transport_fork(int prefork) +{ + int i; + struct nni_transport_ops *ops; + + for (i = 0; (ops = transports[i]) != NULL; i++) { + if (ops->tran_fork != NULL) { + ops->tran_fork(prefork); + } + } +} |
