| Commit message (Collapse) | Author | Age | ||
|---|---|---|---|---|
| ... | ||||
| * | Implementation of an id hash for hashing pipes by ID. | Garrett D'Amore | 2016-12-29 | |
| | | | | | | | | | | 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.) | |||
| * | REQ implementation. | Garrett D'Amore | 2016-12-28 | |
| | | | | | | | This is an untested implementation for REQ. It is based hugely upon the mangos implementation, so there is an excellent chance it will work. | |||
| * | Pipe ID calculations & socket error functions. | Garrett D'Amore | 2016-12-28 | |
| | | | | | | | | | | | | The use of platform_next_id was a bit off, because it could give back pipe IDs that were too large (the high order bit must be clear), and in very long running applications serving many connections, the IDs could wrap and lead to duplicates. Also we have added functions to set the recverr or senderr values, which can be used by protocols -- either during initialization, or during filters. (REQ uses this for example.) | |||
| * | Implement msgqueue_putback. | Garrett D'Amore | 2016-12-28 | |
| | | | | | | | | This function is called when we wish to return a message to the queue after examining it. It can also be used by the resender in the REQ protocol. Critically it does not disrupt the ordering of other messages. This is a non-blocking operation. | |||
| * | Define new NNG_ESTATE for dealing with protocol state errors. | Garrett D'Amore | 2016-12-28 | |
| | | | | | | | 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. | |||
| * | Add new nni_msg_dup() API. (Needed for REQ protocol.) | Garrett D'Amore | 2016-12-28 | |
| | | ||||
| * | Start of REQ protocol. Still need hook handling and resender. | Garrett D'Amore | 2016-12-28 | |
| | | ||||
| * | Send and receive now work. | Garrett D'Amore | 2016-12-27 | |
| | | | | | | | This fixes a few core issues, and improves readability for the message queue code as well. inproc delivery of messages works now. | |||
| * | Message allocation fixed. Comparison was backwards. | Garrett D'Amore | 2016-12-27 | |
| | | ||||
| * | Times are 64-bits, not 32-bits! | Garrett D'Amore | 2016-12-27 | |
| | | ||||
| * | Condvars on MacOS X (even 10.12) don't work with monotonic times. | Garrett D'Amore | 2016-12-27 | |
| | | ||||
| * | Buffer resizing implemented. (Needed for single threaded inproc tests.) | Garrett D'Amore | 2016-12-27 | |
| | | ||||
| * | Substantial fixes for listen & dialers. | Garrett D'Amore | 2016-12-25 | |
| | | | | | | | | | | | 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.) | |||
| * | Change entry points in transports to bind() and connect(). | Garrett D'Amore | 2016-12-25 | |
| | | | | | | | | 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. | |||
| * | New dial/listen API. Dialing might work now. | Garrett D'Amore | 2016-12-25 | |
| | | | | | | | | | | 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. | |||
| * | Pipe pointer was not stored, leading to crash in dial/listen. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Fix crash when destroying inproc endpoint. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Fallback to socket options if pipe doesn't have a specific value. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Expose and implement pipe operations. (nng_pipe_close, nng_pipe_getopt). | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Stubs for stats & device functions. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Use macros to condense initialization checks. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Expose nng_msg_realloc(). | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Mix the PID into our random number seed. | Garrett D'Amore | 2016-12-25 | |
| | | ||||
| * | Added external message handling. | Garrett D'Amore | 2016-12-24 | |
| | | ||||
| * | Change in handling of extended info for messages. | Garrett D'Amore | 2016-12-24 | |
| | | | | | | | | | 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. | |||
| * | Expose nng_sendmsg. | Garrett D'Amore | 2016-12-24 | |
| | | ||||
| * | Getopt implemented (and minimal test). | Garrett D'Amore | 2016-12-24 | |
| | | ||||
| * | Fix for incorrect nni_usleep(), found with newly created platform tests. | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | nng_setopt works (rcvtimeout, etc.) External API adjustments. | Garrett D'Amore | 2016-12-23 | |
| | | | | | | | | 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. | |||
| * | Fix incorrect timeouts on platforms without clock_gettime(). | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | Try to satisfy uncrustify version differences. Make test use verbose by ↵ | Garrett D'Amore | 2016-12-23 | |
| | | | | | default. | |||
| * | Uncrustify fixes. | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | Don't linger if there are no possible readers present. | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | Some tests around recvmsg (no senders yet). Fixes for some edge cases. | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | Support for unbuffered msgqueues (like Go unbuffered channels.) | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | Initial tests -- open & close work (no pipes or endpoints yet). | Garrett D'Amore | 2016-12-23 | |
| | | ||||
| * | More C99-ification. Also end the _t thing for types (ISO C rules). | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Implemened synchronous & asynchronuos dialer, accepter. Getting close... | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Added lingering (1s default.) | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Implemented dialer core. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Endpoint dialer implemented. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | C99 comment style. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Work on endpoints. More C99 & type cleanups. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Inline locks (fewer allocs), simpler absolute times for wakeups. nn_sock_recv. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Synchronization enhancements - inproc & msgqueue. Absolute waits... | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Start of work to inline mutexes and condition variables. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Use C99 structure initializers FTW. Various other changes. | Garrett D'Amore | 2016-12-22 | |
| | | ||||
| * | Logic for socket shutdown, cleanup, and draining figured out. | Garrett D'Amore | 2016-12-22 | |
| | | | | | | There's work to do still, but I've left clear indications of the design in comments. Some ugly mysteries are now solved. | |||
| * | Older Darwin lacks clock_gettime(); we need poll.h to use poll(). | Garrett D'Amore | 2016-12-21 | |
| | | ||||
| * | Ditch our own snprintf/vsnprintf (C99). Symbol naming fixes for inproc. | Garrett D'Amore | 2016-12-21 | |
| | | ||||
