| Commit message (Collapse) | Author | Age |
| ... | |
| | |
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
The test needed a change to ensure that we do not trigger a debugging
check (you cannot submit another job on an aio that you've been notified
is stopped via NNG_ESTOPPED.)
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This also moves the close of the UDP socket later, to avoid a
potential use after free while the aio's are still in-flight.
Unfortunately we cannot unbind cleanly without a hard close.
|
| |
|
|
|
| |
This represents an API change, and we remove the nng_aio_begin
function as well, introducing the lightweight nng_aio_reset instead.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This allows some use cases to reset things like the counts and outputs, before
submitting more jobs. Providers should call this near the top of their
functions; this is done without any locks so it should be very fast.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
This error code results when an AIO is stopped permanently, as a result
of nni_aio_close or nni_aio_stop. The associated AIO object cannot be
used again. This discrimantes against a file being closed, or a temporary
cancellation which might allow the aio to be reused.
Consumers must check for this error status in their callbacks, and not
resubmit an operation that failed with this error. Doing so, will result
in an infinite loop of submit / errors.
|
| |
|
|
| |
Also make nni_aio_sleep use it.
|
| |
|
|
|
| |
This should help some cases of synchronous callers that don't use
a callback at all.
|
| | |
|
| | |
|
| |
|
|
|
| |
These failures are responsible for false SEGFAULTS during testing,
as we wind up failing to listen and then proceeding anyway.
|
| |
|
|
|
|
|
|
| |
This will replace nni_aio_schedule, and it includes finishing the
task if needed. It does so without dropping the lock and so is
more efficient and race free.
This includes some conversion of some subsystems to it.
|
| | |
|
| | |
|