|
|
|
Date Posted: |
March 29th, 2000
|
|
|
Last Updated: |
September 18th, 2008
|
|
|
License: |
BSD/MIT |
|
|
Downloads: |
19,981 total; 2 recently |
|
|
Page Views: |
135,082 total |
|
|
User Rating: |
 |
 |
|
8.89 / 10, with 106 votes |
|
Jump to the Downloads section |
|
 |
 |
About MUSCLE:
The MUSCLE system is a robust, somewhat scalable, cross-platform client-server solution for dynamic distributed applications for BeOS and other operating systems. It's distributed in source code form, and includes a ready-to-compile server, utility classes, and example clients. Tested under BeOS and Linux, but should compile and run under any POSIX compliant OS with a C++ compiler.
With MUSCLE, you can:
- Use BMessage-like PortableMessages under any operating system.
- Send flattened PortableMessages from one computer to another over TCP streams, eliminating compatibility and protocol versioning hassles.
- Run a "muscled server" on a central machine, or write/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 PortableMessages to other clients, and store PortableMessages 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, multicast, and broadcast messaging are all supported via an intelligent regular-expression based 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)
- Or just use the included message, string, dataIO, hashtable, dequeue, string-tokenizer, reference-count, regular expression parser, and object-pool classes 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 to MUSCLE (available in the archive or on the support page) for a more detailed description of the system and its capabilites.
Note: All source code in this archive is Copyright 2000 Level Control Systems. However, it is released as open source with an unrestricted license.
|
 |
|
 |
Latest Version |
 |
|
 |
| |
 |
|
Details about this version:
4.30 Released 9/18/2008
*** WARNING - THIS RELEASE CHANGES THE PulseNode API IN a NON ***
*** BACKWARDS COMPATIBLE WAY. BE SURE TO READ THE ENTRY ABOUT ***
*** PulseNode BELOW AND UPDATE YOUR CODE TO MATCH THE NEW API. ***
- ChildProcessDataIO class now has SetChildProcessInheritFileDescriptors()
and GetChildProcessInheritFileDescriptors() methods to control whether
child processes spawned should inherit the parent\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s file descriptors or
not. Note that these methods have no effect under Windows.
- When receiving UDP packets, hexterm now prints out the source of the
UDP packets it received (in addition to the data).
- Added a IsNormalized() method to the Queue class.
- Added a IsMessageDeflated() method to ZLibUtilityFunctions.h.
- Added Message::BecomeLightWeightCopyOf(const Message &), for making
lightweight copies of Messages, with shared fields.
- Added Message::ShareName() (like CopyName() except the data isn\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'t
copied, rather only a reference is shared)
- Added Queue::AddHeadAndGet() and Queue::AddTailAndGet() methods,
for when you want to add an item to a Queue and then write to the
added object directly afterwards.
- Added an optional (retPort) argument to
MessageTransceiverThread::PutAcceptFactory() so that you can now
use dynamic port assignment with it.
o PulseNode::GetPulseTime() and PulseNode::Pulse() now take a single
(const PulseArgs &) argument instead of two uint64s. This makes
implementing the PulseNode interface less verbose, and calling
the Pulse callbacks more efficient. However, this breaks compatibility
with earlier code that expects (uint64, uint64) arguments for those
methods, so be sure to update your code when upgrading to this
version of MUSCLE.
o Fixed some compiler warnings under gcc (thanks to Monni for pointing
these out)
o Trying to use MUSCLE\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s logging system when there is not a SetupSystem
object on the stack (e.g. before or after main()) is no longer a fatal error.
Instead, muscle will degrade to output only to the built-in log services
(stdout and/or output-to-file) when called under these conditions.
|
| |
 |
|
Intel Version - requires R5 (1.7 MB) |
38 downloads |
|
 |
|
 |
 |
| |
|
|
| Add Additional Location |
 |
| |
 |
|
PowerPC Version - requires R5 (1.7 MB) |
7 downloads |
|
 |
|
 |
 |
| |
|
|
| Add Additional Location |
 |
|
 |
|
| Source Included |
 |
 |
 |
 |
 |
| |
 |
 |
Like this app? Have questions or comments?
Why not tell the author? Use the "e-mail publisher" link to get in touch with the publisher; they usually love getting feedback.
|
|
|