Lumiera  0.pre.03
»edit your freedom«
model-port.hpp File Reference

Go to the source code of this file.

Description

Organising the output data calculation possibilities.

Model ports are conceptual entities, denoting the points where output might possibly be produced. There is an actual representation, a collection of small descriptor objects managed by the Fixture and organised within the registry datastructure. Thus, while the actual ModelPort descriptor entities are located within and managed by the Fixture – model port as a concept spans the high-level and low-level view. A model port can be associated both to a pipe within a timeline in the HighLevelModel, as well as to denote a set of corresponding exit nodes within the segments of the render nodes network. Model ports are keyed by Pipe-ID and thus are bound to be unique within the application.

A model port is rather derived than configured; it emerges during the build process when a pipe claims an OutputDesignation and some other entity actually uses this designation as a target, either directly or indirectly. This match of provision and usage is detected by the Builder and produces an entry in the fixture's ModelPortTable. Because of the 1:1 association with a pipe, each model port has an associated StreamType.

Because model ports are discovered this way, dynamically during the build process, at some point there is a transactional switch to promote the new configuration to become the valid current model port configuration. After that switch, model ports are immutable.

Model ports are to be accessed, enumerated and grouped in various ways, because each port belongs to a specific timeline and is used to produce data of a single StreamType solely. But all those referrals, searching and grouping happens only after the build process has discovered all model ports currently available. Thus actually the ModelPort elements handed out to client code are just smart-handles, accessing a global ModelPortRegistry behind the scenes. Validity of these handles will be checked on each access. The actual model port descriptors are owned and managed by the fixture;

Todo:
they might bulk allocated in a similar manner than the ProcNode and WiringDescriptor objects are.
See also
ModelPortRegistry_test abstract usage example
ModelPortRegistry management interface
OutputDesignation
OutputMapping
Timeline

Definition in file model-port.hpp.

Classes

class  ModelPort
 Handle designating a point within the model, where actually output data can be pulled. More...
 

Functions

 LUMIERA_ERROR_DECLARE (INVALID_MODEL_PORT)
 Referral to unknown model port.
 
 LUMIERA_ERROR_DECLARE (UNCONNECTED_MODEL_PORT)
 Attempt to operate on an existing but unconnected model port.
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::mobject
 Media-Objects, edit operations and high-level session.