Release Notes: The whole API has been gone over and made more consistent. Better multithreading support, bandwidth limiting, filtering, and more were also added.
Release Notes: The PortableHashtable class now maintains the ordering of the items you put into it. You can now safely modify or delete a PortableHashtable during a traversal. ReflectServer and PortableMessageFieldNameIterator have been made more efficient. Methods have been added to PortableHashtable to modify the ordering of contents.
Release Notes: Atomic incrementors for Windows and Linux were added, the admin tool's error handling is improved, GetPeerInfo() tries harder to find localhost's "real" IP address, and QMessageTransceiverThread now compiles under VC++.
Release Notes: PortableRefCounts no longer need or take a MessageRefPool object. PR_NAME_SESSION fields are now auto-corrected by the server to prevent message-sender 'spoofing'. A PathMatcher class was added for regex path matching.
Release Notes: A new QtMessageTransceiverThread class for easy integration with Qt-based client GUIs, better Visual-C++ compatibility, more logical output-stall detection, and use of ReflectSessionFactory objects instead of function callbacks.
Release Notes: During a memory shortage, muscled now kicks users whose output message queues have grown too large. The signature of AbstractMessageIOGateway's DoInput() and DoOutput() was changed to DoInput(uint32 & addReadBytes) and DoOutput(uint32 & addWroteBytes). muscled now keeps track of how long an output has been "stalled" (i.e. it has bytes queued to send to the client but none have actually been sent), and it will drop any clients that have been stalled for more than 20 minutes.
Release Notes: Stream operators have been added to the PortableString class. AtheOS refcounts use atomic_add() for thread safety. Header tweaks to help MUSCLE code compile cleanly under Visual C++ have been merged in. time.h includes have been tweaked to compile properly under Debian Linux. Messages being returned to the global message pool now have their 'what' code set to zero. A potential source of problems during out-of-memory conditions in the PortableMessageIOGateway class have been fixed.
Release Notes: An atheossupport directory, which is a AtheOS port of the BeOS code in the besupport directory, has been added. testatheosclient.cpp and testatheossupport.cpp testing stubs have been added to the test folder. The netutil, string, stringtokenizer, hashtable, refcount, pool, and queue subfolders have been consolidated into a single subfolder named 'util'. All code that uses MUSCLE will probably need to have its #include lines modified to reflect this before it will compile again. This change was necessary in order to avoid #include space conflicts with the STL headers.
Release Notes: Added a "maxnodespersession" parameter, which lets you specify the maximum number of nodes any given session may have in it its server-side database at one time. Made some of the members of the DataNode class demand-allocated, so as to use less memory. ReflectServer now preallocates 256 slots for the lame-duck session list, so that adding a session to the list is less likely to fail during a memory pinch. Various other additions and enhancements.
Release Notes: Changed the Makefiles to reflect the changed, final location of the BONE headers (/boot/develop/headers/be/bone). Changed the Put() methods of PortableHashtable to return true on success, false on error (memory allocation failure). This changes the Put()'s return value semantics! If you code was relying on them, you will need to modify it. Changed ReflectServer::ServerProcessLoop() to take no arguments, and added a method ReflectServer::AddAcceptPort(func, port) instead. This change allows a single server to accept connections on multiple ports if it wants to. Changed the AddLogCallback() and AddOutOfMemoryHandler() functions to return B_ERROR on out-of-memory. Changed the muscled code to handle Put() failing a little better. This should fix some of the memory leaks that occur when the server has hit its memory cap.