diff --git a/doc/devel/uml/class163973.html b/doc/devel/uml/class163973.html new file mode 100644 index 000000000..4a627eca4 --- /dev/null +++ b/doc/devel/uml/class163973.html @@ -0,0 +1,21 @@ + + + + + + +Class Advice + + + + + +
Class Advice
+

+ + + + +

Declaration :

Stereotype: entity

+ + diff --git a/doc/devel/uml/class164101.html b/doc/devel/uml/class164101.html new file mode 100644 index 000000000..a7ea0ed91 --- /dev/null +++ b/doc/devel/uml/class164101.html @@ -0,0 +1,25 @@ + + + + + + +Class PointOfAdvice + + + + + +
Class PointOfAdvice
+

+ + + + +

Declaration :

Directly inherited by : AdviceProvision AdviceRequest

+
+ +
Relation <unidirectional association>

Declaration :

Stereotype: holds

+
+ + diff --git a/doc/devel/uml/class164229.html b/doc/devel/uml/class164229.html new file mode 100644 index 000000000..63bedaff3 --- /dev/null +++ b/doc/devel/uml/class164229.html @@ -0,0 +1,25 @@ + + + + + + +Class Advisor + + + + + +
Class Advisor
+

+ + + + +

Declaration :

Stereotype: actor

+
+ +
Relation <unidirectional association>

Declaration :

Stereotype: add

+
+ + diff --git a/doc/devel/uml/class164357.html b/doc/devel/uml/class164357.html new file mode 100644 index 000000000..46906439f --- /dev/null +++ b/doc/devel/uml/class164357.html @@ -0,0 +1,25 @@ + + + + + + +Class Advised + + + + + +
Class Advised
+

+ + + + +

Declaration :

Stereotype: actor

+
+ +
Relation <unidirectional association>

Declaration :

Stereotype: owns

+
+ + diff --git a/doc/devel/uml/class164485.html b/doc/devel/uml/class164485.html new file mode 100644 index 000000000..4fe5afcad --- /dev/null +++ b/doc/devel/uml/class164485.html @@ -0,0 +1,23 @@ + + + + + + +Class AdviceRequest + + + + + +
Class AdviceRequest
+

+ + + + +

Declaration :

+ +
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class164613.html b/doc/devel/uml/class164613.html new file mode 100644 index 000000000..47c23e875 --- /dev/null +++ b/doc/devel/uml/class164613.html @@ -0,0 +1,23 @@ + + + + + + +Class AdviceProvision + + + + + +
Class AdviceProvision
+

+ + + + +

Declaration :

+ +
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/class164741.html b/doc/devel/uml/class164741.html new file mode 100644 index 000000000..9f8dc59b9 --- /dev/null +++ b/doc/devel/uml/class164741.html @@ -0,0 +1,24 @@ + + + + + + +Class Binding + + + + + +
Class Binding
+

+ + + + +

Declaration :

+ +
Relation <association>

Declaration :

+
Relation <association>

Declaration :

+ + diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index ed532bb62..d3ac050c6 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -16,6 +16,7 @@ + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index ed22c27b6..c0cb231a9 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -17,6 +17,11 @@
Advice entities
Asset Kinds
Automation Entities
Builder Entities
+ + + + + @@ -28,6 +33,7 @@ + @@ -132,6 +138,7 @@ + diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 916725182..adfef0f67 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -18,6 +18,11 @@
AbstractMO
Adviceentity
AdviceProvision
AdviceRequest
Advisedactor
Advisoractor
AFrame
Allocationa directive to place a MObject in a specific way
AppconfigsingletonSingleton to hold inevitable global flags and constants and for performing erarly (static) global initialization tasks.
AutoAutomation data for some parameter (i.e. a time varying function)
BackendCache
BareEntryID
Binding
Binding
BuffHandle
BuffTable
PlayheadCursor
Plug
PluginAdapterAdapter used to integrage an effects processor in the render pipeline
PointOfAdvice
Prefetch
Previewalternative version of the media data, probably with lower resolution
Prockey abstraction: data processing asset
- + @@ -37,28 +37,28 @@ - + - - - + + - - - + + - - - + + + + +
AbstractMO
+Advice
+AdviceProvision
+AdviceRequest
+Advised
+Advisor
AFrame
Allocation
Appconfig
@@ -29,6 +34,7 @@ Auto
BackendCache
BareEntryID
+Binding
Binding
BuffHandle
BuffTable
@@ -133,6 +139,7 @@ PlayheadCursor
Plug
PluginAdapter
+PointOfAdvice
Prefetch
Preview
Proc
diff --git a/doc/devel/uml/fig141445.png b/doc/devel/uml/fig141445.png new file mode 100644 index 000000000..4309a900a Binary files /dev/null and b/doc/devel/uml/fig141445.png differ diff --git a/doc/devel/uml/fig141573.png b/doc/devel/uml/fig141573.png new file mode 100644 index 000000000..986ef241d Binary files /dev/null and b/doc/devel/uml/fig141573.png differ diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 490baddde..44cff5b16 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -147,7 +147,7 @@ Documentation
Artifact Lumiera

the main executable to be built

Depends on common

Depends on gui

Depends on proc

Depends on backend

Stereotype: executable

-

executable associated with : arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender

+

executable associated with : mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask

Artifact main

Stereotype: source

@@ -1502,8 +1502,38 @@ undo + +

5.2 Class View Advice

+
+ +

+

Advice entities



+
Class Advice
+
+
Class Advisor
+
Class Advised
+
+
+
Class Binding
+ +

+

Advice solving



+ +
Class instance

type :AdviceProvision

+
Class instance

type :AdviceProvision

+
Class instance

type :AdviceProvision

+
Class instance

type :Advisor

+
Class instance

type :Advised

+
Class instance

type :AdviceRequest

+
Class instance

type :Advised

+
Class instance

type :AdviceRequest

+
Class instance

type :Binding

+
Class instance

type :Binding

+
Class instance

type :Binding

+
Class instance

type :Binding

+
Class instance

type :Binding

-

5.2 Class View StreamType

+

5.3 Class View StreamType

@@ -1515,10 +1545,10 @@ undo
Class MediaKind
-

5.3 Package ConfigQuery

+

5.4 Package ConfigQuery

-

5.3.1 Component View Query System overview

+

5.4.1 Component View Query System overview

@@ -1534,7 +1564,7 @@ undo
Component DefaultsManager
-

5.3.2 Class View query

+

5.4.2 Class View query

@@ -1559,27 +1589,27 @@ undo
Class ResultSet
-

5.3.3 Use Case View query use

+

5.4.3 Use Case View query use

when to query



-

5.3.3.1 Use Case create specific object

+

5.4.3.1 Use Case create specific object

-

5.3.3.2 Use Case use "default" object

+

5.4.3.2 Use Case use "default" object

-

5.3.3.3 Use Case load object from session

+

5.4.3.3 Use Case load object from session

-

5.3.3.4 Use Case add new object to session

+

5.4.3.4 Use Case add new object to session

Class User
-

5.3.3.5 Use Case ConfigQuery

+

5.4.3.5 Use Case ConfigQuery

-

5.3.3.6 Use Case need sub object

+

5.4.3.6 Use Case need sub object

"default" object



@@ -1587,17 +1617,17 @@ undo
Class instance predicate impl

type :TypeHandler

-

5.4 Package Containers

+

5.5 Package Containers

-

5.4.1 Class View Custom holders

+

5.5.1 Class View Custom holders

Class Handle
Class P
-

5.5 Class View error

+

5.6 Class View error

@@ -1611,7 +1641,7 @@ undo -

5.6 Class View Service Components

+

5.7 Class View Service Components

Class Tool
@@ -1621,7 +1651,7 @@ undo
Class Appconfig
-

