MUSCLE

MUSCLE is a multiplatform, multilanguage, N-way client/server protocol library and server.
Download

MUSCLE Ranking & Summary

Advertisement

  • Rating:
  • License:
  • BSD License
  • Price:
  • FREE
  • Publisher Name:
  • Jeremy Friesner
  • Publisher web site:
  • http://www.lcscanada.com/jaf/

MUSCLE Tags


MUSCLE Description

MUSCLE is a multiplatform, multilanguage, N-way client/server protocol library and server. MUSCLE is a somewhat scalable, robust, cross-platform client-server messaging system for dynamic distributed applications that runs under any POSIX-compliant operating system.MUSCLE has been developed, used, and refined as the networking component of BeShare, CueStation, CueConsole, and various other audio control applications at Level Control Systems for over four years. Here are some key features of "MUSCLE": · Use BMessage-like muscle::Messages under any operating system. · Send flattened muscle::Messages from one computer to another over TCP streams, eliminating unnecessary compatibility and protocol-versioning hassles. · Run a "muscled server" on a central machine, and write (or download) client programs to log in to the server and communicate through it. Once logged in, client programs can discover who else is logged in, send muscle::Messages to other clients, and store muscle::Messages in the server's RAM for other clients to download later. Clients can also "subscribe" to selected data on the server, and be automatically notified whenever it changes. Unicast-style, multicast-style, and broadcast-style Message routing are all supported via an intelligent hierarchical pattern-matching routing mechanism. Writing multiplayer games, IRC style chat applications, SETI style distributed calculation apps, or any other type of distributed software is made easy because MUSCLE handles all the dirty work for you! · Customize the included "muscled server" by defining your own session logic or message-streaming protocol. (Note that this is only necessary for certain specialized applications--the standard server provides sufficient functionality for most things) · Write your client code in C , Java, or Python. Single-threaded and multi-threaded messaging APIs are provided for all three languages. · Or just use the included message, string, dataIO, hashtable, dequeue, string-tokenizer, reference-count, regular expression and pattern matching parser, and object-pool code by themselves, as handy cross-platform utility classes. All source code is included, and you are free to use and abuse it any way you wish. · See the Beginner's Guide for a more detailed description of the system and its capabilites. What's New in This Release: · Added GetHumanReadableTimeIntervalString() to SysLog.h. · Added GetEmptyByteBufferRef() to ByteBuffer.{cpp,h}. · Added a DataNode::GetChild() method that returns the result as a return value rather than as a by-reference parameter. · ParseHumanReadableTimeIntervalString() can now correctly parse multiple-clause time interval strings of the type generated by GetHumanReadableTimeIntervalString(). · Added a GetPulseParent() method to the PulseNode class. · Removed the MUSCLE_ROUTING_FLAG_REFLECT_TO_SELF bit from the DEFAULT_MUSCLE_ROUTING_FLAGS_BIT_CHORD constant, since including this bit made the sessions' default routing behavior different from what it was (and is) documented to be. · BatchOperator now calls BatchEnds() from within the batch context instead of after the batch context has ended, for consistency with the semantics of BatchBegins(). · Rewrote the Windows implementation of the Mutex class to use critical sections rather than locking a Windows Mutex directly, for better performance. · Renamed the Python files in the python folder from e.g. CamelCase.py to e.g. lower_underbar_case.py, per the Python Style Guide. · Made CalculateHashCode() and CalculateHashCode64() non-inline functions, since they are rather large to be inlined. · Rewrote the Xenomai implementation of GetRunTime64() to call rt_timer_tsc() instead of rt_timer_read(), so that the value returned is nanoseconds-since-boot, not nanoseconds-since-1970. · The "realtime" command line argument support now memsets() the sched_param struct to zero before filling it out, just in case it has other members besides sched_priority. · Fixed a bug in the Hashtable class where copying one Hashtable to another could cause multiple identical entries to appear in the target table's iteration list.


MUSCLE Related Software