| Commit message (Collapse) | Author | Age | ||
|---|---|---|---|---|
| ... | ||||
| * | REQ/REP use new style locks. Also, enable compilation for REP. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | Endpoint uses single thread. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | Socket reaper uses new-thread. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | Message queues use new locking primitives. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | Fix possible race in platform test. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | Pipe simplifications for thread management. | Garrett D'Amore | 2017-01-01 | |
| | | | | | | | | This may also address a race in closing down pipes. Now pipes are always registered with the socket. They also always have both a sender and receiver thread. If the protocol doesn't need one or the other, the stock thread just exits early. | |||
| * | Nuke legacy _t types. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | New thread infrastructure -- not used anywhere yet, but tested. | Garrett D'Amore | 2017-01-01 | |
| | | ||||
| * | ECLOSED should abort the dialer. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Free our per socket message queues. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Finally closed the silly endpoint / pipe use-after-free race. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | More use after free. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Use after free fix. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Close & destroy endpoints in a single operation. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Fix races in pipe termination. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Use debug builds on Travis (for now). | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Remove old debug. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Restructure to be less confusing to uncrustify. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | One more c99 thing. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Can't use C99 in tests either. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Avoid C99 initialization; cmake 3.1/3.2 doesn't pass -std=c99? | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | More directed wakeups (and hopefully resolve races) for inproc. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Note CMake requirements. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Enabling C99 requires CMake version 3.1 or better. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | Uncrustify fixes. | Garrett D'Amore | 2016-12-31 | |
| | | ||||
| * | REP protocol. Untested beyond compilation. | Garrett D'Amore | 2016-12-30 | |
| | | ||||
| * | Factor out repeated protocol code into common. | Garrett D'Amore | 2016-12-29 | |
| | | ||||
| * | Fix error handling during initialization. | Garrett D'Amore | 2016-12-29 | |
| | | ||||
| * | Richer tests and fixes for idhash. Also dynamically allocate idhash. | Garrett D'Amore | 2016-12-29 | |
| | | ||||
| * | Test suite for idhash, fix symbol errors, and value changing. | Garrett D'Amore | 2016-12-29 | |
| | | ||||
| * | Move option helpers to their own file. | Garrett D'Amore | 2016-12-29 | |
| | | ||||
| * | 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 | |
| | | ||||
