Contents | < Browse | Browse >

                              AMARQUEE V1.41
                            (Released 4/17/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!  The TCP daemon, AMarqueed runs on a well connected 
 central Amiga (such as isys.ml.org) and acts as a sort of 
 interconnecting switchboard, distributing information to 
 many clients at once. 

Features of amarquee.library (the shared library/API): 

 - Works with AmiTCP, Miami, or any other 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-launched daemons. 

Features of AMarqueed (the AmiTCP server): 

 - Works with AmiTCP, Miami, or 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 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 without quitting politely) 

The AMarquee package (both amarquee.library and AMarqueed) is available 
on Aminet in the file comm/net/AMarquee1.41.lha.