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