Communication Coordination System Documentation

  • Status: At least partially coded, not publically available.

Description

The Communication Coordination system is intended to ease communication between multiple objects. It provides basic channel communication, allowing an object to join and leave channels, communicate on one or more channels, retrieve a list of channels and retreive a list of all objects on a given channel. The channels are controlled by a central server. This server tracks which objects are on which channels and handles sending communications out to all channel members. The server also has the ability to lock channels, providing basic security.

Client communication

The client communicates with the server through the @process attribute. @process is triggered and passed several variables using the following syntax: @tr server/process=ID,Cmd,Paramlist.
  • ID is the dbref of the object that is doing the triggereing, the system will send any return messages back to that ID
  • Cmd can be one of the commands listed in the commands table
  • Paramlist contains the parameters for the command, the format varies with each command. The table below outlines the commands and their parameters:

Commands table
Command Parameters Description
list   Requests a list of currently active channels
who channel Requests a list of objects on channel
send channel=text Send text to all participants of channel
join channel Join channel
leave channel Leave channel

Server responses

Each command will cause the server to send a response. Responses are sent in the same manner that commands are, @tr client/process=ID,Rsp,Datalist.
  • ID is the dbref of the responding server, this allows a single object to distinguish between replies from multiple servers
  • Rsp is the response
  • Datalist is a comma seperated list of the data that corresponds to the command. Responses share the same syntax (and usually the same name) as commands. The table below contains the responses and the data they return:

Response table
Response Datalist Description
list chanlist Returns chanlist, a space-seperated list of currently active channels
who channel,wholist Returns wholist, a space-seperated list of dbrefs, one for each object on channel
rcv id,channel,text id has sent text to channel
join id,channel id has joined channel
leave id,channel id has left channel

Configuring and using a client

Clients have very little configuration:

  • @debug - A value that evaluates to true will cause the client to @echo the parameters of each @process trigger.

Clients the following attributes which are triggered when the server sends a response:

Response Attribute Parameters Description
list @proc_list server,channel list Server response to list request
list @proc_who server,channel,who list Server response to who request
list @proc_rcv server,channel,sender,message Channel message
list @proc_join server,channel,dbref Object channel join notification
list @proc_leave server,channel,dbref Object channel leave notification
list @proc_denied server,command Server response when denying command/request
list @proc_error server,command Server was unable to process command
list @proc_bad ?,?,?,?,? Client was unable to process command/reply, raw @tr parameters available in v(0)-v(5)

By default each of these attributes @echos the information provided to it as an example on how to use it.

Configuring and using a server

Servers provide the following configuration options:

  • @debug - A value that evaluates to true will cause the server to @echo the parameters of each @process trigger.
  • @chanlocks - A list of channel locks, used to prevent unauthorized clients from joining or listing the members of a channel

@chanlock

The @chanlock attribute holds a list of locked channels and the attributes that contain the functions for the channel lock. Entries are seperated by spaces and each entry consists of the channel name and attribute name seperated by a tilde (~). When an attribute is parsed for the lock, v(#) is set to the client the lock is being tested for.

Sample decompile showing attributes related to @chanlock
@defattr Server/none
@defattr Server/foolock
@defattr Server/bazlock
@set Server=chanlocks:bar~none foo~foolock baz~bazlock
@set Server=none:0
@set Server=foolock:#2484
@set Server=bazlock:[match(name(v(#)),QBFreak)]

In this example, no one is allowed on channel bar, only #2484 is allowed on foo and only objects named QBFreak are allowed on baz.

-- SluggyQBFreak - 12 Dec 2005
Topic revision: r3 - 05 Jan 2006, SluggyQBFreak
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WikiMARE? Send feedback