Layers and Modules
The RACE distribution is divided into several sub-modules that mostly act as layers, enforcing a clear dependency relationship by means of a build system with separate compilation steps. Each layer is only allowed to access lower layers.
From bottom to top:
race-core
- the basic layer with packages such as gov.nasa.race.common, .core, .util, .config, .archive.
.main and .actor. This includes the core classes (e.g. RaceActor and RaceActorSystem) as well as most of
the generic, domain-independent actors such as TranslatorActor. This layer is the minimum that needs to be
imported in external projects that use RACE.
race-net-*
- this is a collection of layers for importing and exporting from external messaging systems such
as ActiveMQ (JMS), Kafka and DDS. Each of the modules mainly consists of import and export actors. Those modules
are kept separate because each of the 3rd party libraries they depend on have a potentially large fan out and hence
should only be included in an application that makes use of them.
race-swing
- this is a utility layer that adds user interface support that is not available in javax.swing.* or
scala-swing, most notably configurable style support
race-ww
- is the layer which adds support for using NASA WorldWind to visualize geospatial data (e.g. flight
positions). This module contains both the RaceViewerActor that encapsulates WorldWind in RACE configs, and
the RaceLayer infrastructure to import and display dynamic RACE data into WorldWind layers.
race-air
- this is the first domain specific layer which includes support for airspace objects such as`FlightPos`
, FlightPath and Airport. This is also where the various SWIM message translators reside.
race-ww-air
- this layer adds WorldWind visualization for most of the race-air constructs
race-testkit
- provides RACE specific infrastructure to write test modules, e.g. to test RaceActors
race-launcher
- contains classes to launch and manage remote RACE instances
race-ui
- will hold a RACE console that makes use of a graphical user interface (as an alternative to the terminal
based ConsoleMain that is included in race-core)
race-tools
- is a layer that contains several stand-alone applications that support RACE development, most notably the
CryptConfig tool that is used to en-/de-crypt RACE config files (see Using Encrypted Configurations section).