BeBits Information Developer Central Submit Application Your Account Web Links Contact Us
BeBits
Please support our sponsors!
MUSCLE
version 4.24
contact publisher
home page
screenshots
version history
other reviews
send updates for this application
talkback
51 comments
 Published by Level Control Systems
   Click here for more information about this publisher...
 Date Posted:   March 29th, 2000
 Last Updated:   April 28th, 2008
 License: BSD/MIT
 Downloads: 19,679 total; 3 recently
 Page Views: 126,690 total
 User Rating: Give this application a rating
8.88 / 10, with 105 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.24 Released 4/28/2008
- If MUSCLE_USE_LIBRT and _POSIX_MONOTONIC_CLOCK are defined,
GetRunTime64() and Snooze64() will now use librt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s high-resolution
functions (clock_gettime() and clock_nanosleep()) instead of
the older vanilla POSIX functions. This can provides higher
resolution timing on platforms that support librt.
- Added a new ExecuteSynchronousMessaging() virtual method
to the AbstractMessageIOGateway class, and some associated
hook/callback methods. This method lets you easily do
synchronous/RPC-style \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"function calls\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" across the gateway\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s
socket, passing in one or more Message objects as the
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"arguments\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", and receiving one or more Messages as \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"results\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\".
- MessageIOGateway now overrides ExecuteSynchronousMessaging(),
IsStillWaitingForSynchronizedReply(), and
SynchronousMessageReceivedFromGateway() so that when you
call ExecuteSynchronousMessaging() on it you will get
proper RPC function-call semantics.
- Added an IsReadyToAcceptSessions() virtual method to the
AbstractReflectSessionFactory class. Subclasses can override
this method to return false if they don\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'t want to accept
any more connections for a while.
- Added an IsConnected() method to the AbstractReflectSession
class, to make it easier to check if a given session is
currently connected to anything or not.
- Added an XorDataIO class to the dataio folder.
XorDataIO XOR\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s all the data going through it, before
forwarding the method call to its held child DataIO object.
- Added a MutexGuard class that you can put on the stack
to automatically lock/unlock a Mutex via its ctor/dtor.
- Added versions of ReadZipFile() and WriteZipFile() that
take a DataIO reference instead of a file name. That way
you can read zip files over the network, through custom
filters, and so on, if you want to.
zlib/ZipFileUtilityFunctions.{cpp,h}.
- ReadZipFile() now has an optional second argument called
(loadData). Setting it false will cause ReadZipFile to
only read in the file names and uncompressed file lengths,
but not actually read or uncompress the file data. This
is useful if you just want to quickly check the zip file\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s
contents without actually unpacking everything.
- Updated testzip.cpp to accept an optional \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"namesonly\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
command line argument, which will set (loadData) to
false in its ReadZipFile() call, as described above.
- Added a GetNetworkInterfaceAddresses() function, as an
easier-to-use alternative to GetNetworkInterfaceInfos().
o Made AbstractReflectSession::IsConnectingAsync() public.
o Moved Snooze64() from NetworkUtilityFunctions.cpp to
SetupSystem.cpp, and moved its function declaration from
NetworkUtilityFunctions.h to TimeUtilityFunctions.h.
* Joel Lucsy reported a bug in FlattenToDataIO() that would cause
the last four bytes of the flattened buffer not to be written
to the DataIO object. Fixed.
* Updated zlib\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'s included VC++ project files to reference zconf.h
in its new location (zlib/win32/zconf.h) so that they now work
again.


 
Intel Version - requires R5   (1.8 MB) 24 downloads
 
 
Dev LinkLink reliability rating  [rating: 10]    Download this app  Report bad link LCS Canada
 
Add Additional Location
 
PowerPC Version - requires R5   (1.8 MB) 4 downloads
 
 
Dev LinkLink reliability rating  [rating: 10]    Download this app  Report bad link LCS Canada
 
Add Additional Location
  Source Included
 
Recent Talkback comments:
  • people need compiled version - lukesky
  • HashFunctor<QString> - Monni
  • QMuscleSupport.h - jaf

    Post your own comment to the Talkback for this application!
    Report a problem with the listing for this application!
  • 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.
     
    BeGroovy
      Recent Downloads  -  # 193
    Total Downloads  -  # 107
    Total Views  -  # 34
    User Ratings  -  # 60
      Class Libraries
    Instant Messaging Servers
    Miscellaneous Servers
    1.  QEMU - 9.62
    2.  ScummVM - 9.50
    3.  cpu_fix - 9.42
    4.  Jukebox - 9.36
    5.  Haiku AGP busm... - 9.35
    6.  vim6 - 9.31
    7.  Transmission - 9.27
    8.  Beezer - 9.25
    9.  BeeF - 9.25
    10.  HandBrake - 9.24
    1.  Ati Radeon Grap... - 404
    2.  Realtek RTL8139... - 217
    3.  BeOS 5 Personal... - 199
    4.  USB Serial driver - 140
    5.  ATI Rage 128 Pr... - 114
    6.  Ensoniq AudioPCI... - 89
    7.  Sound Blaster Pr... - 87
    8.  Broadcom 440x 10... - 87
    9.  VLC Media Player - 81
    10.  S3 Trio 64 v2 DX... - 71
    You are not logged in.
     Login or create an account...
    Hosted by NetConnect

     
    Unless otherwise noted, everything is copyright © 1999-2002 Fifth Ace Productions, LLC. All Rights Reserved.
    For more legal trivia, take a gander at our
    Legal Stuff page and our Privacy Statement.
    Fifth Ace Productions