| Commit message (Collapse) | Author | Age |
| | |
|
| |
|
|
|
| |
This hopefully addresses a long standing bug with Windows IPC sometimes
hanging on shut down.
|
| |
|
|
| |
This bug was already fixed in the main branch.
|
| |
|
|
| |
(cherry picked from commit 3cfd6ab21bfb8b02fde1e976fc0bf50bf729c8ab)
|
| |
|
|
| |
(cherry picked from commit 9d0b023b39aae37adb6e5cb1a2b926777ffd2023)
|
| | |
|
| |
|
|
| |
This fixes a problem only found on Windows, that affected both IPC and TCP.
|
| |
|
|
|
|
|
|
| |
(#1838)
This exposes the UDP methods as nng_ methods, and adds support for Multicast Membership,
which is useful in a variety of situations.
No documentation is provided, and applications should consider thios API experimental.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
The logic with overlapped structures was fragile as it used
overlapped ios for the connections rather than a single common
one for the listener. This changes it to be more like POSIX, and
robust against this error.
|
| |
|
|
| |
We use overlapped I/O, so we don't need a separate hEvent.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
If you want to build on Windows use a toolchain that supports modern APIs.
This means, for Microsoft, UCRT (Universal C Runtime), which is supported
by default on modern Visual Studio. MinGW users may have to go out of their
way to enable it. (New -D_UCRT flag or something.)
The supported toolchain for building on Windows is Visual Studio. Use of
other tool chains is not officially supported or guaranteed to work. YMMV.
|
| |
|
|
|
| |
The realtime clock is not (yet) exposed for user applications, but it
is used for logging timestamps accurately.
|
| | |
|
| |
|
|
|
|
| |
This also restores the IPv6 sanity check. Note that UDP is still
not supported as a transport, but this can be used to implement
higher level transports such as ZeroTier (or later QUIC).
|
| |
|
|
|
|
|
|
|
| |
This also checks if the build system has the definitions for AF_INET6, which might
help in some embedded IPv4 only settings.
The resolver test is enhanced to include a check for IPv6 enabled in the kernel.
IPv6 support is enabled by default, of course.
|
| |
|
|
|
|
| |
This looks like a possible problem that may be windows specific involving
the flow for IO completion ports. This simplifies the logic a little bit,
and should ensure that canceled requests on pipes do not restart.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This further limits some of the thread counts, but principally it
offers a new runtime facility, nng_init_set_parameter(), which can
be used to set certain runtime parameters on the number of threads,
provided it is called before the rest of application start up.
This facility is quite intentionally "undocumented", at least for now,
as we want to limit our commitment to it. Still this should be helpful
for applications that need to reduce the number of threads that are
created.
|
| |
|
|
|
|
|
| |
This (defaults to 8) sets a limit on the number of poller threads
that will be used for servicing I/Os. This is the size of the
I/O completion port thread pool on Windows. POSIX pollers are generally
not concurrent at present.
|
| |
|
|
|
| |
This eliminates some code. A test is added as well, so this should
help with coverage.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This transport only listens, and creates connections when
the application calls setopt on the lister with NNG_OPT_SOCKET_FD,
to pass a file descriptor. The FD is turned into an nng_stream,
and utilized for SP. The protocol over the descriptor is identical
to the TCP protocol (not the IPC protocol).
The options for peer information are borrowed from the IPC transport,
as they may be useful for these purposes.
This includes a test suite and full documentation.
|
| |
|
|
| |
(This also affects TCP, and fixed there.)
|
| |
|
|
|
| |
fix compile error in nano using clang version 16.0.5
fix issue: https://github.com/nanomsg/nng/issues/1676
|
| | |
|
| |
|
|
| |
Signed-off-by: Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
Co-authored-by: Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
|
| |
|
| |
From the Windows docs, this option must receive as parameters the listener socket.
|
| |
|
|
|
|
|
|
|
|
| |
* Fixes compiling on Windows with Mingw
Fixes the build error: "InterlockedDecrementAcquire64 not defined" on Mingw
* fixes semantics of InterlockedDecrementRelease64 on Mingw
From Microsoft docs, InterlockedDecrementRelease64 returns the resulting decremented value.
The equivalent function on Mingw is `__atomic_sub_fetch`, not `__atomic_fetch_sub` (which returns the previous value).
|
| |
|
|
| |
(#1591)
|
| |
|
|
| |
gcc 4.8.5 ). (#1587)
|
| |
|
|
| |
OSX < 10.12)
|
| |
|
|
|
|
| |
This takes one less parameter, and is simpler. It will let us
reclaim the aio_prov_extra data space as well, so that we can
use it for other purposes.
|
| |
|
|
|
| |
Note that one of these warning is a real bug that would prevent
TLS from functioning properly on Windows.
|
| | |
|
| |
|
|
|
|
|
|
| |
This should help greatly with performance on older systems such
as CentOS 7 and GCC 4.8. Though, such folks really should update
to newer compilers. Folks running version of GCC earlier than 4.7
will still pay a rather significant performance penalty, as they
still implement atomics with a global mutex.
|
| |
|
|
|
|
|
|
| |
* use correct LONG type for nni_atomic_flag on win32
* use InterlockExchangeAdd for nni_atomic_get_bool
- this is equivelent to InterlockAdd for the purposes of this call (since it is adding 0)
- this allows the code to compile on 32bit windows
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This eliminates some run-time initialization, moving it to compile time.
Additional follow up work will expand on this to simplify initialization
and reduce the need for certain locks.
|
| |
|
|
|
| |
This is initially used for TLS to make loading the engine pointer
faster, eliminating a much more expensive lock operation.
|
| |
|
|
|
|
|
| |
This makes CLOCK_MONOTONIC the default (as it should have been)
for platforms that have it defined, except for Apple platforms which lack
support for using anything other than the real time clock with condition
variables. (And unfortunately silently ignore attempts to do otherwise.)
|
| | |
|
| | |
|
| | |
|