SCHEMESTATION is an operating environment where numerous small agents interact asynchronously. In order to interact, the agents need to have some agreement on how to express information. This document describes certain messages that are commonly sent between agents in the current implementation. For example, messages used to interact with the domain kernel agent and the object server are completely identified.
All messages herein are lists whose first element is a string denoting the message type and the rest items are arguments. (The strings are kept short in order to gain some efficiency. Strings are matched case-sensitively.)
Message: ("CA" arguments)
Name shortcut for: Command-line Arguments
Description: This message is sent to an agent when it has been started
from a shell-like program; ARGUMENTS is a list of strings that
the user has supplied as command-line arguments.
Message: ("CDKacr" domain address new-domain new-address)
Name shortcut for: Core Domain Kernel Address Control Remap
Description: As DKIacr, but passed from a DKI to a CDK.
Message: ("CDKeir" address)
Name shortcut for: Core Domain Kernel External agent Interface Running
Description: This message is sent by a DKI to a CDK to inform that
a previously requested external agent interface agent is now running
and has the address ADDRESS.
Message: ("CDKpir" address)
Name shortcut for: Core Domain Kernel Process Information Request
Description: As DKIpir, but passed from a DKI to a CDK.
Message: ("CDKrkq" domain)
Name shortcut for: Core Domain Kernel Remote Kernel Query
Description: This message is sent to a CDK by the corresponding DKI in order
to query for the address of the DKI of the remote domain that
has the domain address DOMAIN. The CDK answers with DKIrka.
Message: ("CDKru" id address)
Name shortcut for: Core Domain Kernel RUnning
Description: This message is sent by the CDK to the DKI to denote that
the agent that was requested to start executing, associated with
the identifier ID, is now really running and has the address
ADDRESS.
Message: ("CDKsd")
Name shortcut for: Core Domain Kernel ShutDown.
Description: This is as DKsd, but passed from a DKI to a CDK.
Message: ("CDKsl" message)
Name shortcut for: Core Domain Kernel System Log message
Description: As DKIsl, but passed to a CDK by a DKI.
Message: ("CDKto" id)
Name shortcut for: Core Domain Kernel TimeOut
Description: This message is sent by a CDK to an address that has requested
the deliver of a timeout message some time ago. ID is the same integer
that was supplied in the DKItr (or CDKtr) message.
Message: ("CDKtr" address time id)
Name shortcut for: Core Domain Kernel Timeout Request
Description: This is actually the same message as DKItr,
but understood by the CDK instead of the DKI.
Message: ("DKIacr" domain address new-domain new-address)
Name shortcut for: Domain Kernel Interface Address Control Remap
Description: This message is sent to a DKI in order to note that
the remote address DOMAIN:ADDRESS points actually to
NEW-DOMAIN:NEW-ADDRESS. It is sent to a domain when a domain
is sending messages to DOMAIN:ADDRESS instead of sending them
directly to NEW-DOMAIN:NEW-ADDRESS; the intention is to let
the receiving domain change its address table and thus optimize
messaging cost by dropping one level of indirection.
Message: ("DKIdkc" address)
Name shortcut for: Domain Kernel Interface Domain Kernel Changed
Description: This message is sent to an agent after it has been migrated
to a new domain. ADDRESS contains the address of the DKI in the
new domain. It is up to the receiving application to decide
what to do with this information.
Message: ("DKIosa" address)
Name shortcut for: Domain Kernel Interface Object Server Address
Description: This message is sent by a DKI as a response to a previously
received DKIosar message. ADDRESS is the address of the
locally used object server, or #f if no object server is
in use (which is a very rare occasion).
Message: ("DKIosar" address)
Name shortcut for: Domain Kernel Interface Object Server Address Request
Description: This message is sent to a DKI to query for the address
of the object server used in the corresponding domain.
The response is sent with the message DKIosa to
ADDRESS.
Message: ("DKIpir" address)
Name shortcut for: Domain Kernel Interface Process Information Request
Description: Sent to a DKI in order to request information about the processes
(agents) running currently in the domain of the DKI.
Process information is returned by sending a DKpi message
to ADDRESS.
Message: ("DKIrka" domain address)
Name shortcut for: Domain Kernel Interface Remote Kernel Address
Description: This message is sent to a DKI by a CDK in order to deliver
the address of the DKI of a remote domain. (The CDK is able to construct
such an address due to the fact that DKI's have local addresses zero
by convention.) DOMAIN is a domain address and ADDRESS the address
of the DKI in the domain.
Message: ("DKIsl" message)
Name shortcut for: Domain Kernel Interface System Log message
Description: This message is sent to the DKI by any agent. It requests outputting
the message MESSAGE in the system log.
Message: ("DKItr" address time id)
Name shortcut for: Domain Kernel Interface Timeout Request
Description: This message is sent to a DKI in order to request the delivery
of a timeout message to ADDRESS after TIME milliseconds.
The message ("CDKto" id) is sent to ADDRESS after
TIME ms. ID must be an integer.
Message: ("DKIx" template address)
Name shortcut for: Domain Kernel Interface eXecute
Description: This message is sent to a DKI to request the execution of an agent
whose code is found from a local object server with an identifier
matching TEMPLATE. When the agent has started, a DKIru message
is sent to ADDRESS.
Message: ("DKcd" type address)
Name shortcut for: Domain Kernel Control Device
Description: This message is sent to the DKI by the CDK in order to request
the DKI to get control over a device whose low-level device driver
is found from the address ADDRESS. TYPE is the type of the device.
(Currently, only the type "terminal" is understood.)
Message: ("DKgei")
Name shortcut for: Domain Kernel Get External agent Interface agent
Description: This message is sent by the CDK to the DKI in order to
request the spawning of a new generic external agent interface agent.
Message: ("DKin" key value)
Name shortcut for: Domain Kernel INformation
Description: This message is sent by the CDK to the DKI to pass information
about the current status of the system. KEY is a string that describes
what kind of information is provided in VALUE. The following keys
are used:
Message: ("DKpi" id name status frac id name status frac ...)
Name shortcut for: Domain
Kernel Process Information
Description: This is sent by the core domain kernel
as a response to a DKIpir/CDKpir message. The
contents of the message describe the currently existing processes. ID
is the scheduler identifier of particular process. NAME is the name of
a process as supplied originally by the compiler (actually it is the
first entry in the constants table of the running agent's heap).
STATUS is the status of the process and can be one of the following: 1
= no agent (should not be sent), 2 = running, 3 = running with
exceptions disabled, 4 = blocking (i.e. waiting for a message), 5 =
dead (should not be sent). There are as many (ID NAME STATUS FRAC)
quadruples as there are processes running in the local domain.
Message: ("DKsd")
Name shortcut for: Domain Kernel ShutDown
Description: This message is sent to a DKI in order to request domain shutdown.
Message: ("DKwe" address)
Name shortcut for: Domain Kernel WElcome
Description: This message is sent to every ordinary agent as the first message
a new agent ever receives. It contains the address of the agent itself.
Message: ("MIdo" address domain agent-object)
Name shortcut for: MIgration DO
Description: This message is sent by a DKI to another DKI in order to
transport an agent object during migration. ADDRESS is the local address
the agent had in the sending domain as a bit string in order
to prevent address remapping. DOMAIN is the domain address
of the sending domain. AGENT-OBJECT is the agent object to transport.
Message: ("MIin" address domain agent-object)
Name shortcut for: MIgration INitialize
Description: This message is sent to a DKI by the corresponding CDK in order
to transport an agent object to another domain. AGENT-OBJECT is
a packed agent that had the local address ADDRESS and should be
transported to the remote domain having the domain address DOMAIN.
Message: ("MIok" original-address new-address new-domain)
Name shortcut for: MIgration OK
Description: This message is sent by a DKI that has received a new agent,
by migration, to the DKI of the domain that sent the agent.
ORIGINAL-ADDRESS is the local address the agent had before migration
in the old domain, NEW-ADDRESS is the new local address in the
new, current domain and NEW-DOMAIN is the domain address of the
new domain.
Message: ("MIre" address domain agent-object)
Name shortcut for: MIgration REceive
Description: As MIdo, but passed from the receiving DKI to the corresponding
CDK.
Message: ("MIss" original-address new-address original-domain new-domain
new-address-*)
Name shortcut for: MIgration SuccesS
Description: This message is sent by a CDK to the corresponding DKI after
an agent has been succesfully received. ORIGINAL-ADDRESS is the
address the agent had before being transported to the current domain.
NEW-ADDRESS is its new address in the local domain.
Similarly, ORIGINAL-DOMAIN is the domain where the agent came from
and NEW-DOMAIN is the current domain address. NEW-ADDRESS-* is
as NEW-ADDRESS but is of the actual address type, whereas NEW-ADDRESS
is a bit string without address tag in order to prevent it from
being remapped later.
Message: ("MIst" address domain)
Name shortcut for: MIgration STart
Description: This message is sent to a DKI in order to start migrating
the agent that has the local address ADDRESS to the domain having
the domain address DOMAIN.
Message: ("MIsti" id domain)
Name shortcut for: MIgration STart with Identifier
Description: This message is sent to a DKI in order to start
migrating the agent that is running with the scheduler identifier
ID in the current domain to the domain having the domain address
DOMAIN.
Message: ("OSad" identifier object)
Name shortcut for: Object Server ADd
Description: This message is sent to an object server to request the adding
of the object OBJECT, indexed by the identifier IDENTIFIER, to the store.
Message: ("OSfe" address template)
Name shortcut for: Object Server FEtch
Description: This message is sent to an object server to fetch an object
whose identifier matches TEMPLATE. The object server returns
an object by sending the message OSfr back to ADDRESS.
Message: ("OSfr" template object)
Name shortcut for: Object Server Fetch Result
Description: This message is sent by an object server as a response
to a previous OSfe message. TEMPLATE is the template
that was given and OBJECT is an object that was found from the
object server's store, associated with an identifier that
matches TEMPLATE. If there was no object with a matching identifier,
this message is still sent; object is then the boolean false #f.
Message: ("OSin" filename object)
Name shortcut for: Object Server INject
Description: This message is sent to an object server to request the insertion
of the object OBJECT that was read from a UNIX file named FILENAME.
It is equivalent to ("OSin" (("filename" filename)) object).
Message: ("OSqr" template matching-identifiers)
Name shortcut for: Object Server Query Result
Description: This message is sent by an object server as a response
to a previous OSqu message. TEMPLATE is the template
that was given and MATCHING-IDENTIFIERS is a set of identifiers
that match TEMPLATE and that are found from the object server's store.
Message: ("OSqu" address template)
Name shortcut for: Object Server QUery
Description: This message is sent to an object server to query for a set of
identifiers that match the template TEMPLATE. The object server
returns the list of matching identifiers (either all of them
or a subset at its own discretion) by sending the message OSqr
back to ADDRESS.
Message: ("OSre" template)
Name shortcut for: Object Server REmove
Description: This message is sent to an object server to request
the removal of all objects whose identifiers match TEMPLATE.
Message: ("TCAad" address)
Name shortcut for: Terminal Controlling Agent ADdress
Description: This message is sent to an agent to pass the address of a TCA
forward. (It is required if the agent needs to e.g. open a window.)
Message: ("TCAcd" address)
Name shortcut for: Terminal Controlling Agent Control Device
Description: This message is sent to a TCA to inform that the TCA should
take over the control of a terminal device driver whose address
is ADDRESS.
Message: ("TCAcw" title height address id)
Name shortcut for: Terminal Controlling Agent Create Window
Description: This message is sent to a TCA in order to request
the creation of a new window, whose title is TITLE, height originally
HEIGHT lines and that has the identifier ID.
Message: ("TCAkp" key)
Name shortcut for: Terminal Controlling Agent Key Press
Description: As TDDkp, but sent by a TCA.
Message: ("TCAmc" x y button)
Name shortcut for: Terminal Controlling Mouse Click
Description: As TDDmc, but sent by a TCA.
Message: ("TCAwc" user-id address)
Name shortcut for: Terminal Controlling Agent Window Created
Description: This message is sent after a TCA has created a new
window. The message is sent to the address that was given in the
corresponding TCAcw message. USER-ID is the identifier
the using application supplied in the TCAcw message, and
ADDRESS is the address of the agent controlling the newly
created window.
Message: ("TCAwin" TCA-address id user-id address)
Name shortcut for: Terminal Controlling Agent Window INitialize
Description: This message is sent to a window controlling agent, which is
an agent taking care of one window displayed on a terminal controlled
by a TCA. The purpose of the message is to initialize the agent.
TCA-ADDRESS is the address of the TCA, ID is an id invented
by the TCA, USER-ID is a window identifier invented by an application
requesting the window creation, and ADDRESS is the address where
information about the window should be sent, in particular,
a TCAwc message.
Message: ("TCAwiw" id x y string fg bg)
Name shortcut for: Terminal Controlling Agent Write In Window
Description: This message is sent to a TCA in order to request
the agent to draw the string in the window with the identifier
ID at position (X, Y) with the foreground color FG and background
color FG. This message is mainly used by the window controlling agent
and should not be used for other purposes, otherwise the terminal
can get messy.
Message: ("TCAwk" id)
Name shortcut for: Terminal Controlling Agent Window Kill
Description: Sent to a TCA,
request the deletion of the window that has the identifier ID.
Message: ("TCAwrs" new-height)
Name shortcut for: Terminal Controlling Agent Window ReSize
Description: Sent to a window controlling agent by the TCA, inform the
agent that the size of the window as displayed on the terminal has
changed to NEW-HEIGHT and the window should be redrawn.
Message: ("TDDcf" width height)
Name shortcut for: Terminal Device Driver ConFiguration
Description: Report the configuration of the hardware device driver, i.e.
the size of the terminal. This message is sent to a TCA by
the terminal device driver special agent.
Message: ("TDDkp" char)
Name shortcut for: Terminal Device Driver Key Press
Description: This message is sent to a TCA from a terminal device driver.
It is used to announce that the user has pressed the key CHAR.
Message: ("TDDmc" x y button)
Name shortcut for: Terminal Device Driver Mouse Click
Description: This message is sent to a TCA from a terminal device driver.
It is used to announce that the user has clicked the BUTTONth button
of a pointer device at position (X, Y).
Message: ("TDDqc")
Name shortcut for: Terminal Device Driver Query Configuration
Description: Sent to a terminal device driver, request the driver to send
a TDDcf message to the corresponding TCA.
Message: ("TDDsc" address)
Name shortcut for: Terminal Device Driver Set Controller
Description: Sent to a terminal device driver, tell the driver that
it is from now on controlled by the TCA in address ADDRESS. From
receiving this message on, the driver sends e.g. all mouse-click and
key-press events to the given ADDRESS.
Message: ("TDDws" x y string fg bg)
Name shortcut for: Terminal Device Driver Write String
Description: Request the string STRING to be displayed on the terminal
at position (X, Y), drawn with foreground color FG and background
color BG.
Message: ("TWcl")
Name shortcut for: Terminal Window CLear
Description: Sent to a window controlling agent, request the contents
of the window to be emptied.
Message: ("TWsc" amount)
Name shortcut for: Terminal Window SCroll
Description: Sent to a window controlling agent, request the contents
of the window to be scrolled AMOUNT lines upwards.
Message: ("TWw" string x y)
Name shortcut for: Terminal Window Write
Description: Sent to a window controlling agent, request the string STRING
to be display at the position (X, Y), relative to the upperleft
corner of the window. The change in the window contents is cached,
as opposed to the (not very useful) TWws.
Message: ("TWwl" line)
Name shortcut for: Terminal Window Write Line
Description: Sent to a window controlling agent, request the line
LINE to be displayed at the bottom of the window after the
old contents
have been scrolled up once.
Message: ("TWws" string x y fg bg)
Name shortcut for: Terminal Window Write String
Description: Sent to a window controlling agent, request the string STRING
to be display at the position (X, Y), relative to the upper-left corner
of the window, with foreground color FG and background color BG.
This message bypasses the contents caching normally applied
by the window controlling agent and is no longer very useful.