List of Messages

List of Messages
SchemeStation documentation

1 Introduction

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.

2 Alphabetical listing of used messages

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:

kernel-address
VALUE denotes the address of the CDK.
domain-address
VALUE denotes the local domain address.
abstract-name
VALUE denotes the abstract name of the domain, as specified by the user (during startup).
object-server
VALUE denotes the address of the locally started object server.
mother-domain-DKI
VALUE denotes the address of the DKI of the domain that is chosen to work as the mother domain.

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.