RACE Configuration
The RACE executable is a generic driver that just instantiates and initializes actors according to configuration files that are specified as command line arguments. Those files use the HOCON format, which is a JSON dialect that improves readability by means of extensions such as string substitutions and includes.
Each concrete simulation (aka RACE run) is fully specified by its configuration file(s). The main parts of a configuration file is the name of the actor system, and an ordered list of actors:
name = <universe-name>
...
actors = [
{
name = <actor-name>
...
}, ...
]
The order in which actors are specified does matter since it defines the order in which they are created, initialized, started and (in reverse order) terminated. Please refer to RaceActor lifecycle for details.
Each actor needs to have a name
property that uniquely identifies the actor within this universe.
Actors running within this RACE process, or to be started on (already running) remote RACE processes,
need a class
specification, such as
{ name = "test-aircraft-1"
class = "gov.nasa.race.actors.models.SimpleAircraft"
...
}
Actors running within a (remote) RACE process need a remote
URI, specifying the respective
protocol, remote universe name, host and port, e.g.
{ ...
remote = "akka.tcp://satellite-1@localhost:2552"
...
}
Please refer to how to use remote actors for further details.
Communication between actors is defined by means of read-fom
and write-to
values, which contain
the names of respective channels, e.g.
{ name = "fnear2fpos"
class = "gov.nasa.race.actors.translators.FlightsNear2FlightPos"
read-from = "flightsnear/json"
write-to = "fpos"
...
Channel names are strings that should have a path structure, to support (prefix based) channel set
subscriptions (such as flights/*
). Both read-from
and write-to
values can be either single
strings (read-from = "test"
) or arrays of strings (read-from = [ "channel-1", "channel-2", ..]
)
Channel names starting with /local/..
are not shared between connected RACE systems.