Features at a glance
With MUSCLE, users will be able to easily customize the included "muscled server" by defining their own session logic or message-streaming protocol. The software helps you to write your client code in either of the C++, C, C#, Java, Delphi or Python programming languages.
The program uses BMessage-like muscle::Messages, supports sending of flattened muscle::Messages between computers via TCP (Transmission Control Protocol) streams, deploys a “muscled server” on a server machine, allowing you to write client programs that can be used to communicate with the server.
Additionally, it includes single- and multi-threaded messaging APIs that support all the aforementioned programming languages. The “muscled server” can be easily customized by defining a message-streaming protocol or a session logic.
Getting started with MUSCLE
After a successful login, the client programs can determine who else is logged into the central server, as well as to store muscle::Messages in the RAM (system memory) and send muscle::Messages to other clients that are connected to the server. Please note that client programs can subscribe to specific data on the server, and get instant notifications when the data changes.
Supports a wide range of message routings
The software has been designed to supports a wide range of message routings, including unicast-style, broadcast-style and multicast-style ones through an intelligent, hierarchical pattern-matching routing mechanism.
Supported OSes and availability
MUSCLE runs on any POSIX-compliant operating system. It is distributed as a single, universal sources archive that lets users to optimize the application for their GNU/Linux system. Both 32-bit and 64-bit hardware platforms are supported at this time.
Reviewed by Marius Nestor on October 13th, 2014
In a hurry? Add it to your Download Basket!
- Added a ShrinkToFit() convenience method to the Queue, Hashtable, and String classes. This method shrinks the object so that the amount of memory it has allocated internally matches the size of the data it is actually holding.
- Hashtable::EnsureSize() and Queue::EnsureSize() now take an optional (allowShrink) argument, that (if set to true) allows the object's internally-allocated array to be reallocated smaller if it is larger than necessary.
- Tweaked the buffer-expansion behavior of the String class to be a bit more efficient.
- Added a guard against a potential infinite recursion that could occur while logging an "OUT OF MEMORY" error after a memory allocation failure, if a LogCallback tried to allocate memory.
Application descriptionMUSCLE is an open source and freely distributed software project that has been designed from the ground up to act as a...