Short: Data broadcast system for AmiTCP/Inet225/etc. Type: comm/net Author: jfriesne@ucsd.edu (Jeremy Friesner) Uploader: jfriesne@ucsd.edu (Jeremy Friesner) Requires: Workbench 2.04+, Inet225 or AmiTCP3.0b+ or compatible TCP stack Replaces: comm/net/AMarquee1.44.lha Version: 1.45 ---------------------------------------------------------------- AMARQUEE v1.45 (Released 11/2/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 "Lemmings" instead. And thus the Amiga is deprived of a fun Internet app. D-oh! :( The Solution: (well, okay, it's *a* solution, anyway) 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): - Programs written to use amarqeue.library will work with AmiTCP, Inet225, 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 for both C and PCQ Pascal are included. - Several small example programs are 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 or manually-launched daemon programs. Features of AMarqueed (the AmiTCP server): - Works with Inet225, 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) WHAT'S NEW IN VERSION 1.45: 1.45 : (Public Release 11/2/97) (amarquee.library v45) - Added Inet225 versions of amarquee.library and AMarqueed. Now all amarquee.library based programs can run, without modification, on both AmiTCP and Inet225 systems! Furthermore, Inet225 systems can be AMarquee servers. - Added Pascal headers and a link library, AMarquee.lib. Now amarquee.library can be used by PCQ programs! - Extended the Installer script to install to Inet225, and to (optionally) install the PCQ specific files. It also helps you set the new env variables (described below) - Added the QRequestPrivilegesOp, QReleasePrivilegesOp, and QKillClientsOp functions to amarquee.library. With these functions, favored clients can request special abilities from the server. - Added the AMARQUEED_KILLCLIENTS AMARQUEED_ADMIN, AMARQUEED_SENDSYSMESSAGES and AMARQUEED_ALLPRIVILEGES env variables to AMarqueed, to allow the site administrator to specify who can get special abilities. - Added the AMARQUEED_MAXQUEUEDMESSAGES env variable to AMarqueed. This setting allows you to have AMarqueed automatically disconnect clients who are getting too far behind in their duties (due to e.g. a bad TCP connection to their client), so that they don't eat up all your memory. - Added the QGetParameterOp and QSetParameterOp functions to amarquee.library, so that client programs may get or set certain parameters on the server. - Added client-to-server ping logic to amarquee.library. Now your client should know within 10 minutes that the server has crashed/gone offline, even if it didn't go down "gracefully", and your connection was idle the whole time. * Fixed a typo in the .fd file that was causing QErrorName to return incorrect results. * Fixed a bug in the server-to-client ping logic. The server should detect "dead" client connections somewhat more quickly now. * Fixed a bug in the access-control logic. Before, QSetAccessOp kept other clients from "seeing" even the root node of its client, rather than just the contained data--making the client effectively invisible to other clients. * Server now sends a QERROR_UNIMPLEMENTED message when it gets a packet it doesn't know the type of, rather than disconnecting the client. This should ease compatibility problems in the future. NOTE ON COMPATIBLITY: amarqueed.library v45 introduces client-side timeout pinging, which may cause you be erronously disconnected from older versions of AMarqueed after about 5 minutes of idle time. To solve this problem, have the server computer install AMarqueed v1.45 on his system!