aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
Commit message (Collapse)AuthorAge
* Add new PAIR_V1 protocol.Garrett D'Amore2017-08-10
| | | | | | | | | | The PAIR_V1 protocol supports both raw and cooked modes, and has loop prevention included. It also has a polyamorous mode, wherein it allows multiple connections to be established. In polyamorous mode (set by an option), the sender requests a paritcular pipe by setting it on the message. We default to PAIR_V1 now.
* fixes #47 compat_reqttls fails sometimesGarrett D'Amore2017-08-09
| | | | fixes #23 Restore the old idhash logic for sockets
* Initial swag at UDP (POSIX only) low level handling.Garrett D'Amore2017-07-25
| | | | | | This includes async send and recv, driven from the poller. This will be requierd to support the underlying UDP and ZeroTier transports in the future. (ZeroTier is getting done first.)
* Windows IPC progress. Not working yet, but should be close.Garrett D'Amore2017-07-10
|
* Start of progress on Windows. Name resolution and IOCP work begins.Garrett D'Amore2017-07-07
|
* TCP asynchronous working now.Garrett D'Amore2017-07-07
| | | | | | | | | | | | | | | | It turns out that I had to fix a number of subtle asynchronous handling bugs, but now TCP is fully asynchronous. We need to change the high-level dial and listen interfaces to be async as well. Some of the transport APIs have changed here, and I've elected to change what we expose to consumers as endpoints into seperate dialers and listeners. Under the hood they are the same, but it turns out that its helpful to know the intended use of the endpoint at initialization time. Scalability still occasionally hangs on Linux. Investigation pending.
* Initial swag at asynchronous name resolution.Garrett D'Amore2017-07-06
|
* Remove obsolete poll.c.Garrett D'Amore2017-07-05
|
* Separate out poller/pollq from basic socket operations.Garrett D'Amore2017-07-04
|
* Use common socket handling on POSIX (tcp done, ipc pending.)Garrett D'Amore2017-06-29
|
* Convert to POSIX polled I/O for async; start of cancelable aio.Garrett D'Amore2017-06-27
| | | | | | | | | | | | | | | | | | This eliminates the two threads per pipe that were being used to provide basic I/O handling, replacing them with a single global thread for now, that uses poll and nonblocking I/O. This should lead to great scalability. The infrastructure is in place to easily expand to multiple polling worker threads. Some thought needs to be given about how to scale this to engage multiple CPUs. Horizontal scaling may also shorten the poll() lists easing C10K problem. We should look into better solutions than poll() for platforms that have them (epoll on Linux, kqueue on BSD, and event ports on illumos). Note that the file descriptors start out in blocking mode for now, but then are placed into non-blocking mode. This is because the negotiation phase is not yet callback driven, and so needs to be synchronous.
* Implementation of object hash (derived from idhash, but smarter.)Garrett D'Amore2017-06-02
|
* Timer implementation. Operations can timeout now?Garrett D'Amore2017-03-03
|
* Async I/O for POSIX implemented using threads (untested.)Garrett D'Amore2017-02-24
|
* Rename ioev to aio. Eliminate generic cancel handling (not needed).Garrett D'Amore2017-02-23
| | | | | | | | We will still need some kind of specific handling of cancellation for msg queues, but it will be simpler to just implement that for the queues, and not worry about cancellation in the general case around poll etc. (The low level poll and I/O routines will get notified by their underlying transport pipes/descriptors closing.)
* Introduce new generic I/O event framework.Garrett D'Amore2017-02-19
|
* Taskq implementation.Garrett D'Amore2017-02-18
|
* Add device support & testing. Bus semantic fix.Garrett D'Amore2017-01-27
| | | | | | | | | | | This adds nn_device and nng_device. There were some internal changes required to fix shutdown / close issues. Note that we shut down the sockets when exiting from device -- this is required to make both threads see the failure and bail, since we are not using a single event loop. I also noticed that the bus protocol had a bug where it would send messages back to the originator. This was specifically tested for in the compat_device test, and we have fixed it.
* Initial start of compat layer with bind, connect, etc. Untested.Garrett D'Amore2017-01-22
|
* Initial swag at notification pipes (not used yet).Garrett D'Amore2017-01-21
|
* Fix leaks in bus, socket leaks, tighten up close-side refcnting.Garrett D'Amore2017-01-21
| | | | | | | | | | | | | | This does a few things. First it closes some preexisting leaks. Second it tightens the overall close logic so that we automatically discard idhash resources (while keeping numeric values for next id etc. around) when the last socket is closed. This then eliminates the need for applications to ever explicitly terminate resources. It turns out platform-specific resources established at nni_init() time might still be leaked, but it's also the case that we now no longer dynamically allocate anything at platform initialization time. (This presumes that the platform doesn't do so under the hood when creating critical sections or mutexes for example.)
* Start of event framework.Garrett D'Amore2017-01-16
| | | | | | | | | | This compiles correctly, but doesn't actually deliver events yet. As part of this, I've made most of the initializables in nng safe to tear-down if uninitialized (or set to zero e.g. via calloc). This makes it loads easier to write the teardown on error code, since I can deinit everything, without worrying about which things have been initialized and which have not.
* Make sure to pass -DNNG_STATIC_LIB for static library.Garrett D'Amore2017-01-15
|
* Compile static *and* shared libraries.Garrett D'Amore2017-01-15
| | | | | Test code needs to use the static libraries so that they can get access to the entire set of symbols, including private ones that are not exported.
* Initial swag at Win32. Much to do still.Garrett D'Amore2017-01-12
|
* Pull out the posix clock stuff for plat_clock.Garrett D'Amore2017-01-12
|
* Add IPC (UNIX domain sockets) for POSIX, and test suite.Garrett D'Amore2017-01-12
|
* Initial (untested) bus implementation.Garrett D'Amore2017-01-10
|
* New ISAAC pRNG. This replaces other local hacks for random data.Garrett D'Amore2017-01-08
| | | | | | Platforms must seed the pRNGs by offering an nni_plat_seed_prng() routine. Implementations for POSIX using various options (including the /dev/urandom device) are supplied.
* Add surveyor protocol (no tests yet).Garrett D'Amore2017-01-08
| | | | | | | This adds the surveyor protocol, and updates the respondent somewhat. I've switched to using generic names for per-pipe and per-socket protocol data. Hopefully this will make 'cut-n-paste' from other protocol implementations easier.
* Add respondent protocol. (Half of survey pattern.)Garrett D'Amore2017-01-08
|
* Initial swag at pipeline (PUSH/PULL).Garrett D'Amore2017-01-06
| | | | | | | | | | | | | | | PUSH attempts to do a round-robin based distribution. However, I noticed that there is a bug in REQ, because REQ sockets will continue to pull down work until the first one no longer has room. This can in theory lead to scheduliung imbalances when the load is very light. (Under heavy load, the backpressure dominates.) Also, I note that mangos suffers the same problem. It does not make any attempt to deliver work equally, basically each pipe winds up pulling messages until its own buffers are full. This is bad. We can borrow the logic here for both REQ and mangos. None of this is tested yet.
* PUB protocol (untested).Garrett D'Amore2017-01-05
|
* SUB protocol implemented (uses sorted linked list for topics).Garrett D'Amore2017-01-05
|
* Initial cut at TCP, totally untested beyond compilation.Garrett D'Amore2017-01-04
| | | | | This also adds checks in the protocols to verify that pipe peers are of the proper protocol.
* Working towards TCP support.Garrett D'Amore2017-01-03
|
* Final purge of old threading & synch stuff.Garrett D'Amore2017-01-01
|
* REQ/REP use new style locks. Also, enable compilation for REP.Garrett D'Amore2017-01-01
|
* New thread infrastructure -- not used anywhere yet, but tested.Garrett D'Amore2017-01-01
|
* Move option helpers to their own file.Garrett D'Amore2016-12-29
|
* Implementation of an id hash for hashing pipes by ID.Garrett D'Amore2016-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.)
* Start of REQ protocol. Still need hook handling and resender.Garrett D'Amore2016-12-28
|
* More C99-ification. Also end the _t thing for types (ISO C rules).Garrett D'Amore2016-12-22
|
* Work on endpoints. More C99 & type cleanups.Garrett D'Amore2016-12-22
|
* Ditch our own snprintf/vsnprintf (C99). Symbol naming fixes for inproc.Garrett D'Amore2016-12-21
|
* More robust platform definition support.Garrett D'Amore2016-12-14
| | | | | | | 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.
* Better separate public vs. private names.Garrett D'Amore2016-12-14
|
* Oops... Pipe list initialization was not complete.Garrett D'Amore2016-12-14
|
* nn_socket_create() implemented.Garrett D'Amore2016-12-14
|
* Initial swing at pair protocol.Garrett D'Amore2016-12-13
|