5.7 Class View Posix Threads Abstraction

+

5.8 Class View Posix Threads Abstraction

C++ wrapers for pthreads

Class Thread
@@ -1629,7 +1659,7 @@ undo
Class Mutex
-

5.8 Class View SmartPointers

+

5.9 Class View SmartPointers

diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index c84f0a7d2..c5e08071d 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -28,8 +28,8 @@
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<flow>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
<transition>transition
diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index 77e461db5..9f3b83f00 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -27,6 +27,14 @@ ad2class instance ad3class instance add new object to sessionuse case +Adviceclass +Adviceclass view +Advice entitiesclass diagram +Advice solvingobject diagram +AdviceProvisionclass +AdviceRequestclass +Advisedclass +Advisorclass AFrameclass aframeartifacta buffer and render process holding a Audio frame allocateBufferoperation @@ -57,12 +65,12 @@ Assetsclass view ATTACHattributeattach subject to anchor (e.g. an effect to a clip) au1class instance -aud_Aclass instance aud_aclass instance +aud_Aclass instance audioclass instance +audio1class instance audio1class instance audio1class instance -audio1class instance autoartifactMedia Object holding automation data AutoclassAutomation data for some parameter (i.e. a time varying function) Automation Entitiesclass diagram diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 329844354..7ae707608 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -24,6 +24,7 @@ BackendCacheclass BackendLayerpackage BareEntryIDclass +Bindingclass Bindingclass BuffHandleclass BuffTableclass @@ -39,8 +40,8 @@ buildableartifactmarker interface denoting any MObject able to be treated by Tools buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline Buildercomponent -Builderpackage builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem +Builderpackage Builder Entitiesclass diagram Builder Tool (Visitor)class diagram Builder Workingsclass view diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index e1ddf1116..484313c80 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -35,49 +35,62 @@ checked_inrelationchecked_in objects are subject of cache aging and must be not in use checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging choice pseudo statechoice pseudo state -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance class instanceclass instance +class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance clearoperationclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
client codecomponent clipartifacta Media Clip diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index f2006f6ac..cd8b1183a 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -22,8 +22,8 @@ EDL Example1object diagramA simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks EDL Example2object diagramMore complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip EffectclassEffect or media processing component -effectartifactEffect or media processing component effectartifactEDL representation of a pluggable and automatable effect. +effectartifactEffect or media processing component Effectclass effective timeline (Fixture)node effectiveTimelinerelation diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index e177ed876..f8b0d3398 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -41,8 +41,8 @@ Fixtureclass Focus of Queryclass diagram fork activity nodefork activity node -fork pseudo statefork pseudo state fork pseudo statefork pseudo state +fork pseudo statefork pseudo state FrameclassFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool. Framenode FrameclassTODO: how to relate to Cehteh's Frame entity in the Backend?
The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 2d011b5a4..cfc9228eb 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -25,8 +25,8 @@ Hierarchyclass diagramLumiera Exception hierarchy howtoProcoperation@return descriptor how to build a render pipeline corresponding to this media hubartifactspecial ProcNode used to build data distributing connections -HUEclass instance HUEclass instance +HUEclass instance diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index d6bd98c73..e57c8da0a 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -25,8 +25,8 @@ ImplFacadeclass In Memory Databaseclass diagram inFixtureactivity action pin -inputclass instance inputclass instance +inputclass instance inputclass instance instanceoperation InstanceHandleclass diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index bf5ec70f2..fd63eeb6b 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -34,8 +34,8 @@ MediaKindclass merge activity nodemerge activity node Metaclasskey abstraction: metadata and organisational asset -metaartifactkey abstraction: metadata and organisational asset metaartifactabstract base class of all MObjects representing meta data or processing instructions +metaartifactkey abstraction: metadata and organisational asset Metaclass Meta-Asset Relationsclass diagram mobjectartifactKey Abstraction: A Media Object in the Session diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index 8b2bac9de..c557cd0be 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -21,9 +21,9 @@ offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation? OperationBaseclass orgattributeorigin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core Lumiera codebase is "lumi". +ouputclass instance ouputclass instance ouputclass instance -ouputclass instance outPortrelationthe Port this MObject wants to be conected to Overviewcomponent diagramThis drawing shows the top level compoents and relations Overview Render Enginedeployment diagram diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 4593a9e60..1d12e75df 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -51,6 +51,7 @@ pluginadapterartifactAdapter for integrating various Effect processors in the render pipeline pnodenode pointattributeidentifying the point where the nodes should be attached +PointOfAdviceclass pos_relation Posix Threads Abstractionclass viewC++ wrapers for pthreads predecessorsrelation diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 69336106c..1e6853045 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -27,8 +27,8 @@ relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one RelativeLocationclass releaseBufferoperation -RelTypeclassthe possible kinds of RelativePlacements relTypeattributethe kind of relation denoted by this Placement +RelTypeclassthe possible kinds of RelativePlacements removeoperationremove the given asset <i>together with all its dependants</i> from the internal DB Render Entitiesclass diagram Render Mechanicsclass diagram diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 1397452cc..122f728a5 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -71,15 +71,15 @@ Statenode Stateclass staterelation -state actionstate actiontry to fetch existing definition state actionstate action +state actionstate action +state actionstate action +state actionstate action +state actionstate action state actionstate action state actionstate action +state actionstate actiontry to fetch existing definition state actionstate action -state actionstate action -state actionstate action -state actionstate action -state actionstate action StateAdapterclass StateAdapter compositionclass diagram StateProxyclass diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 64ca32fb8..a164fedd0 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -44,13 +44,13 @@ trafoartifacttransforming processing Node treatoperation treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated. -treatoperation -treatoperation treatoperation treatoperation -treatoperation +treatoperation +treatoperation treatoperation treatoperation +treatoperation TypedIDclass TypedID::Indexclass TypedID::Linkclass diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 91b807e2d..5ac8ddfee 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -22,20 +22,20 @@ vframeartifacta buffer and render process holding a Video frame vid1class instance vid_Aclass instance -vid_aclass instance -vid_Aclass instance -vid_Aclass instance vid_aclass instance +vid_Aclass instance +vid_aclass instance +vid_Aclass instance videoclass instance +videoclass instance videoclass instance videoclass instance -videoclass instance -video1class instance -video1class instance -video1class instance -video1class instance video1class instance video1class instance +video1class instance +video1class instance +video1class instance +video1class instance VirtualMediaclass Visitableclass visitorpackagesub-namespace for visitor library implementation diff --git a/doc/devel/uml/objectdiagrams.html b/doc/devel/uml/objectdiagrams.html index cb1f81a95..bb844651a 100644 --- a/doc/devel/uml/objectdiagrams.html +++ b/doc/devel/uml/objectdiagrams.html @@ -16,6 +16,7 @@ + diff --git a/wiki/renderengine.html b/wiki/renderengine.html index a2f1894e7..b904f4e4d 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -514,12 +514,16 @@ ColorPalette SiteUrl -
+
{{red{WIP 11/09}}}...//about to explicate a pattern which I'm aiming at within the design almost since the beginning//
 Expecting Advice and giving Advice &mdash; this collaboration ranges somewhere between messaging and dynamic properties, but cross-cutting the primary, often hierarchical relation of dependencies. Always happening at a certain //point of advice,// which creates a distinct, static nature different of being just a convention, on the other hand, Advice is deliberately kept optional and received synchronously, albeit possibly within an continuation.
 
 !Specification
 ''Definition'': Advice is an optional, mediated collaboration between entities taking on the roles of advisor and advised, thereby passing a custom piece of advice data, managed by the advice support system. The possibility of advice is created by the advised entity by exposing a point of advice, while the advising entity can discover this advice possibility.
