MRS components
The
MRS consists of components. Every system contains:
- One environment ("world") component.
- One server component.
- One timer component.
- n agent components.
- n console components.
World
The world component provides the environment. The world only communicates with the server (and the
3dviewers, which are not formally components).
Server
The
server component maintains lists of agents and consoles, stores and forwards simulation control messages, distributes percepts and actions.
Timer
The
timer component controls the simulation speed by sending a "tick" signal to the server regularily.
Agent
Agents, normally running inside the
agent framework component.
Console
A console appplication to work with the system. Typically a
toolkit installation, but there might also be other consoles one day.
For a description of what components typically do, see
What the MRS can do for you.
Components talk to each other through "channels". Every channel has two ends, the "channel server" and the "channel client". (Don't confuse channel servers with the server component.) A channel client is a part of a component that asks the channel server of a second component. Each channel defines a protocol. Channel servers have names. These names follow the pattern ROLE+CLIENTROLE+END, where ROLE is the role of the component that defines the channel server, e.g. "server", CLIENTROLE is the role of the component that can use this channel, e.g. "agent", and END is always the String "server". (So a name for a channelserver could be: serveragentserver. Decode: The server component's agent-channel-channelserver).
The protocols of the individual channels are not documented yet. If you plan on implementing a component from scratch, you will need this information. Please get in
contact so we can brief you.
Obviously every component has its channels that must be there for the system to work. (Agents will always have a channel client connecting to the server component's serveragentserver.) While the channels must be there, their types can vary, and this is where the distribution capabilities of the MRS come in.
Currently, there are two types of channels that can be used:
- type-zero channels between components in the same ComponentRunner.
- type-one channels between components that communicate over Networks.
Type-zero channels just send Java objects through the channel. (The channel's implementation is a method call.)
Type-one channels encode the objects into a stream of XML tags, open a HTTP connection to a servlet, send the XML stream, receive an XML stream and decode it into objects.
The channel types are defined in the component definition in the ComponentRunner's configuration file. (See
How to configure the MRS).
All components have a common inner structure that enables them to interact with the rest of the system and wraps communication and distribution issues. The following
FMC block diagram shows the common inner structure of all components.