Short: AmiTCP data broadcast library & server Author: jfriesne@ucsd.edu (Jeremy Friesner) Uploader: jfriesne@ucsd.edu (Jeremy Friesner) Version: 1.30B Type: comm/net Replaces: comm/net/AMarquee1.20B.lha Requires: Workbench 2.04+, AmiTCP3.0b+ ---------------------------------------------------------------- AMARQUEE V1.30B (Released 2/9/97) ---------------------------------------------------------------- The Problem: You have a great idea for a killer multi-player Internet game or multi-user net app, but it's a total pain in the @)#$* to write all the TCP connection and data synchronization code you'll need to get it going. So you put your idea on the back-burner and go play "MineSweeper" instead. And thus the Amiga is deprived of a fun Internet app. D-oh! :( The Solution: (well, okay, it's *a* solution, anyway) Enter AMarquee. AMarquee is a system that handles all of the icky information distribution details for you, allowing you to concentrate on coding your application, rather than on which data goes into which socket when. AMarquee consists of a shared library and a TCP daemon, which work together to get your data where it needs to be. Your program simply calls amarquee.library functions to broadcast the data, and waits on a provided MsgPort for data from other hosts. Easy! Features of amarquee.library (the shared library/API): - Works with AmiTCP (and likely with any stack that is "AmiTCP compatible") - Simple API that requires no knowledge of socket programming to use. - Each AMarquee connection you make automatically and transparently starts a seperate execution thread, so your app will never be forced to wait while data is sent or received. - An arbitrary number of connections may be active at once. - Allows you to "subscribe" to data that interests you, so that when the data is changed you will be automatically notified. You never need to poll for anything! - An easy mechanism for sending messages to one or many other AMarquee clients that are logged into the same server. - Standard Amiga wildcarding is supported in all applicable functions. This allows you to easily and succinctly refer to one host or data item, or many, as appropriate. - Includes and several small example applications included. - Operation is almost totally asynchronous for efficiency, but several easy synchronization methods are available if you need them. - Can also be used for direct client-to-client connections and for making inetd daemons. Features of amarqueed (the AmiTCP server): - Works with AmiTCP (and any other stack that is "AmiTCP compatible") - Fully multithreaded design, with one server process per connection. - Re-entrant code, to minimize memory usage. - Data is stored in a filesystem-like tree structure for simplicity, flexibility and efficiency. Each client gets its own "home directory" that it may write to or read from, and each may client may also read from the "home directories" of other clients. - Efficient design minimizes CPU usage, net bandwidth, and execution time. - Limits may be put on memory usage, number of connections, and/or which clients or apps may connect. Only serve the hosts and apps you want to serve! - Supports data streaming to one or many clients at once. - Data streaming and synchronization features let you be sure your data was read by all interested hosts before you update it again. - Automatically detects and eliminates "dead" connections (e.g. if the client computer was shut down suddenly) WHAT'S NEW IN VERSION 1.30B: - Both AMarqueed and amarquee.library flush their TCP output buffer after each transaction group has finished being queued. This causes the packets to be sent sooner, allowing for faster response times. - Added code to SillyGame that syncs with the AMarquee server on exit, so that the player's marker will disappear from the other clients' SillyGame windows when he exits. - Changed the behavior of QSessions created by QNewHostSession. Now transactions sent to them while they are still unconnected will cause QERROR_NO_CONNECTION QMessages to be returned. - Changed QNewHostSession() to allow automatic port selection by the TCP stack. - The Installer script now supports Miami. (Thanks to Fredrik Rambris for providing this) - Added an example section to all the man pages in the docs. * Rewrote the client TCP thread shutdown code to be synchronous. Before, the library sent a signal to cause the TCP thread to quit, and this could cause the last transaction to be dropped. I think this was the bug that was causing SillyGame to crash occasionally. The Fine Print: This is the third beta release of this software. While I have tested AMarquee extensively on my computer and designed it to be as robust as possible, there are likely still some bugs in AMarquee. Run AMarquee at your own risk! If AMarquee crashes or exhibits any other erronous behavior, please let me know what happened and how to reproduce the error, so that I can fix it. Thanks! -Jeremy ============================= Archive contents ============================= Original Packed Ratio Date Time Name -------- ------- ----- --------- -------- ------------- 1233 595 51.7% 09-Feb-97 18:09:32 AMarquee.info 83664 25918 69.0% 09-Feb-97 18:09:32 +amarquee.guide 1542 1096 28.9% 09-Feb-97 18:09:32 +AMarquee.guide.info 15728 8588 45.3% 09-Feb-97 18:09:32 +amarquee.library 5241 2420 53.8% 09-Feb-97 18:09:32 +AMarquee.readme 835 268 67.9% 09-Feb-97 18:09:32 +AMarquee.readme.info 34132 18486 45.8% 09-Feb-97 18:09:32 +AMarqueed 4123 1604 61.0% 09-Feb-97 18:09:34 +EditTextFile.rexx 10444 6049 42.0% 09-Feb-97 18:09:34 +AMarqueeDebug 5779 1979 65.7% 09-Feb-97 18:09:34 +amarqueedebug.c 9200 5494 40.2% 09-Feb-97 18:09:36 +AMarqueeHost 4175 1563 62.5% 09-Feb-97 18:09:36 +amarqueehost.c 11868 6922 41.6% 09-Feb-97 18:09:36 +AMarqueeServer 5307 1924 63.7% 09-Feb-97 18:09:34 +AMarqueeServer.c 7400 4731 36.0% 09-Feb-97 18:09:34 +BounceCount 2910 1167 59.8% 09-Feb-97 18:09:36 +BounceCount.c 247 172 30.3% 09-Feb-97 18:09:36 +dmakefile 10408 6410 38.4% 09-Feb-97 18:09:36 +MiniIRC 6379 2171 65.9% 09-Feb-97 18:09:38 +MiniIRC.c 6984 4444 36.3% 09-Feb-97 18:09:34 +RemoveTest 2546 1035 59.3% 09-Feb-97 18:09:36 +RemoveTest.c 9324 5734 38.5% 09-Feb-97 18:09:36 +SillyGame 8214 2586 68.5% 09-Feb-97 18:09:38 +SillyGame.c 7404 4711 36.3% 09-Feb-97 18:09:36 +StreamCheck 3132 1242 60.3% 09-Feb-97 18:09:36 +StreamCheck.c 7216 4569 36.6% 09-Feb-97 18:09:36 +StreamGen 2422 1018 57.9% 09-Feb-97 18:09:36 +streamgen.c 7456 4717 36.7% 09-Feb-97 18:09:34 +SyncTest 3250 1302 59.9% 09-Feb-97 18:09:38 +SyncTest.c 2033 570 71.9% 09-Feb-97 18:09:38 +AMarquee_protos.h 765 298 61.0% 09-Feb-97 18:09:40 +amarquee.fd 2470 1091 55.8% 09-Feb-97 18:09:38 +AMarquee.h 1183 379 67.9% 09-Feb-97 18:09:38 +AMarquee_pragmas.h 12801 4027 68.5% 09-Feb-97 18:09:34 +Install_AMarquee 612 329 46.2% 09-Feb-97 18:09:34 +Install_AMarquee.info -------- ------- ----- --------- -------- 298427 135609 54.5% 11-Feb-97 13:30:54 35 files