+[>img[Entities for Advice collaboration|uml/fig141445.png]]
+
+
+
 !!Collaborators
 * the ''advised'' entity 
 * the ''advisor''
@@ -537,21 +541,42 @@ In a more elaborate scheme, the advised entiy could provide a signal to be invok
 &rarr; AdviceImplementation
 
-
+
+
[<img[Advice solution|uml/fig141573.png]]
+
+
+
+
+
+The advice system is //templated on the advice type// &mdash; so basically there is an independent lookup table for each different kind of advice.The advice system is a sytem wide singleton service, but it is never addressed directly by the participants. Rather, instances of ~AdviceProvision and ~AdviceRequest act as point of access. But these aren't completely symmetric; while the ~AdviceRequest is owned by the advised entity, the ~AdviceProvision is a value object, a uniform holder used to introduce new advice into the system. ~AdviceProvision is copied into an internal buffer and managed by the advice system, as is the actual advice item, which is copied alongside.
+
+In order to find matches and provide advice solutions, the advice system maintains an index data structure called ''~BindingIndex''. The actual binding predicates are represented by value objects stored within this index table. The matching process is triggered whenever a new possibility for an advice solution enters the system, which could be a new request, a new provision or a change in the specified bindings. A successful match causes a pointer to be set within the ~AdviceRequest, pointing to the ~AdviceProvision acting as solution. Thus, when a solution exists, the advised entity can access the advice value object by dereferencing this pointer. A new advice solution just results in setting a different pointer, which is atomic and doesn't need to be protected by locking. But note, when omitting locking there is no memory barrier; thus the advised might not see a changed advice solution, until the corresponding thread(s) refresh their cpu cache. This might or might not be acceptable, depending on the context, and thus is configurable as policy. Similarily, the handling of default advice is configurable. Usually, advice is a default constructible value object. In this case, when there isn't any advice solution (yet), a pseudo solution holding the default constructed advice value is used to satisfy any advice access by the client (advised entity). The same can be used when the actual ~AdviceProvision gets //retracted.// As an alternative, when this default solution approach doesn't work, we can provide a policy either to throw or to wait blocking &mdash; but this alternative policy is similarily implemented with an //null object// (a placeholder ~AdviceProvision). Anyway, this implementation techinque causes the advice system to collect some advice provisions, bindings and advice objects over time. It should use a pooling custom allocator in the final version. As the number of advisors is expected to be rather small, the storage occupied by these elements, which is effectively blocked until application exit, isn't considered a problem.
+
+!organising the advice solution
+This is the tricky part of the whole advice system implementation. A naive implementation will quickly degenerate in performance, as costs are of order ~AdviceProvisions * ~AdviceRequests * (average number of binding terms). But contrary to the standard solutions for rules based systems (either forward or backward chaining), in this case here always complete binding sets are to be matched, which allows to reduce the effort.
+
+!!!solution idea
+The binding patterns are organised by //predicate symbol and the lists are normalised.// A simple normalisation could be lexicographic ordering of the predicates. Then the resulting representation can be //hashed.// When all predicates are constant, match can be found by hashtable lookup, otherwise, in case some predicates contain variable arguments ({{red{planned extension}}}), the lookup is followed by an unification.
+
+Yet still we need to store a successful match, together with backlinks, in order to handle changing and retracting of advice.
+
+
+
From analysing a number of intended AdviceSituations, some requirements for an Advice collaboration and implementation can be extracted.
 
 * the piece of advice is //not shared// between advisor and the advised entities; rather, it is copied into storage managed by the advice system
 * the piece of advice can only be exposed {{{const}}}, as any created advice point solution might be shared
 * the actual mode of advice needs to be configurable by policy &mdash; signals (callback functors) might be used on both sides transparently
 * the client side (the advised entity) specifies initially, if a default answer is acceptable. If not, retrieving advice might block or fail
