| Commit message (Collapse) | Author | Age |
| ... | |
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This was the main blocker, I think, for the nanomsg legacy compat
shim. Now that we have this, it should be relatively straight-forward
to implement the legacy nanomsg API, including the SENDFD, RECVFD thing.
|
| |
|
|
|
|
|
| |
There are lots of changes here, mostly stuff we did in support of
Windows TCP. However, there are some bugs that were fixed, and we
added some new error codes, and generalized the handling of some failures
during accept. Windows IPC (NamedPipes) is still missing.
|
| |
|
|
|
|
| |
Windows is getting there. Needs a couple of more more hours to enable
everything, especially IPC, and most of the work at this point is probably
some combination of debug and tweaking things like error handling.
|
| |
|
|
|
|
|
| |
The use of a single function to get both size and length actually
turned out to be awkward to use; better to have separate functions
to get each. While here, disable some of the initialization/fork
checks, because it turns out they aren't needed.
|
| | |
|
| |
|
|
| |
Also we added a two phase shutdown for threads.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
We use some hints from Python's dict implementation, using an
open addressing scheme, and just ripping off the lower bits as
needed. Since we assign IDs consecutively, this should work
well. We shrink the table when it is only 1/8 full, and
we ensure that we grow the table when it is 2/3 full. (The
growth will start by at minimum doubling the required size.)
|
| |
|
|
|
|
| |
This error code is set when a cooked mode protocol cannot support
an operation yet. For example, it makes no sense to recv() a
reply on a REQ socket if no request has been sent yet.
|
| |
|
|
|
|
| |
This fixes a few core issues, and improves readability for the
message queue code as well. inproc delivery of messages works
now.
|
| |
|
|
|
|
|
|
|
|
| |
At this point listening and dialing operations appear to function properly.
As part of this I had to break the close logic up since otherwise we had a
loop trying to reap a thread from itself. So there is now a separate reaper
thread for pipes per-socket. I also changed lists to be a bit more rigid,
and allocations now zero memory initially. (We had bugs due to uninitialized
memory, and rather than hunt them all down, lets just init them to sane zero
values.)
|
| |
|
|
|
|
|
| |
This was done as these entry points are more clearly associated with
single function transport routines like those from BSD sockets, unlike
our higher level dial() and listen() APIs that do accept() or reconnect
in loops.
|
| |
|
|
|
|
|
|
|
| |
In order to give control over synchronous vs. async dialing, we provide a
flag to indicate synchronous dialing is desired. (Hmm. Should we reverse the
default sense?) We extend listen to have the same flag.
Logic is moved to endpt.c since dialing is really and endpoint specific operation.
There are other minor related bug fixes here too.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Instead of supplying a pipe, and expecting that the info there would be included
we use nng_msg_getopt(). This will be enabled by the app asking for extended
information by setting an option, we don't copy the data for every app (most won't
care). This means we don't have to worry about reference counting the pipe for
the life of associated messages.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
The external API now uses simpler names for various things, notably
we ditch the whole nng_socket_xx prefix. For example, intstead of
nng_socket_create, we just use nng_open(). There are no more nng_socket_xxx
calls.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
There's work to do still, but I've left clear indications of the
design in comments. Some ugly mysteries are now solved.
|
| |
|
|
| |
code with uncrustify. (Minor adjustments.) No more arguments!
|
| |
|
|
|
|
|
| |
The idea is that someday it will be possible to just concatenate the entire
set of source files into a single giant source file, for systems that
want to work this way. As a result, the build system now compiles every
file, although some of them will not have any definitions.
|
| |
|