The AMarquee library allows you to do network broadcasting in an
asynchronous, multithreaded manner, with almost no knowledge of
TCP programming. It does this by creating a background process
that handles the TCP transmission and reception for you, and sends
you messages (called QMessages) to notify you of data you have
recieved. Each of the Q*Op() functions in AMarquee.library creates
a message with your data in it, and sends it to the TCP thread
for queueing and eventual transmission. With this setup, your code
need never wait while data is transmitted or recieved, unless it
wants to.
It is important to understand how data is accessed in the AMarquee
system. All AMarquee public data is stored in a tree on the server,
and each node in the tree has a name, which is a null-terminated string.
Each node may be referenced via a "regular node path string", which is
somewhat like a UNIX file path. Each client program that connects to
the AMarquee server is automatically given its own "directory" node in
the tree, based on the IP name of the computer it is running on, and
the name it has chosen for itself. Thus, if you are running an
AMarquee-based client program on a computer named mycomputer.mycompany.com,
and it connects to the server as "MyProgram", then the program's
"home directory" would be
/mycomputer.mycompany.com/MyProgram
And if you were to add a node named "MyData" to your "directory",
it would show up as
/mycomputer.mycompany.com/MyProgram/MyData
All nodes in the server's data tree may be accessed or referred to
by strings such as these. Also, each node in the data tree contains
a data buffer of variable size. (So much for the filesystem analogy--
nodes in this tree can be both "files" and "directories" at once!)
This data buffer is a simple, raw array of bytes, and hence may contain
any data you wish to keep in it. The data buffer of the "home directory"
node is hard-coded to a null-terminated string containing the IP number
of your host computer, but the data buffers of all other nodes may be
set arbitrarily.
Also: There is a "short" method of specifying nodes that are
located within your own directory space. If you specify a path
string without an initial slash, it will be assumed you mean
the path is relative to your home node. Thus, specifying
"MyData/DataItem1" as a node path would be the same (for most
purposes) as specifying
/mycomputer.mycompany.com/MyProgram/MyData/DataItem1
Lastly, AMarquee makes heavy use of the Amiga wildcarding system
to specify groups of nodes. Thus, to specify all client programs
running on all connected Amigas, you could use
/#?/#?
Or to specify all entries under the node "MyData", that begin with the
string "DataItem", from computers in Australia, that are connected via
an AMarquee client registered as MyProgram, you could do:
/#?.au/MyProgram/MyData/DataItem#?
All matching and storage of nodes is case sensitive!!
Probably the best way to get a feel for how AMarquee works is
to look at and play around with the example programs in the examples
directory of this distribution.
Converted on 24 Mar 2002 with RexxDoesAmigaGuide2HTML 2.1e(private) by Michael Ranner.