-
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.
-
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.
-
Make .free() on commands send a message over an async watcher to the event loop, just like adding commands. This gets rid of some very tough to find memory bugs. Combined .cancel() with .free(), so there is only one method to call, whether for synchronous commands or for looped commands. Also debug some horrible segfaults related to Subscriber. Something is odd with hiredis and subscriptions, need to ask them. It seems when we flood with commands it doesn't disconnect cleanly. Look for a way to wait until all commands are processed.
-
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.