-* on both sides, the collaboration is initiated specifying an advice binding, which is an conjunction of predicates, optionally dynamic
+* on both sides, the collaboration is initiated specifying an advice binding, which is an conjunction of predicates, --optionally dynamic--^^no!^^
 * there is a tension between matching performance and flexibility. The top level should be entirely static (advice type)
 * the analysed usage situations provide no common denominator on the preferences regarding the match implementation.
 * some cases require just a match out of a small number of tokens, while generally we might get even a double dispatch
-* even possible and partial solutions should be cached, similar to the rete algorithm. Dispatching a solution should work lock-free
-* advice can be overwritten by new advice, but is rarely retracted (indeed, we can rule out this possibility, by relying on a proxy)
+* later, possible and partial solutions could be cached, similar to the rete algorithm. Dispatching a solution should work lock-free
+* advice can be replaced by new advice, which causes all matching advice solutions to behave as being overwritten.
 * when locking is left out, we can't give any guarantee as to when a given advice gets visible to the advised entity
-* throughput doesn't seem to be an issue, but picking up exsiting advice should be fast.
+* throughput doesn't seem to be an issue, but picking up exsiting advice should be as fast as possible
+* we expect a small number of advisors collaborating with and a larger number of advised entities.
 
 !!questions
 ;when does the advice colaboration actually happen?
