Blueprint Help Send comments on this topic.
Container Definitions

Glossary Item Box

Description

A 'Container Definition' is a special form of circuit that specifies the application's top level content and connectivity.  Containers can only contain; circuit instances, circuit references and child containers.  Only circuits (and their descendants) that appear in the container are included in the application.

Contained circuit instances may not necessarily be explicitly connected to any adjacent circuits because they may be implicitly connected-to by reference from within adjacent circuitry.  'Services' are typically provided as 'isolated' circuits.  An example might be a diagnostic logging service that is invoked from so many circuits and sub-circuits that the circuit connectivity could become difficult to follow.  In this case, the diagnostic service is best connected-to by reference rather than explicit connection.

Containers can also contain references to circuit instances that are included in the application, or more typically to 'Service' circuits in remote third party applications.  In order for two distinct CLIP application instances to connect, they must both register with the same CLIP registry server.  Particular application instances are identified at runtime by their 'Instance' names and so multiple application instances can execute on the same network and share a common registry server.

 


EnlargeClick to enlarge

The example above shows a typical container, in this case for a towed array sonar system.  The Database circuit in the bottom left of the diagram is isolated and executes 'standalone'.  At runtime it will be connected-to by a number of referencing circuits in the main body of the application (so not visible at the top level). 

The GUI reference shown top right (shaded gray) is a reference to another application that controls the sonar and displays its output.  The GUI will not be instantiated as part of this application but at runtime the specified connections will be made.  Note that in practice the GUI would almost certainly be the client and the sonar would be the server and so the GUI reference would not actually appear in this container.  Instead, the GUI container would contain a reference to the sonar which would mean that the GUI would be responsible for connecting rather than the sonar.

In the example above the container has been given the 'generic' type 'TopLevel', but in practice would probably be called something more useful like 'TowedArraySonarProc'.

Once the top level container has been created it can be accreted into processes (see Circuit Accretion).