-
User can now enable no-wait mode, which chooses whether we use the EVRUN_NOWAIT flag in ev_run. The default is off, so that we don't use 100% CPU. Note added in tutorial to enable when performance is critical. Added to the speed test examples. Bump to 0.2.1. Remove patch number from HISTORY entry - that's what the git log is for. Make note on minor release.
-
This enables full support for binary data, with no tokenization needed and all the assumptions that come with that. All of the core methods are changed to accept vector<string>& instead of string&. Ported all examples and tutorial as well.
-
More intuitive if disconnect() blocks like connect(). Most clients will want to use these two methods. For more fine grained control, disconnect() is just a combo of stop() and wait().
-
Configure CMake to generate libredox.so and libredox_static.a, and have all examples use the dynamic library. This is how Redox should be used in practice, and greatly reduces the compilation time of the examples. Also renamed redox.[ch]pp to client.[ch]pp and created one master header redox.hpp for users to include. This header right now just includes client.hpp, command.hpp, and subscriber.hpp.
-
Refactor state management code to use three methods .connect(), .disconnect(), and .wait(). Start conforming to uniform coding style already applied to Command class. Split off subscribe functionality into its own class Subscriber. This is good because it was introducing unnecessary state and complexity into the main client. Now, Redox handles publishing like any other command and the Subscriber receives messages.
-
Now, there is only one callback for command(), and it returns a const reference to the Command object. The user is responsible for error checking using c.ok(), c.status(), and getting the reply with c.reply(). This significantly cleans up the library code and the user code. Greatly refactored the data type specialization code in command.cpp.
-
Consolidated user callbacks into one, improved some logic.
-
Also plan to add in set<string> and unordered_set<string>. Maybe queue<string>. Looking at likely removing char* as an option, if it shows to be about the same speed as string.
-
Thoroughly cleaned up redox.hpp to expose a minimal public API, and commented those well. Generally cleaned up a bunch of stuff. Added wrapper function DEL, which could be useful.
-
num_commands_processed(), trarcks using cmd_count and guarded with queue_guard.
-
Used to block the main thread until the event loop is stopped by calling the .stop() method. Implemented using a condition_variable, and very useful for clients.
-
Improved examples, added a threaded getter/setter example and cleaned up the other. Generally refactored code in the core files and cleaned up the details to make the slickest possible API. Implemented a to_exit variable as a stop condition for the event thread.