Invocation: Analysis pertaining to storage for param data

During Render Node invocation, automation parameter data must be maintained.
For the simple standard path, this just implies to store the ''absolute nominal Time''
directly in the invoking stack frame and let some parameter adaptors do the translation.
However, it is conceivable to have much more elaborate translation functions,
and thus we must be prepared to handle an arbitrary number of parameter slots,
where each slot has arbitrary storage requirements.

The conclusion is to start with an intrusive linked list of overflow buckets.
This commit is contained in:
Fischlurch 2024-12-07 18:15:44 +01:00
parent 544075d143
commit 9393942366
8 changed files with 329 additions and 136 deletions

View file

@ -343,14 +343,14 @@ namespace time {
/** */
HmsTC::HmsTC (QuTime const& quantisedTime)
: TCode(quantisedTime)
// : tpoint_(quantisedTime) /////////////////////////////TODO bullshit
// : tpoint_(quantisedTime) //////////////////////////////////////////////////////////////////////TICKET #736 implement HMS format
{ }
/** */
Secs::Secs (QuTime const& quantisedTime)
: TCode(quantisedTime)
// : sec_(TimeVar(quantisedTime) / GAVL_TIME_SCALE) /////////////TODO bullshit
// : sec_(TimeVar(quantisedTime) / GAVL_TIME_SCALE) //////////////////////////////////////////////////////TICKET #736 implement Seconds format
{ }

View file

@ -177,7 +177,7 @@ namespace time {
/**
* @warning missing implementation
*/
*/ ////////////////////////////////////////////////////////////////////////////////////////////////TICKET #736 implement HMS format
class HmsTC
: public TCode
{
@ -202,7 +202,7 @@ namespace time {
/**
* @warning partially missing implementation
*/
*/ ////////////////////////////////////////////////////////////////////////////////////////////////TICKET #736 implement Seconds format
class Secs
: public TCode
{

View file

@ -25,9 +25,10 @@
** _Switch Board.
**
** The TurnoutSystem is related to the actual incidence and is created dynamically,
** while connecting to all the existing \ref Turnout elements sitting in the render node ports.
** It acts as mediator and data exchange hub, while gearing up the actual invocation to cause
** calculation of media data in the render nodes connected below
** while connecting to all the pre-existing \ref Turnout elements, sitting in the ports
** of those render nodes touched by the actual render invocation. It acts as mediator and
** data exchange hub, while gearing up the actual invocation to cause calculation of media data
** in the render nodes connected below, passing coordination parameters alongside.
** @todo WIP-WIP-WIP 12/2024 now combining the draft from 2009 / 2012 with recent engine development
*/
@ -38,10 +39,13 @@
#include "steam/engine/state-closure.hpp" /////////////////////OOO will take on a different role (if any)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
#include "lib/time/timevalue.hpp"
namespace steam {
namespace engine {
using lib::time::Time;
@ -52,9 +56,12 @@ namespace engine {
* and initiates the recursive pull()-call into the render node network as attached for this call.
*/
class TurnoutSystem
/////////////////////////////////////////OOO von wo erbt das?? laut ursprünglichem Konzept von StateClosure ... bin mir aber nicht mehr sicher
{
/////////////////////////////////////////////////////////OOO Storage: ich brauche Overflow-Buckets. KISS ==> erst mal intrusive linked List
public:
TurnoutSystem (Time absoluteNominalTime)
{ }
// this is a copyable front-end object
};

View file

@ -61,7 +61,7 @@ namespace test{
* value, the quantiser yields a time value aligned
* at the next lower frame bound. Besides that,
* time values are confined to be within
* the interval (Time::MIN, Time::Max)
* the interval (Time::MIN, Time::MAX)
*
* @see TimeQuantisation_test
*/

View file

@ -13,6 +13,7 @@
/** @file time-quantisation-test.cpp
** unit test \ref TimeQuantisation_test
** @todo 2024/24 only two of the four timecode formats are implemented /////////////////////////////////////TICKET #736 : HMS and Seconds not implemented
*/
@ -39,7 +40,7 @@ namespace test{
/****************************************************//**
* @test verify handling of quantised time values.
* - the simple usage, just referring to an
* - the simple usage, just referring to an
* predefined grid by name
* - explicitly defining an quantiser
* - converting these quantised values into
@ -54,18 +55,22 @@ namespace test{
if (isnil(arg))
{// use random time value for all tests
seedRand();
return 1 + rani(10000);
return 1 + rani(100'000);
}
else
return lexical_cast<int> (arg[1]);
else // use argument as 1/10 seconds
return 10 * lexical_cast<int> (arg[1]);
}
/**
* @param arg number as 1/10sec
* @note using random time 0..100s if no argument given
*/
virtual void
run (Arg arg)
run (Arg arg)
{
Time ref (0,random_or_get(arg),0,0);
Time ref (random_or_get(arg),0,0,0);
CHECK (TimeValue(0) < ref);
checkSimpleUsage (ref);
@ -85,17 +90,20 @@ namespace test{
FrameNr count(qVal); // materialise this quantised time into..
int n = count; // frame count, accessible as plain number
CHECK (Time(FSecs(n-1, 25)) <= org); // verify quantisation: the original time
CHECK (org < Time(FSecs(n+1, 25))); // is properly bracketed by (n-1, n+1)
CHECK (Time(FSecs(n, 25)) <= org); // verify quantisation: the original time
CHECK (org < Time(FSecs(n+1, 25))); // is properly bracketed by [n, n+1[
}
void
check_theFullStory (TimeValue org)
{
cout << "TEST rawTime:"<<Time{org} << endl;
PQuant fixQ (new FixedFrameQuantiser(25));
QuTime qVal (org, fixQ);
CHECK ( qVal == org); // Note: stores the raw value, but tagged with a grid
CHECK ( fixQ.get() == PQuant(qVal).get());
CHECK ( qVal.supports<format::Frames>());
CHECK ( qVal.supports<format::Smpte>());
@ -103,21 +111,21 @@ namespace test{
showTimeCode (smpteTCode);
HmsTC pureTimeCode = qVal.formatAs<format::Hms>();
showTimeCode (pureTimeCode);
showTimeCode (pureTimeCode); ////////////////////////////////////////////////////////////////TICKET #736 : HMS not implemented yet
FrameNr frameTCode = qVal.formatAs<format::Frames>();
showTimeCode (frameTCode);
Secs seconds = qVal.formatAs<format::Seconds>();
showTimeCode (seconds);
showTimeCode (seconds); ////////////////////////////////////////////////////////////////TICKET #736 : Seconds not implemented yet
}
template<class TC>
void
showTimeCode (TC timecodeValue)
{
cout << timecodeValue.describe()
<< " time = "<< timecodeValue.getTime()
cout << timecodeValue.describe()
<< " time = "<< timecodeValue.getTime()
<< " code = "<< timecodeValue
<< endl;
}
@ -150,7 +158,7 @@ namespace test{
QuTime funny (org, "special_funny_grid"); // now OK, grid is known
int cnt = funny.formatAs<format::Frames>();
// and now performing quantisation is OK
// and now performing quantisation is OK
SmpteTC smpte (funny); // also converting into SMPTE (which implies frame quantisation)
CHECK (0 == smpte.frames); // we have 1fps, thus the frame part is always zero!
CHECK (cnt % 60 == smpte.secs); // and the seconds part will be in sync with the frame count

View file

@ -17,13 +17,10 @@
#include "lib/test/run.hpp"
//#include "lib/test/test-helper.hpp"
#include "steam/engine/proc-node.hpp"
//#include "steam/engine/nodewiring-obsolete.hpp" /////////////////////////////////////////////////////TICKET #1367 : sort out dependencies for reworked Node Invocation
#include "steam/engine/turnout.hpp"
#include "steam/engine/turnout-system.hpp"
#include "steam/engine/channel-descriptor.hpp"
#include "steam/mobject/session/effect.hpp"
#include "lib/allocation-cluster.hpp"
//#include "lib/format-cout.hpp"
//#include "lib/util.hpp"
@ -35,32 +32,10 @@ namespace steam {
namespace engine{
namespace test {
using lib::AllocationCluster;
using mobject::session::PEffect;
namespace { // Test fixture
/**
* Mock StateClosure/Invocation object.
* Used as a replacement for the real RenderInvocation,
* so the test can verify that calculations are actually
* happening in correct order.
*/
class TestContext
// : public StateProxy
{
//////////////TODO: facility to verify the right access operations get called
};
inline PEffect
createTestEffectMObject()
{
UNIMPLEMENTED ("how to create a dummy Effect for tests");
}
}
@ -69,32 +44,22 @@ namespace test {
*/
class NodeBase_test : public Test
{
virtual void run(Arg)
virtual void
run (Arg)
{
seedRand();
verify_TurnoutSystem();
UNIMPLEMENTED ("build a simple render node and then activate it");
AllocationCluster alloc;
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
NodeFactory nodeFab(alloc);
ProcNode * testSource; ///////////TODO: how to fabricate a test Source-Node????
WiringSituation setup(testSource);
PEffect pEffect = createTestEffectMObject();
ProcNode* pNode = nodeFab (pEffect, setup);
CHECK (pNode);
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
TestContext simulatedInvocation;
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
BuffHandle result = pNode->pull(simulatedInvocation, 0);
CHECK (result);
// CHECK we got calculated data in the result buffer
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
}
}
/** @test the TurnoutSystem as transient coordinator for node invocation
*/
void
verify_TurnoutSystem()
{
Time nomTime{rani(10'000),0}; // drive test with a random »nominal Time« <10s with ms granularity
TurnoutSystem invoker{nomTime}; // a time spec is mandatory, all further parameters are optional
}
};

View file

@ -30,15 +30,26 @@ namespace test {
/***************************************************************//**
* @test the source reading render node.
/************************************************************************//**
* @test demonstrate how to feed data into, through and out of render nodes.
*/
class NodeFeed_test : public Test
{
virtual void run(Arg)
virtual void
run (Arg)
{
feedParam();
UNIMPLEMENTED ("render node pulling source data from vault");
}
}
/** @test feed parameter data to nodes */
void
feedParam()
{
TODO ("implement the logic for the TurnoutSystem --> node-base-test.cpp");
TODO ("implement a simple Builder for ParamAgent-Node");
TODO ("then use both together to demonstrate a param data feed here");
}
};

View file

@ -20765,9 +20765,7 @@
<linktarget COLOR="#2e1d90" DESTINATION="ID_274573678" ENDARROW="Default" ENDINCLINATION="-1890;235;" ID="Arrow_ID_1905963364" SOURCE="ID_1007243980" STARTARROW="None" STARTINCLINATION="537;68;"/>
<node CREATED="1575580479206" ID="ID_871786644" MODIFIED="1576282358093" TEXT="Frage: kann das zu einem Konstruktionsschema ausgebaut werden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Dies w&#228;re dann das R&#252;ckgrat in der View-Behandlung in der Timeline
@ -21144,9 +21142,7 @@
<node CREATED="1575220074975" ID="ID_29395675" MODIFIED="1575220102936" TEXT="jeder TrackBody hat einen (R&#xfc;ck)Zeiger auf den Canvas oder DisplayManager"/>
<node CREATED="1575220114002" ID="ID_840603253" MODIFIED="1575220144732">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
und diese Info ist komplett <b>redundant</b>
@ -21847,9 +21843,7 @@
<node CREATED="1575133497534" ID="ID_1220643531" MODIFIED="1575133517054" TEXT="weil wir in diesem Fall weder Hierarchie noch Umordnen ben&#xf6;tigen"/>
<node CREATED="1611434912899" ID="ID_625634456" MODIFIED="1611435039862" TEXT="nebenbei bemerkt: auch der Canvas-Fall ist letztlich verschachtelt/hierarchisch">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...insofern n&#228;mlich auf dem Canvas einzelne Clip-Widgets liegen, und diese k&#246;nnen wiederum einen eingebetteten Canvas haben, den man ggfs auch in Form eines nested ViewHook handhaben m&#246;chte. Die Details dazu sind aber im Moment noch nebul&#246;s, und ich sollte diesem Fall (noch) nicht zu viel Beachtung schenken.
@ -22566,9 +22560,7 @@
<node CREATED="1480300733506" ID="ID_186466790" MODIFIED="1557498707225" TEXT="werden per Diff manipuliert"/>
<node CREATED="1480300740537" ID="ID_1322437138" MODIFIED="1576282358084" TEXT="enthalten die Modell-Binding-Daten">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
d.h. eine LUID
@ -23373,9 +23365,7 @@
</node>
<node CREATED="1666485621639" ID="ID_1015581509" MODIFIED="1666485779479" TEXT="nur die Impl von DisplayMetric">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das ist die minimale Einsparung...
@ -25406,9 +25396,7 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674603379625" ID="ID_22375243" MODIFIED="1674603406628">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Clip-Drag reagiert manchmal nicht <i>&#187;live&#171;</i>
@ -29195,9 +29183,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1555807666086" ID="ID_1670738915" MODIFIED="1557498707229" TEXT="offensichtlich wird die falsche Trait-Variante gew&#xe4;hlt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
n&#228;mlich diejenige f&#252;r Typen ohne Support auf dem API.
@ -33922,9 +33908,7 @@
<icon BUILTIN="help"/>
<node CREATED="1568383045628" ID="ID_557151257" MODIFIED="1576282358040" TEXT="daf&#xfc;r brauchen wir ohnehin eine access-Funtkion">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
weil die Canvas-Controls tief eingewickelt in der Struktur liegen
@ -37889,9 +37873,7 @@
</node>
<node CREATED="1616710016525" ID="ID_454513850" MODIFIED="1616710159000" TEXT="dies sollte der einzige Ort der Konfiguration sein">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...d.h. es w&#228;re zu vermeiden, da&#223; ein irgendwo vorgegebenes Konfigurations-Setup an anderer Stelle im Code noch passend verankert oder korrespondierend eingerichtet werden mu&#223;.<br /><br />Konkret: die drag-F&#228;higkeit eines Clip wird konfiguriert im Clip-Presenter. Fertig.
@ -39695,9 +39677,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Sollte als N&#228;chstes vers&#228;ubert und verallgemeinert werden!
@ -40590,9 +40570,7 @@
</node>
<node CREATED="1667487765399" ID="ID_1902275269" MODIFIED="1667487918703" TEXT="denn das Problem tritt nur stellenweise auf und ist halb-theoretisch">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Tats&#228;chlich kann ein &#181;Tick-Grid auch Sound-Samples korrekt addressieren &#8212; man darf dann nur nicht diese Zeit-Werte f&#252;r weitere Berechnungen verwenden (denn sonst sammeln sich Rundungsfehler an). Es k&#246;nnte also eine Implementierung eben <i>wissen, </i>da&#223; hier Sound-Samples dargestellt/verarbeitet werden, und intern mit der exakten Skala arbeiten. Im Grunde ist das ein L&#246;sungsvorgriff auf die 3.L&#246;sungsvariante (Problem ignorieren und per Metadaten tunneln)... siehe Diskussion in #1258
@ -41002,9 +40980,7 @@
<node CREATED="1667688228377" ID="ID_1083352192" MODIFIED="1667688446311" TEXT="den Fall MAX_ZOOM + Rundungsfehler explizit abtesten"/>
<node CREATED="1667688234896" ID="ID_1025502092" MODIFIED="1667688423306" TEXT="und dann das visibleWin um 1 &#xb5;Tick vergr&#xf6;&#xdf;ern">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...vergr&#246;&#223;ern, weil damit die Metrik kleiner wird und unter der Schwelle MAX_ZOOM gehalten wird
@ -41551,9 +41527,7 @@
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1671225675177" ID="ID_833984717" MODIFIED="1671235584467" TEXT="Parameter mu&#xdf; int64_t sein">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
&#10233; dann pa&#223;t der Wertebereich im Extremfall grade so rein (1px-Window mit 1&#181;-Tick, und das per halb-Steps von Time::MIN &#10236; Time::MAX bringen:&#160;&#160;lb &lt;= 62 )
@ -41864,9 +41838,7 @@
</node>
<node CREATED="1669508366255" ID="ID_1644190283" MODIFIED="1669682752758" TEXT="Idee: auf gleichen Nenner normalisieren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn dadurch w&#252;rde man die kreuzweise Multiplikation verhindern
@ -87411,7 +87383,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1733423975397" ID="ID_109989936" MODIFIED="1733425368345" TEXT="Rolle des Turnout-Systems nun bestimmt als Mediator f&#xfc;r Parameter-Daten">
<linktarget COLOR="#53677a" DESTINATION="ID_109989936" ENDARROW="Default" ENDINCLINATION="-40;1688;" ID="Arrow_ID_424518297" SOURCE="ID_61528151" STARTARROW="None" STARTINCLINATION="1654;57;"/>
<linktarget COLOR="#2942cb" DESTINATION="ID_109989936" ENDARROW="Default" ENDINCLINATION="-2247;88;" ID="Arrow_ID_1057402913" SOURCE="ID_62561618" STARTARROW="None" STARTINCLINATION="-1004;58;"/>
<linktarget COLOR="#2942cb" DESTINATION="ID_109989936" ENDARROW="Default" ENDINCLINATION="-2247;88;" ID="Arrow_ID_1057402913" SOURCE="ID_62561618" STARTARROW="None" STARTINCLINATION="-1006;54;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718932452300" ID="ID_1311517716" MODIFIED="1718932606380" TEXT="Turnout-System als 2.Layer denken">
@ -87420,7 +87392,31 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1718932475681" ID="ID_119429683" MODIFIED="1733425570381" TEXT="das effektive Turnout-System entsteht im Zuge der Port-Aktivierung"/>
<node CREATED="1718932576531" ID="ID_1954245677" MODIFIED="1733425708209" TEXT="die konkrete Buffer-Verwaltung (Feed-Manifold) entsteht dynamisch im Weaving-Pattern"/>
<node CREATED="1719275534689" ID="ID_396627461" MODIFIED="1719275554471" TEXT="es m&#xfc;ssen aber auch Informationen transportiert werden">
<node CREATED="1719275555943" ID="ID_190750298" MODIFIED="1719275563169" TEXT="die Instanz-Koordinaten"/>
<node CREATED="1719275555943" ID="ID_190750298" MODIFIED="1719275563169" TEXT="die Instanz-Koordinaten">
<node CREATED="1733585915398" ID="ID_1291306906" MODIFIED="1733586199514">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
per Default mit <i>absolute nominal Time</i>&#160;zu erzeugen
</p>
</body>
</html></richcontent>
<linktarget COLOR="#5c6a7a" DESTINATION="ID_1291306906" ENDARROW="Default" ENDINCLINATION="-289;17;" ID="Arrow_ID_1279473915" SOURCE="ID_1296941844" STARTARROW="None" STARTINCLINATION="177;10;"/>
</node>
<node CREATED="1733586203584" ID="ID_523248183" MODIFIED="1733587335616" TEXT="aber die Interpretation per Frame-Grid mu&#xdf; in den Nodes liegen....">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Das mu&#223; so sein aus Gr&#252;nden der logischen Konsistenz: Der Invocation-Mechanismus der Render-Engine ist generisch, und das bedeutet, er kann nichts implizit &#252;ber das zu rendernde Modell wissen; zwar wird f&#252;r den Build-Vorgang in <i>absolute Placements</i>&#160; reduziert, aber diese beziehen sich immer noch auf eine bestimmte Timeline &#8212; ebenso wie der Render-Vorgang, der <i>auf einer Timeline</i>&#160; abl&#228;uft. Das bedeutet, <i>f&#252;r den Rendervorgang</i>&#160;ist das Koordinatensystem <i>implizit</i>, und er gibt nur eine <b>absolute nominal Time</b>&#160;relativ dazu an; jedoch wird dieser implizite Kontext in der Job-Planung &#252;bersetzt in den Zugriff auf eine bestimmte <i>konkrete Exit-Node.</i>&#160;Insofern kann dann ein Job komplett generisch auf der Render-Engine laufen, denn er tarnsportiert sowohl die <i>absolute nominal Time,</i>&#160;alsauch die <i>konkrete ExitNode</i>. Das Turnout-System selber ist ebenfalls generisch, und das hei&#223;t, es wird nur sinnvoll in Verbindung mit einer ExitNode zur Auff&#252;hrung gebracht
</p>
</body>
</html>
</richcontent>
<linktarget COLOR="#385061" DESTINATION="ID_523248183" ENDARROW="Default" ENDINCLINATION="87;339;" ID="Arrow_ID_901283158" SOURCE="ID_970386501" STARTARROW="None" STARTINCLINATION="473;26;"/>
</node>
</node>
<node CREATED="1733425451521" ID="ID_1986914320" MODIFIED="1733425474762" TEXT="in Zukunft ggfs dynamische Steuer-Parameter"/>
<node CREATED="1719275563757" ID="ID_304657123" MODIFIED="1719275640726" TEXT="Cache-Keys auf jeder Ebene">
<linktarget COLOR="#ac5878" DESTINATION="ID_304657123" ENDARROW="Default" ENDINCLINATION="2911;290;" ID="Arrow_ID_1615410848" SOURCE="ID_577334967" STARTARROW="None" STARTINCLINATION="-968;-56;"/>
@ -87439,6 +87435,139 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720314319630" ID="ID_1339736273" MODIFIED="1720314331059" TEXT="Allokator f&#xfc;r die Render-Nodes (pro Segment)"/>
</node>
<node CREATED="1733588457681" ID="ID_1303174875" MODIFIED="1733588474099" TEXT="Storage f&#xfc;r den konkreten Aufruf">
<node CREATED="1733588482254" ID="ID_1143369961" MODIFIED="1733588491229" TEXT="direkt im Stack-Frame: das TurnoutSystem">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733588262543" ID="ID_855223653" MODIFIED="1733588650882" TEXT="Entwurf Storage-Layout f&#xfc;r Turnout-System">
<linktarget COLOR="#482eb7" DESTINATION="ID_855223653" ENDARROW="Default" ENDINCLINATION="-595;39;" ID="Arrow_ID_342943763" SOURCE="ID_1698079544" STARTARROW="None" STARTINCLINATION="-57;-58;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1733589576707" ID="ID_1093208209" MODIFIED="1733589591873" TEXT="Design-Problem: variable Storage-Gr&#xf6;&#xdf;e">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1733589597272" ID="ID_344782477" MODIFIED="1733589604339" TEXT="wir brauchen N Parameter"/>
<node CREATED="1733589605252" ID="ID_299974935" MODIFIED="1733589621669" TEXT="der Parameter-Typ ist aber nicht festgelegt">
<node CREATED="1733589623389" ID="ID_960093117" MODIFIED="1733589636781" TEXT="nat&#xfc;rlich nicht ... sonst w&#xe4;r&apos;s ja zu einfach">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1733589638114" ID="ID_1793200199" MODIFIED="1733589651692" TEXT="wir wissen nur da&#xdf; sie Value-Semantik haben"/>
<node COLOR="#435e98" CREATED="1733589660595" ID="ID_779078460" MODIFIED="1733590871982" TEXT="(bekommt man das hin?)">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1733590834266" ID="ID_261301224" MODIFIED="1733590876945" TEXT="ja.... es gibt sogar zwei L&#xf6;sungen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1733590843153" ID="ID_336537504" MODIFIED="1733590879260" TEXT="und wir arbeiten erst mal mit LinkedElements">
<linktarget COLOR="#7d8894" DESTINATION="ID_336537504" ENDARROW="Default" ENDINCLINATION="358;0;" ID="Arrow_ID_1380579888" SOURCE="ID_1093233061" STARTARROW="None" STARTINCLINATION="205;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1733589804652" ID="ID_1607530497" MODIFIED="1733589902643" TEXT="gef&#xfc;hlsm&#xe4;&#xdf;ig: Indirektionen sind akzeptabel">
<node CREATED="1733589904493" ID="ID_650201032" MODIFIED="1733589962464" TEXT="steht alles im Verh&#xe4;ltnis zur Medien-Daten-Berechnung">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
und diese ist massiv (Millionen Zyklen, allerdings in Speicher, der dann im Cache liegt)
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733589981868" ID="ID_1811006818" MODIFIED="1733590042726" TEXT="empirisch zu kl&#xe4;ren....">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1733590045043" ID="ID_1698017289" MODIFIED="1733590180818" TEXT="sind Zeiten f&#xfc;r Render-Koordination &#xfc;berhaupt me&#xdf;bar?">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Vorsicht Falle: nicht in hei&#223;er Loop messen, sondern in einem realistischen Szenario unter Speicher-Druck
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1733590048395" ID="ID_1955605389" MODIFIED="1733590087915" TEXT="bleiben die Bl&#xf6;cke mit den Parameter-Daten im Cache?">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...oder werden sie von der Medien-Berechnung verdr&#228;ngt?
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1733590887977" ID="ID_38832058" MODIFIED="1733590893994" TEXT="TODO: Ticket!">
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1733590231771" ID="ID_386758509" MODIFIED="1733590825316" TEXT="bleibt die Frage: (intrusive)Linked-List oder Index-Tabelle?">
<node CREATED="1733590281731" ID="ID_456801433" MODIFIED="1733590300245" TEXT="die Index-Tabelle w&#xfc;rde besser auf viele Parameter skalieren"/>
<node CREATED="1733590311691" ID="ID_1174152672" MODIFIED="1733590427120" TEXT="bedeutet aber: drei Indirektionen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
WeavingPattern &#10230; TurnoutSystem (Stack) &#10230; Index-Tabelle (Buffer) &#10230; Storage (same Buffer)
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1733590438159" ID="ID_461587154" MODIFIED="1733590642096" TEXT="Trade-off betrifft 2.Parameter-Slot vs. mehr als 3 Slots">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
der erste Slot ist stets g&#252;nstig, denn er liegt grunds&#228;tzlich im TurnoutSystem selber (die nominal Time)
</li>
<li>
wenn es nur einen weiteren zus&#228;tzlichen Parameter gibt, w&#228;re die Index-Tabelle ein nutzloser Overhead, sie mu&#223; ja auch aufgebaut werden
</li>
<li>
bei mehr als drei Slots sind wir im Vorteil (wobei der lokale Hebel erst mal gering sein d&#252;rfte, denn sp&#228;testens nach dem ersten Zugriff liegt der Buffer im Cache)
</li>
</ul>
</body>
</html>
</richcontent>
</node>
<node CREATED="1733590644277" ID="ID_1323648633" MODIFIED="1733590819848" TEXT="Eindeutig KISS &#x27f9; zun&#xe4;chst sticht die Komplexit&#xe4;t der Implementierung">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
....die intrusive linked List habe ich n&#228;mlich fertig und getestet, zudem ist der Code daf&#252;r sehr robust zu verwenden, wenn man ohnehin einen privatenTyp f&#252;r ein Bucket definiert. Dem gegen&#252;ber m&#252;&#223;te man die Index-Tabellen-L&#246;sung erst mal konzipieren und austesten, und zudem w&#228;re die wohl eine Spezial-Implementierung und daher auch jedes Mal wieder zu verstehen. Damit ist die Entscheidung klar, man mu&#223; wirklich erst mal zeigen da&#223; ein Problem besteht...
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1733590668584" ID="ID_1093233061" MODIFIED="1733590868744" TEXT="daher implementieren wir zun&#xe4;chst die intrusive linked LIst">
<arrowlink COLOR="#7d8894" DESTINATION="ID_336537504" ENDARROW="Default" ENDINCLINATION="358;0;" ID="Arrow_ID_1380579888" STARTARROW="None" STARTINCLINATION="205;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733590902929" ID="ID_1045639317" MODIFIED="1733590910632" TEXT="Implementierung overflow-Buckets">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1733588494688" ID="ID_1675794578" MODIFIED="1733588502918" TEXT="alles Weitere: in Buffer legen">
<node CREATED="1733588511019" ID="ID_1891013981" MODIFIED="1733588526527" TEXT="die jeweilge Node kennt die ben&#xf6;tige Buffer-Gr&#xf6;&#xdf;e"/>
<node CREATED="1733588527383" ID="ID_409052438" MODIFIED="1733588542281" TEXT="der Aufruf erzeugt in zwei Schritten">
<node CREATED="1733588543605" ID="ID_1923588864" MODIFIED="1733589094127" TEXT="zun&#xe4;chst rekursiv die Vorl&#xe4;ufer-Ausgabe-Buffer der Lead-Nodes"/>
<node CREATED="1733588557946" ID="ID_920856046" MODIFIED="1733588576011" TEXT="sodann alle Ausgabe-Buffer f&#xfc;r diese Node"/>
<node CREATED="1733588995272" ID="ID_1966303521" MODIFIED="1733589216751" TEXT="nach dem Aufruf der Processing-Function....">
<node CREATED="1733589218047" ID="ID_1940965454" MODIFIED="1733589220493" TEXT="erfolgt ein &#xbb;commit&#xab;"/>
<node CREATED="1733589039227" ID="ID_201121654" MODIFIED="1733589052296" TEXT="danach werden alle Vorl&#xe4;ufer-Buffer freigegeben"/>
<node CREATED="1733588578197" ID="ID_533193649" MODIFIED="1733589123191" TEXT="auf den Ausgabe-Buffern erfolgt dann ein BuffHandle::emit()"/>
<node CREATED="1733589124373" ID="ID_10848440" MODIFIED="1733589152167" TEXT="die Neben-Buffer werden nach dem Commit sofort freigegeben"/>
<node CREATED="1733589154570" ID="ID_335712589" MODIFIED="1733589177516" TEXT="der nominelle Ausgabe-Buffer dagegen ist ja &#xbb;Vorl&#xe4;ufer&#xab; f&#xfc;r die nachfolgende Node"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823682795" ID="ID_868323088" MODIFIED="1713823821819" TEXT="Kl&#xe4;ren der Probleme mit den Prototypen">
<icon BUILTIN="flag-yellow"/>
@ -87568,12 +87697,55 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823489509" ID="ID_738439301" MODIFIED="1719282837986" TEXT="idealerweise nebenbei neu mit aufbauen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733577482085" ID="ID_932666491" MODIFIED="1733577589840" TEXT="Turnout-System: Funktionsweise testen">
<linktarget COLOR="#406cd3" DESTINATION="ID_932666491" ENDARROW="Default" ENDINCLINATION="-128;9;" ID="Arrow_ID_16658347" SOURCE="ID_1513598373" STARTARROW="None" STARTINCLINATION="-353;-26;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1733580248780" ID="ID_1698079544" MODIFIED="1733588646642" TEXT="mit nominal Time erzeugen">
<arrowlink COLOR="#482eb7" DESTINATION="ID_855223653" ENDARROW="Default" ENDINCLINATION="-595;39;" ID="Arrow_ID_342943763" STARTARROW="None" STARTINCLINATION="-57;-58;"/>
<node CREATED="1733580331065" ID="ID_1781432590" MODIFIED="1733584790502" TEXT="Testen mit Time-Grid!">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
ja... lang ist's her &#9786;
</p>
<p>
<u>Zur Erinnerung</u>:
</p>
<ul>
<li>
an Zeit-Werten <i>fummelt man nicht herum</i>
</li>
<li>
sie sind opaque &#8212; will man &#8222;reinschauen&#8220;, dann braucht man einen Timecode
</li>
<li>
und dann eine QuantisedTime, welche ein Grid impliziert.
</li>
<li>
es gibt <i>keinen nat&#252;rlichen Default</i>&#160;und aus diesem Grund gibt es auch keine &#187;convenience method&#171; f&#252;r die armen Tester
</li>
<li>
So ist es, Ende der Diskussion! (die Interne Zeit ist eine Abstraktion, den &#8222;wirklichen Wert&#8220; gibt es nicht)
</li>
</ul>
</body>
</html></richcontent>
</node>
<node CREATED="1733585833256" ID="ID_423093899" MODIFIED="1733585852018" TEXT="der Test erzeugt eine zuf&#xe4;llige nominal Time"/>
<node CREATED="1733585871755" ID="ID_1296941844" MODIFIED="1733586199513" TEXT="der Quantiser mu&#xdf; aber in den Render-Nodes liegen">
<arrowlink COLOR="#5c6a7a" DESTINATION="ID_1291306906" ENDARROW="Default" ENDINCLINATION="-289;17;" ID="Arrow_ID_1279473915" STARTARROW="None" STARTINCLINATION="177;10;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733525831136" ID="ID_1553180375" MODIFIED="1733527489987" TEXT="NodeBuilder_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1733525872194" ID="ID_1854723929" MODIFIED="1733525888068" TEXT="Erzeugen einzelner Nodes durch den Node-Builder"/>
<node CREATED="1733531449614" ID="ID_481525559" MODIFIED="1733532161164" TEXT="speziell auch Anlegen eines ParamAgent">
<linktarget COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1169;95;" ID="Arrow_ID_570772162" SOURCE="ID_1587342377" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733531449614" ID="ID_481525559" MODIFIED="1733577896049" TEXT="speziell auch Anlegen eines ParamAgent">
<linktarget COLOR="#406cd3" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="-129;9;" ID="Arrow_ID_667421116" SOURCE="ID_664954545" STARTARROW="None" STARTINCLINATION="-358;-24;"/>
<linktarget COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1490;75;" ID="Arrow_ID_570772162" SOURCE="ID_1587342377" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1713821606607" ID="ID_492497884" MODIFIED="1733527499249" TEXT="NodeDevel_test">
@ -87708,6 +87880,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1733527649620" ID="ID_53133526" MODIFIED="1733527744507" TEXT="Node Data-Feed">
<node CREATED="1733531449614" ID="ID_1987832971" MODIFIED="1733532184689" TEXT="Param &#x27f6; Node">
<linktarget COLOR="#fe433f" DESTINATION="ID_1987832971" ENDARROW="Default" ENDINCLINATION="1285;255;" ID="Arrow_ID_284789378" SOURCE="ID_811325982" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733577283965" ID="ID_1817704532" MODIFIED="1733577288381" TEXT="feedParam">
<icon BUILTIN="pencil"/>
<node CREATED="1733577319137" ID="ID_17992703" MODIFIED="1733577338773" TEXT="direkt-verkn&#xfc;pftes Test-Setup ohne Infrastruktur"/>
<node CREATED="1733577444940" ID="ID_1513598373" MODIFIED="1733577551783" TEXT="Turnout-System f&#xfc;r den Parameter-Austausch">
<arrowlink COLOR="#406cd3" DESTINATION="ID_932666491" ENDARROW="Default" ENDINCLINATION="-128;9;" ID="Arrow_ID_16658347" STARTARROW="None" STARTINCLINATION="-353;-26;"/>
</node>
<node CREATED="1733577653926" ID="ID_664954545" MODIFIED="1733577896049" TEXT="ParamAgent zum Einspeisen der Parameter-Daten">
<arrowlink COLOR="#406cd3" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="-129;9;" ID="Arrow_ID_667421116" STARTARROW="None" STARTINCLINATION="-358;-24;"/>
</node>
</node>
</node>
<node CREATED="1733527812520" ID="ID_1146074169" MODIFIED="1733527820418" TEXT="Source &#x27f6; Node"/>
<node CREATED="1733527821742" ID="ID_1156747071" MODIFIED="1733527871646" TEXT="Node &#x27f7; Cache"/>
@ -93879,7 +94061,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node COLOR="#435e98" CREATED="1730828061609" ID="ID_234342122" MODIFIED="1732716867457" TEXT="manipulateFrame">
<node COLOR="#338800" CREATED="1730835481751" ID="ID_936086670" MODIFIED="1730835554245" TEXT="brauche nun direkten Zugang zu den payload-Daten">
<arrowlink COLOR="#77313e" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="381;-48;" ID="Arrow_ID_1047269362" STARTARROW="None" STARTINCLINATION="-36;80;"/>
<arrowlink COLOR="#316377" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="381;-48;" ID="Arrow_ID_1047269362" STARTARROW="None" STARTINCLINATION="308;16;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1730835500032" ID="ID_1746752352" MODIFIED="1730835545446" TEXT="bei der Gelegenheit auch gleich das Alignment reparieren....">
@ -93920,8 +94102,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Hab mich in den letzten Tagen wieder in einem Knoten festgefahren &#8212; der nun zum Gl&#252;ck wenigstens <i>in meinem Kopf schon gel&#246;st ist....</i>&#160; Trotzdem ist die Situation sehr schwierig, da ich mehrere&#160;&#187;intuitiv gekl&#228;rte&#171; Sachverhalte gleichzeitig aufbauen mu&#223;, und nicht recht wei&#223;, wo beginnen....
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<arrowlink COLOR="#d20e48" DESTINATION="ID_1513206906" ENDARROW="Default" ENDINCLINATION="-46;111;" ID="Arrow_ID_1518420686" STARTARROW="None" STARTINCLINATION="84;4;"/>
<arrowlink COLOR="#d20e48" DESTINATION="ID_1860532476" ENDARROW="Default" ENDINCLINATION="169;-7;" ID="Arrow_ID_1150766303" STARTARROW="None" STARTINCLINATION="117;6;"/>
<arrowlink COLOR="#d20e48" DESTINATION="ID_190733802" ENDARROW="Default" ENDINCLINATION="799;-49;" ID="Arrow_ID_1240305866" STARTARROW="None" STARTINCLINATION="788;37;"/>
@ -93942,7 +94123,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#6f2328" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="366;-47;" ID="Arrow_ID_1067356199" STARTARROW="None" STARTINCLINATION="5;52;"/>
<arrowlink COLOR="#23376f" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="366;-47;" ID="Arrow_ID_1067356199" STARTARROW="None" STARTINCLINATION="-62;167;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
@ -93955,12 +94136,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728786069167" ID="ID_1584473368" MODIFIED="1728786088974" TEXT="Aufruf-Pfad durchimplementieren">
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531749477" ID="ID_1587342377" MODIFIED="1733532993728" TEXT="ParamAgent im NodeBuilder_test anlegen">
<arrowlink COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1169;95;" ID="Arrow_ID_570772162" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531749477" ID="ID_1587342377" MODIFIED="1733577719352" TEXT="ParamAgent im NodeBuilder_test anlegen">
<arrowlink COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1490;75;" ID="Arrow_ID_570772162" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<linktarget COLOR="#f9407e" DESTINATION="ID_1587342377" ENDARROW="Default" ENDINCLINATION="330;471;" ID="Arrow_ID_316456085" SOURCE="ID_635342516" STARTARROW="None" STARTINCLINATION="667;53;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1733532910801" ID="ID_1860532476" MODIFIED="1733533358706" TEXT="brauche unmittelbar als N&#xe4;chstes ein minimales Turnout-System">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1860532476" ENDARROW="Default" ENDINCLINATION="169;-7;" ID="Arrow_ID_1150766303" SOURCE="ID_1712932544" STARTARROW="None" STARTINCLINATION="117;6;"/>
<linktarget COLOR="#d20e48" DESTINATION="ID_1860532476" ENDARROW="Default" ENDINCLINATION="169;-7;" ID="Arrow_ID_1150766303" SOURCE="ID_1712932544" STARTARROW="None" STARTINCLINATION="117;6;"/>
<icon BUILTIN="yes"/>
</node>
</node>
@ -94630,8 +94811,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1733421744158" ID="ID_62561618" MODIFIED="1733425303954" TEXT="&#x27f9; die L&#xf6;sung l&#xe4;uft auf ein Kompromi&#xdf;-Modell hinaus">
<arrowlink COLOR="#2942cb" DESTINATION="ID_109989936" ENDARROW="Default" ENDINCLINATION="-2247;88;" ID="Arrow_ID_1057402913" STARTARROW="None" STARTINCLINATION="-1004;58;"/>
<node CREATED="1733421744158" ID="ID_62561618" MODIFIED="1733586042735" TEXT="&#x27f9; die L&#xf6;sung l&#xe4;uft auf ein Kompromi&#xdf;-Modell hinaus">
<arrowlink COLOR="#2942cb" DESTINATION="ID_109989936" ENDARROW="Default" ENDINCLINATION="-2247;88;" ID="Arrow_ID_1057402913" STARTARROW="None" STARTINCLINATION="-1006;54;"/>
<node CREATED="1733422080453" ID="ID_196176893" MODIFIED="1733423899519" TEXT="gem&#xe4;&#xdf; Modell-1 erfolgt Berechnung und Storage im Node-System">
<richcontent TYPE="NOTE"><html>
<head/>
@ -94681,7 +94862,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531683777" ID="ID_190733802" MODIFIED="1733533461389" TEXT="einfachen Node &#x27f7; Parameter - Feed durchspielen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_190733802" ENDARROW="Default" ENDINCLINATION="799;-49;" ID="Arrow_ID_1240305866" SOURCE="ID_1712932544" STARTARROW="None" STARTINCLINATION="788;37;"/>
<linktarget COLOR="#d20e48" DESTINATION="ID_190733802" ENDARROW="Default" ENDINCLINATION="799;-49;" ID="Arrow_ID_1240305866" SOURCE="ID_1712932544" STARTARROW="None" STARTINCLINATION="788;37;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531749477" ID="ID_811325982" MODIFIED="1733532161164" TEXT="im NodeFeed_test anlegen">
<arrowlink COLOR="#fe433f" DESTINATION="ID_1987832971" ENDARROW="Default" ENDINCLINATION="1285;255;" ID="Arrow_ID_284789378" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
@ -94714,8 +94895,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1728786385349" ID="ID_442258905" MODIFIED="1732112467377" TEXT="Umbau TestFrame">
<arrowlink COLOR="#4b3571" DESTINATION="ID_257931093" ENDARROW="Default" ENDINCLINATION="-2466;135;" ID="Arrow_ID_121875527" STARTARROW="None" STARTINCLINATION="-2154;-229;"/>
<linktarget COLOR="#192c91" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="-554;-1251;" ID="Arrow_ID_1343565956" SOURCE="ID_127090859" STARTARROW="None" STARTINCLINATION="-195;12;"/>
<linktarget COLOR="#77313e" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="381;-48;" ID="Arrow_ID_1047269362" SOURCE="ID_936086670" STARTARROW="None" STARTINCLINATION="-36;80;"/>
<linktarget COLOR="#6f2328" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="366;-47;" ID="Arrow_ID_1067356199" SOURCE="ID_683548249" STARTARROW="None" STARTINCLINATION="5;52;"/>
<linktarget COLOR="#316377" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="381;-48;" ID="Arrow_ID_1047269362" SOURCE="ID_936086670" STARTARROW="None" STARTINCLINATION="308;16;"/>
<linktarget COLOR="#23376f" DESTINATION="ID_442258905" ENDARROW="Default" ENDINCLINATION="366;-47;" ID="Arrow_ID_1067356199" SOURCE="ID_683548249" STARTARROW="None" STARTINCLINATION="-62;167;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1730900637026" ID="ID_1500320757" MODIFIED="1731890421828" TEXT="brauche Einflu&#xdf; auf den PRNG">
<richcontent TYPE="NOTE"><html>
@ -95888,8 +96069,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Framework und Services aus dem produktiven Setup verwenden, m&#246;glichst auch den realen Memory-Buffer-Provider. Damit stellt sich die Frage, wie hier &#252;berhaupt verifiziert werden kann; vermutlich werde ich Instrumentierungs-Hilfsmittel einf&#252;hren und daf&#252;r auch Zugangspunkte in die produktiven Services einf&#252;hren m&#252;ssen &#8212; &#228;hnlich wie ich es erfolgreich f&#252;r den Block-Flow-Allokator im Scheduler getan habe
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1720454088551" ID="ID_1795755773" MODIFIED="1720454187970" TEXT="Einsatz des Custom-Allocators">
<linktarget COLOR="#ca3e80" DESTINATION="ID_1795755773" ENDARROW="Default" ENDINCLINATION="333;-16;" ID="Arrow_ID_778082175" SOURCE="ID_1238813567" STARTARROW="None" STARTINCLINATION="-512;47;"/>
@ -96658,6 +96838,28 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1715623458395" ID="ID_1779704166" MODIFIED="1733425159453" TEXT="Turnout-System nutzen">
<arrowlink COLOR="#970836" DESTINATION="ID_1687015571" ENDARROW="Default" ENDINCLINATION="-844;61;" ID="Arrow_ID_1744365913" STARTARROW="None" STARTINCLINATION="-926;-111;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1733587286153" ID="ID_970386501" MODIFIED="1733587343634" TEXT="Parameter werden durchgereicht &#x2014; nicht interpretiert">
<arrowlink COLOR="#385061" DESTINATION="ID_523248183" ENDARROW="Default" ENDINCLINATION="87;339;" ID="Arrow_ID_901283158" STARTARROW="None" STARTINCLINATION="473;26;"/>
</node>
<node CREATED="1733587393119" ID="ID_678012145" MODIFIED="1733587560817">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
per Default ist stets eine <i>absolute nominal Time</i>&#160;gegeben
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
das folgt aus der Aufruf-Struktur der Render-Engine; diese Zeitangabe ist aber f&#252;r sich sinnlos und wird erst interpretiert auf Basis einer konkreten ExitNode, welche sich dann implizit auf eine Timeline und durch den verwendeten Port auch auf ein konkretes FrameGrid bezieht; die &#220;bersetzung der <i>nominal Time</i>&#160;in eine konkrete Frame-Nummer passiert innerhalb des Node-Graphen
</p>
</body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711552048459" ID="ID_1144247505" MODIFIED="1711552069425" TEXT="brauche Adapter f&#xfc;r den eigentlichen Aufruf">
<icon BUILTIN="flag-yellow"/>