| Commit message (Collapse) | Author | Age |
| ... | |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Document `nng_url_resolve_port`, make the structure opaque,
fix port numbers to be uint32 (needed for some cases), and fix a
missing `const` specifier.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
demo/async/client.c
- Enable client, on dial, to wait for server that has not yet started
demo/async/arun.sh
- Run async demo with arbitrary start order of server wrt clients
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
This should help Linux platforms scale even further with NNG.
Port events and *maybe* poll are the last to do. Probably select
will remain left in the cold, because honestly select based systems
are already performance constrained.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This allows greatly increased scalability for kqueue based systems
with lots of cores (more likely FreeBSD than Darwin, as most macs
only have a smattering of cores), but even for macs we can engage
a few cores for system calls giving improvements.
The implementation here is pretty simple -- each file descriptor
gets assigned to its own kqueue by taking the numeric value of the
file descriptor modulo the number of kqueues we have opened.
The same approach will be adopted for epoll and Solaris/illumos port events.
|
| |
|
|
|
|
|
| |
This involved test-specific hacks, since connect() for UNIX domain
sockets always completes synchronously one way or the other, even though
it is documented that it might not. This found a bug, with an uninitialized
poll FD as well!
|
| |
|
|
|
| |
This was observed only in the select poller, but the behavior of having
the same file descriptor registered in the poller more than once is undefined.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This introduces a new option "NNG_OPT_LISTEN_FD", understood by TCP, TLS,
and (on POSIX systems) IPC. This option is used to pass a file descriptor
or handle (Windows) that is already listening (ready for ACCEPT to be called).
For TCP and TLS, the socket must be of type AF_INET or AF_INET6, and for IPC
it must be of type AF_UNIX.
|
| | |
|
| |
|
|
|
| |
This will be slower, as each vector element has to be sent in a single
system call, but for platforms that lack sendmsg it will at least work.
|
| | |
|
| | |
|
| |
|
|
|
| |
This includes checks to determine if those functions are present,
and a test case to verify that scatter gather with UDP works.
|
| |
|
|
|
|
|
| |
This fixes problems finding the threads library. There may
still be problems building these with TLS libraries added,
as those dependencies may not be satisfied if the library lacks
a cmake configuration file.
|
| |
|
|
|
|
| |
While here, remove some code paths that do not occur by definition.
(For example, if the resolver succeeds, we will definitely have a
valid set of addresses, but if it fails, we will definitely not.)
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Nearly all applications are either purely server based (needing no
resolvers really), or dialers only dialing a single destination.
These do not need multiple dialers, and threads are expensive on some
platforms (and they are more trouble during debugging.)
|
| |
|
|
|
|
| |
This avoids the need to perform multiple allocations for dialing,
eliminating additional potential failures. Cancellation is also
made simpler and more perfectly robust.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This avoids the need for a lock during listener or dialer initialization,
and it avoids the need to carry these pointers on those objects.
It also eliminates a potential failure case "post startup".
|
| |
|
|
|
|
|
|
|
|
| |
The endpoints both use a nesting level for some common code and some
platform dependent code. But the common code isn't that much and we
have similar patterns for e.g. IPC.
This avoids a layer of indirection in the structs, and extra allocations.
The payoff will be even larger for the dialers, but that is next.
(Dialers are more complicated because of DNS.)
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
All vestiges of ZeroTier have been removed. Also, as consequence,
some binary values have changed (specifically the number of the
address family used for NNG_AF_ABSTRACT.)
We may create a new ZeroTier transport that makes use of lwIP to
provide for ZeroTier and native host network coexistence, without
requiring ZeroTier to participate in the native networking stack.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
The nni_aio_start function replaces these two functions with a
simple, single call, reducing pressure on common locks.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|