Short: (68000 bugfix) TCP Data broadcast system (library & server) Author: jfriesne@ucsd.edu (Jeremy Friesner) Uploader: jfriesne@ucsd.edu (Jeremy Friesner) Version: 1.48 Type: comm/net Replaces: comm/net/AMarquee1.47.lha Requires: Workbench 2.04+, Inet225 or AmiTCP3.0b+ or compatible TCP stack ---------------------------------------------------------------- AMARQUEE v1.48 (Released 4/10/98) ---------------------------------------------------------------- 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 calls simple amarquee.library functions to broadcast your 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 amarquee.library will work transparently with Inet225, AmiTCP, Miami, or any other TCP stack that is "AmiTCP compatible". - Has a simple API that requires no knowledge of multithreading techniques or socket programming to use. - Each AMarquee connection you make automatically and transparently starts a separate background execution thread, so your app will never have to block while data is sent or received. - An arbitrary number of AMarquee connections may be active at once. - Allows you to "subscribe" to data that interests you, so that when the data on the server 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 C, C++, and PCQ Pascal are included. - ARexx accessible. That is, ARexx scripts can use amarquee.library for communications using the same API that compiled C programs do. - Example programs in C, C++, Pascal, and ARexx 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. - Automatically detects when the computer on the other end of the AMarquee connection has crashed or been shut down, even on idle connections. Features of AMarqueed (the AmiTCP server): - Works with Inet225, AmiTCP, Miami, or any other TCP 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) - Server may be administered remotely by clients with "privileged" status. WHAT'S NEW IN VERSION 1.48: 1.48 : (Public Release 4/10/98) (amarquee.library v48) * Both amarquee.library and AMarqueed could crash on 68000 or 68010 processors, as they didn't always keep their data aligned to word boundaries. Fixed. (Thanks to Mike Constantine for his help with this!) 1.47 : (Public Release 2/20/98) (amarquee.library v47) - Added a QGOF_NOTIFY flag to QGo(). - Added the QDetachSession() and QReattachSession() functions to amarquee.library. - Added AMarqueeDebugMultiThreaded.c to the testPrograms directory, as a test/demonstration of the new functions. - Optimized the transport code somewhat, to cut down on the number of memory allocations, and the amount of memory used. - Added Session.h to the distribution. Session.h contains a C++ "wrapper" class named Session, that represents a QSession in a nice object-oriented manner. - Added AMarqueeDebug.cpp to the Example Clients directory. * Added the link to the QErrorName documentation that was overlooked before in the API listing. * Fixed the parsing of arguments in the ARexx version of QGo().