@@ -587,15 +612,28 @@ In a more elaborate scheme, the advised entiy could provide a signal to be invok
 ;is the search for an adivce point solution exhaustive?
 :from the server side, when a new advice provision / binding is put up, //any// possible advice channel will be searched
 :contrary to this, at the client side, the first match found wins and will establish an advice channel.
+
+!decisions
+After considering the implementation possibilities, some not completely determined requirements can be narrowed down.
+* we //do// support the //retracting of advice.//
+* there is always an implicit //default advice solution.//
+* advice //is not an messaging system// &mdash; no advice queue
+* signals (continuations) are acceptable as a extension to be provided later
+* we don't support any kind of dynamic re-evaluation of the binding match (this means not supporting the placement use case)
+* the binding pattern is //interpreted strictly as a conjuction of logic predicates// &mdash; no partial match, but arguments are allowed
+* we prepare for a later extension to //full unification of arguments,// and provide a way of accessing the created bindings as //advice parameters.//
+
+Combining all these requirements and properties provides the foundation for the &rarr; AdviceImplementation
+
 
-
+
[[Advice]] is a pattern extracted from several otherwise unrelated constellations
 
 !Proxy media in the engine
 Without rebuilding the engine network, we need the ability to reconfigure some parts to adapt to low resolution place-holder media temporarily. The collaboration required to make this happen seems to ''cross-cut'' the normal processing logic. Indeed, the nature of the adjustments is highly context dependent &mdash; not every processing node needs to be adjusted. There is a dangerous interference with the ongoing render processes, prompting for the possibility to pick up this information synchronously.
 * the addressing and delivery of the advice is based on a mix of static (type) and dynamic information
-* it is concievable that the actual matching may even include a token present in the direct invocation context (the ongoing render task)
+* it is concievable that the actual matching may even include a token present in the direct invocation context (but this possibility was ruled out by later decision)
 * the attempt to recieve and pick up advice needs to be failsafe
 * locking should be avoided by design
 
@@ -613,6 +651,8 @@ The placement concept plays a fundamental role within Lumiera's HighLevelModel.
 * deriving an advice point solution includes some kind of negotioation or active re-evaluation
 * the possible adivsors have to be queried according to their placement scope relations
 * this queriying might even trigger a resolution process within the advising placement.
+__Note__: after detailed analysis, this use case was deemed beyond the scope of the [[Advice]] core concept and idea.
+//As a use case, it was dropped.// But we retain some of the properties discovered by considering this scenario, especially the n:m relation, the symmetry in terms of opening the collaboration, and the possibility to have a specially implemented predicate in the binding pattern.
 
 &rarr; AdviceRequirements
 
Advice solving
EDL Example1A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
EDL Example2More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip
Engine Example1Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1