Invocation: able to build and invoke a simple Render Node (see: #1367)

**This is a Milestone for the Render Engine integration effort**

After various rounds of prototyping and refactoring,
the Render Node builder and invocation code is now able to
 * bind a simple function
 * handle arbitrary input / output and parameter types
 * invoke a Render Node configured with this function
This commit is contained in:
Fischlurch 2024-12-24 06:23:55 +01:00
parent 9484ea0b71
commit 9f348e6944
4 changed files with 110 additions and 62 deletions

View file

@ -239,25 +239,25 @@ namespace engine {
return wiring_.ports[portIdx];
}
/** Engine Core operation: render and pull output from this node.
* On return, currentProcess will hold onto output buffer(s)
* containing the calculated result frames. In case this node
* calculates a multichannel output, only one channel can be
* retrieved by such a \c pull() call, but you can expect data
* of the other channels to be processed and fed to cache.
* @param currentProcess the current processing state for
* managing buffers and accessing current parameter values
* @param requestedOutputNr the output channel requested
* (in case this node delivers more than one output channel)
* @return handle to the buffer containing the calculated result.
/*************************************************************//**
* Engine Core operation: render and pull output from this node.
* Activate the indicated Port, which may recursively pull from
* »Lead Nodes« (predecessors) and invoke the operation embodied
* by this node. The stack frame of this call acts as anchor
* to hold the TurnoutSystem for parameter access and coordination.
* @param portIdx the port (flavour) to activate
* @param output a BuffHandle configured suitably to hold results
* @param nomTime _absolute nominal Time_ to key this invocation
* @param procKey additional process key for context parameters
* @return handle to the buffer containing the calculated result.
*/
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
BuffHandle
pull (StateClosure_OBSOLETE& currentProcess, uint requestedOutputNr=0) const
pull (uint portIdx, BuffHandle output, Time nomTime, ProcessKey procKey)
{
return this->wiringConfig_.callDown (currentProcess, requestedOutputNr);
TurnoutSystem turnoutSystem{nomTime, procKey};
return getPort(portIdx).weave (turnoutSystem, output);
}
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
/// „backdoor“ to watch internals from tests

View file

@ -41,11 +41,14 @@
#include "lib/time/timevalue.hpp"
#include "lib/hetero-data.hpp"
#include <optional>
namespace steam {
namespace engine {
using lib::time::Time;
using ProcessKey = uint64_t;
template<typename VAL>
class ParamStorageFrame
@ -65,7 +68,7 @@ namespace engine {
{
/////////////////////////////////////////////////////////OOO Storage: ich brauche Overflow-Buckets. KISS ==> erst mal intrusive linked List
public:
TurnoutSystem (Time absoluteNominalTime)
TurnoutSystem (Time absoluteNominalTime, ProcessKey procKey =0)
{ }
// this is a copyable front-end object
};

View file

@ -19,6 +19,7 @@
#include "lib/test/run.hpp"
#include "steam/engine/node-builder.hpp"
#include "steam/engine/diagnostic-buffer-provider.hpp"
#include "lib/test/diagnostic-output.hpp"
//#include "lib/util.hpp"
@ -48,8 +49,8 @@ namespace test {
}
/** @test TODO build a simple output-only Render Node
* @todo WIP 12/24 🔁 define implement
/** @test build a simple output-only Render Node
* @todo 12/24 define implement
*/
void
build_simpleNode()
@ -66,10 +67,18 @@ namespace test {
CHECK (watch(node).ports().size() == 1);
// Prepare setup to invoke such a Render Node...
using Buffer = long;
BufferProvider& provider = DiagnosticBufferProvider::build();
BuffHandle buff = provider.lockBufferFor<Buffer> (-55);
BuffHandle buff = provider.lockBufferFor<long> (-55);
Time nomTime = Time::ZERO;
ProcessKey key{0};
uint port{0};
CHECK (-55 == buff.accessAs<long>());
// Trigger Node invocation...
buff = node.pull (port, buff, nomTime, key);
CHECK (LIFE_AND_UNIVERSE_4EVER == buff.accessAs<uint>());
}

View file

@ -88751,14 +88751,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733525831136" ID="ID_1553180375" MODIFIED="1733527489987" TEXT="NodeBuilder_test">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733525831136" ID="ID_1553180375" MODIFIED="1735016487972" TEXT="NodeBuilder_test">
<icon BUILTIN="pencil"/>
<node CREATED="1733525872194" ID="ID_1854723929" MODIFIED="1734881716076" TEXT="Erzeugen einzelner Nodes durch den Node-Builder">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734881717690" ID="ID_1429578563" MODIFIED="1734881733411" TEXT="Basis-Fall: einfachst m&#xf6;gliche Source-Node">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734881734984" ID="ID_328505582" MODIFIED="1734881786333" TEXT="Dez.2024 : sollte mit dem inzwischen gebauten Code realisierbar sein">
<node COLOR="#338800" CREATED="1734881717690" ID="ID_1429578563" MODIFIED="1735016485596" TEXT="Basis-Fall: einfachst m&#xf6;gliche Source-Node">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1734881734984" ID="ID_328505582" MODIFIED="1735016481308" TEXT="Dez.2024 : sollte mit dem inzwischen gebauten Code realisierbar sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1734881799312" ID="ID_657288363" MODIFIED="1734881836527" TEXT="nur eine Funktion die 42 zur&#xfc;ckliefert">
@ -88767,9 +88767,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1734881815740" ID="ID_162927427" MODIFIED="1734881825221" TEXT="baue eine Node">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734893681253" ID="ID_22640844" MODIFIED="1734894128783" TEXT="der letzte Schrit bis zur Invocation...">
<arrowlink COLOR="#462fca" DESTINATION="ID_1390040531" ENDARROW="Default" ENDINCLINATION="-1708;-131;" ID="Arrow_ID_25129790" STARTARROW="None" STARTINCLINATION="339;26;"/>
<icon BUILTIN="flag-pink"/>
<node COLOR="#338800" CREATED="1734893681253" ID="ID_22640844" MODIFIED="1735016474202" TEXT="der letzte Schrit bis zur Invocation...">
<arrowlink COLOR="#462fca" DESTINATION="ID_1390040531" ENDARROW="Default" ENDINCLINATION="-1708;-131;" ID="Arrow_ID_25129790" STARTARROW="None" STARTINCLINATION="353;26;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734877552951" ID="ID_1383452569" MODIFIED="1734879501751" TEXT="Parameter: fest und funktionsgeneriert">
@ -95206,8 +95206,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_1476280091" MODIFIED="1735004940722" TEXT="Schwierigkeit: BufferProvider im OutputSlot Protokoll">
<linktarget COLOR="#fe512a" DESTINATION="ID_1476280091" ENDARROW="Default" ENDINCLINATION="-997;55;" ID="Arrow_ID_4728843" SOURCE="ID_1160117239" STARTARROW="None" STARTINCLINATION="-865;41;"/>
<linktarget COLOR="#e0092c" DESTINATION="ID_1476280091" ENDARROW="Default" ENDINCLINATION="60;-97;" ID="Arrow_ID_602010804" SOURCE="ID_1319945622" STARTARROW="None" STARTINCLINATION="-541;28;"/>
<linktarget COLOR="#fe512a" DESTINATION="ID_1476280091" ENDARROW="Default" ENDINCLINATION="-997;55;" ID="Arrow_ID_4728843" SOURCE="ID_1160117239" STARTARROW="None" STARTINCLINATION="-865;41;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1735004955001" ID="ID_393137872" MODIFIED="1735005013973" TEXT="DataSink soll ein BuffHandle liefern">
<icon BUILTIN="broken-line"/>
@ -97883,17 +97883,18 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#fde0ca" DESTINATION="ID_1747509213" ENDARROW="Default" ENDINCLINATION="-965;-57;" ID="Arrow_ID_1729225053" SOURCE="ID_1832590841" STARTARROW="None" STARTINCLINATION="-1804;99;"/>
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1735005083801" ID="ID_1501030777" MODIFIED="1735005667664" TEXT="Weaving Pattern kann nicht mit Output-Buffern umgehen">
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1735005083801" ID="ID_1501030777" MODIFIED="1735007155303" TEXT="Weaving Pattern kann nicht mit Output-Buffern umgehen">
<arrowlink COLOR="#cc0a6d" DESTINATION="ID_1580601333" ENDARROW="Default" ENDINCLINATION="-290;14;" ID="Arrow_ID_972000949" STARTARROW="None" STARTINCLINATION="579;-32;"/>
<linktarget COLOR="#e3073a" DESTINATION="ID_1501030777" ENDARROW="Default" ENDINCLINATION="49;113;" ID="Arrow_ID_969824036" SOURCE="ID_1911052508" STARTARROW="None" STARTINCLINATION="-147;10;"/>
<linktarget COLOR="#fecea8" DESTINATION="ID_1501030777" ENDARROW="Default" ENDINCLINATION="192;835;" ID="Arrow_ID_978869219" SOURCE="ID_1527577597" STARTARROW="None" STARTINCLINATION="-278;34;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734893714728" ID="ID_1390040531" MODIFIED="1734894128783" TEXT="Invocation auf Node-Level">
<linktarget COLOR="#462fca" DESTINATION="ID_1390040531" ENDARROW="Default" ENDINCLINATION="-1708;-131;" ID="Arrow_ID_25129790" SOURCE="ID_22640844" STARTARROW="None" STARTINCLINATION="339;26;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734894131592" ID="ID_728588148" MODIFIED="1734894183196">
<node COLOR="#338800" CREATED="1734893714728" ID="ID_1390040531" MODIFIED="1735016474202" TEXT="Invocation auf Node-Level">
<linktarget COLOR="#462fca" DESTINATION="ID_1390040531" ENDARROW="Default" ENDINCLINATION="-1708;-131;" ID="Arrow_ID_25129790" SOURCE="ID_22640844" STARTARROW="None" STARTINCLINATION="353;26;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#514398" CREATED="1734894131592" ID="ID_728588148" MODIFIED="1735015772507">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -97903,17 +97904,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734894162356" ID="ID_954098109" MODIFIED="1734894176570" TEXT="L&#xfc;cke zwischen Port-API und Node-API schlie&#xdf;en">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1734894196608" ID="ID_1878550252" MODIFIED="1734894248208" TEXT="Port::weave (TurnoutSystem&amp;, OptionalBuff)">
<node COLOR="#338800" CREATED="1734894162356" ID="ID_954098109" MODIFIED="1735016456306" TEXT="L&#xfc;cke zwischen Port-API und Node-API schlie&#xdf;en">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1734894196608" ID="ID_1878550252" MODIFIED="1735015843597" TEXT="Port::weave (TurnoutSystem&amp;, OptionalBuff)">
<icon BUILTIN="info"/>
<node CREATED="1734894255065" ID="ID_13856620" MODIFIED="1734894266745" TEXT="using OptionalBuff = std::optional&lt;BuffHandle&gt;;"/>
<node CREATED="1734894268221" ID="ID_678148622" MODIFIED="1734894274280" TEXT="scheee...">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734894277732" ID="ID_1911052508" MODIFIED="1735005215586">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734894277732" ID="ID_1911052508" MODIFIED="1735015801112">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -97923,10 +97923,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<arrowlink COLOR="#e3073a" DESTINATION="ID_1501030777" ENDARROW="Default" ENDINCLINATION="49;113;" ID="Arrow_ID_969824036" STARTARROW="None" STARTINCLINATION="-147;10;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#338800" CREATED="1735015812576" HGAP="29" ID="ID_258555732" MODIFIED="1735015840806" TEXT="kann man aber f&#xfc;r einen ersten Test direkt bereitstellen" VSHIFT="19">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734894315658" ID="ID_213775772" MODIFIED="1734894332521" TEXT="sinnvolles API f&#xfc;r Node-Aufruf definieren">
</node>
<node COLOR="#435e98" CREATED="1734894315658" ID="ID_213775772" MODIFIED="1735015312819" TEXT="sinnvolles API f&#xfc;r Node-Aufruf definieren">
<icon BUILTIN="yes"/>
<node CREATED="1734894367096" ID="ID_1018556500" MODIFIED="1734894382762" TEXT="use-Case...?">
<node CREATED="1734894384363" ID="ID_337355001" MODIFIED="1734894406042" TEXT="in der RenderInvocation">
@ -97935,12 +97938,17 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1734894476529" ID="ID_57148001" MODIFIED="1734894492144" TEXT="ist &#xbb;Testen&#xab; ein use-Case?">
<node COLOR="#435e98" CREATED="1734894476529" ID="ID_57148001" MODIFIED="1735016082058" TEXT="ist &#xbb;Testen&#xab; ein use-Case?">
<icon BUILTIN="help"/>
<node CREATED="1734894495021" ID="ID_497362096" MODIFIED="1734894516120" TEXT="wenn ja &#x27f9; dann wird das ein Durchreiche-API"/>
<node CREATED="1734894519908" ID="ID_265577496" MODIFIED="1734894532206" TEXT="wenn nein &#x27f9; dann wird das ein point-and-shot-API"/>
<node CREATED="1734894558814" ID="ID_1672280670" MODIFIED="1734894571771" TEXT="in letzterem Fall w&#xfc;rde die ProcNode das Turnout-System erzeugen"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734894584179" ID="ID_1551226114" MODIFIED="1734894628682">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1734894558814" ID="ID_1672280670" MODIFIED="1735016077666" TEXT="in letzterem Fall w&#xfc;rde die ProcNode das Turnout-System erzeugen">
<arrowlink COLOR="#2276d8" DESTINATION="ID_1551226114" ENDARROW="Default" ENDINCLINATION="11;-80;" ID="Arrow_ID_946750148" STARTARROW="None" STARTINCLINATION="-38;89;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1734894584179" ID="ID_1551226114" MODIFIED="1735016066961">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -97949,9 +97957,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<linktarget COLOR="#2276d8" DESTINATION="ID_1551226114" ENDARROW="Default" ENDINCLINATION="11;-80;" ID="Arrow_ID_946750148" SOURCE="ID_1672280670" STARTARROW="None" STARTINCLINATION="-38;89;"/>
<icon BUILTIN="yes"/>
<node CREATED="1734895218741" ID="ID_1995663657" MODIFIED="1734895230611" TEXT="ich glaube da&#xdf; &quot;Ja&quot;"/>
<node CREATED="1734895343709" ID="ID_352184052" MODIFIED="1734895434823" TEXT="Parameter: nur Zeit + Key sind unabdingbar">
<node COLOR="#435e98" CREATED="1734895343709" ID="ID_352184052" MODIFIED="1735015866049" TEXT="Parameter: nur Zeit + Key sind unabdingbar">
<node CREATED="1734895453486" ID="ID_1190790048" MODIFIED="1734895471874">
<richcontent TYPE="NODE"><html>
<head/>
@ -97964,7 +97973,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1734895496032" ID="ID_401532717" MODIFIED="1734895505187" TEXT="vielleicht kann man den Key optional machen..."/>
</node>
<node CREATED="1734895543066" ID="ID_471384214" MODIFIED="1734895561164" TEXT="Bez&#xfc;glich Adressierung der Exit-Node...">
<node COLOR="#435e98" CREATED="1734895543066" ID="ID_471384214" MODIFIED="1735016004020" TEXT="Bez&#xfc;glich Adressierung der Exit-Node...">
<node CREATED="1734895566335" ID="ID_1202439993" MODIFIED="1734895589747">
<richcontent TYPE="NODE"><html>
<head/>
@ -97975,8 +97984,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node CREATED="1734895608473" ID="ID_1542458027" MODIFIED="1734895628786" TEXT="daraus k&#xf6;nnte man zwei Schl&#xfc;sse ziehen...">
<node CREATED="1734895631938" ID="ID_1556981026" MODIFIED="1734895648411" TEXT="Ansatz-1 : Port wird per Pointer adressierbar">
<node COLOR="#435e98" CREATED="1734895608473" FOLDED="true" ID="ID_1542458027" MODIFIED="1735015975013" TEXT="daraus k&#xf6;nnte man zwei Schl&#xfc;sse ziehen...">
<arrowlink COLOR="#2b44d6" DESTINATION="ID_1498059151" ENDARROW="Default" ENDINCLINATION="-121;5;" ID="Arrow_ID_735436700" STARTARROW="None" STARTINCLINATION="42;54;"/>
<node COLOR="#5b280f" CREATED="1734895631938" ID="ID_1556981026" MODIFIED="1735015949436" TEXT="Ansatz-1 : Port wird per Pointer adressierbar">
<icon BUILTIN="button_cancel"/>
<node CREATED="1734895676448" ID="ID_338727472" MODIFIED="1734895687017" TEXT="damit w&#xe4;re dann die ProcNode tot">
<icon BUILTIN="smily_bad"/>
</node>
@ -97987,7 +97998,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1734895649895" ID="ID_1498059151" MODIFIED="1734895669349" TEXT="Ansatz-2 : ExitNode bietet einen per Pointer aufrufbaren Closure-Funktor">
<node CREATED="1734895649895" ID="ID_1498059151" MODIFIED="1735015954413" TEXT="Ansatz-2 : ExitNode bietet einen per Pointer aufrufbaren Closure-Funktor">
<linktarget COLOR="#2b44d6" DESTINATION="ID_1498059151" ENDARROW="Default" ENDINCLINATION="-121;5;" ID="Arrow_ID_735436700" SOURCE="ID_1542458027" STARTARROW="None" STARTINCLINATION="42;54;"/>
<icon BUILTIN="forward"/>
<node CREATED="1734895815949" ID="ID_887465024" MODIFIED="1734895828440" TEXT="das w&#xe4;re dann eine Art &#xbb;Transport-Encoding&#xab;"/>
<node CREATED="1734895829903" ID="ID_811772218" MODIFIED="1734895846922" TEXT="dieser Funktor w&#xfc;rde an das Node-API delegieren"/>
<node CREATED="1734895848158" ID="ID_370726446" MODIFIED="1734896963284" TEXT="klingt machbar aber grenzwertig...">
@ -98088,8 +98101,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1735015984094" ID="ID_1828186644" MODIFIED="1735016000797" TEXT="gehe von einer Pointer-Darstellung aus">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1734900499900" ID="ID_1840118668" MODIFIED="1734900509479" TEXT="bleibt noch die Frage nach dem Output-Buffer">
</node>
<node COLOR="#435e98" CREATED="1734900499900" ID="ID_1840118668" MODIFIED="1735016028777" TEXT="bleibt noch die Frage nach dem Output-Buffer">
<node CREATED="1734900513819" ID="ID_1165605489" MODIFIED="1734900581843" TEXT="sinnvoll ist nur ein bereits ge&#xf6;ffnetes BuffHandle">
<richcontent TYPE="NOTE"><html>
<head/>
@ -98100,7 +98116,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1734901125292" ID="ID_741480483" MODIFIED="1734920752327" TEXT="es braucht dann doch einen Proxy-Buffer-Provider">
<node COLOR="#5b280f" CREATED="1734901125292" FOLDED="true" ID="ID_741480483" MODIFIED="1735016018317" TEXT="es braucht dann doch einen Proxy-Buffer-Provider">
<arrowlink COLOR="#7b6890" DESTINATION="ID_204443476" ENDARROW="Default" ENDINCLINATION="-19;547;" ID="Arrow_ID_594871915" STARTARROW="None" STARTINCLINATION="138;-806;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1734901329053" ID="ID_890459099" MODIFIED="1734901340477" TEXT="war mal als generischer OutputBufferProvider geplant"/>
@ -98116,7 +98132,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1734907068755" ID="ID_1965236379" MODIFIED="1734907086890" TEXT="nein &#x2014; es ist gar nichts mehr zu tun hier...">
<node COLOR="#338800" CREATED="1734907068755" FOLDED="true" ID="ID_1965236379" MODIFIED="1735016024043" TEXT="nein &#x2014; es ist gar nichts mehr zu tun hier...">
<icon BUILTIN="button_ok"/>
<node CREATED="1734907088846" ID="ID_115625291" MODIFIED="1734907104411" TEXT="es gibt zwar bisher noch keine OutputSlot-Implementierung"/>
<node CREATED="1734907109228" ID="ID_1459547775" MODIFIED="1734907155922" TEXT="nur den DiagnosticOutputSlot &#x27f9; DiagnosticBufferProvider"/>
<node CREATED="1734907740525" ID="ID_98128013" MODIFIED="1734907768212" TEXT="sp&#xe4;ter mal.... wird ein realer Output so einen Proxy-Provider implementieren m&#xfc;ssen">
@ -98124,13 +98141,18 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#30ff00" DESTINATION="ID_579607510" ENDARROW="Default" ENDINCLINATION="35;-65;" ID="Arrow_ID_660020375" STARTARROW="None" STARTINCLINATION="-185;13;"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#d4da90" COLOR="#675d34" CREATED="1735007074581" HGAP="41" ID="ID_1527577597" MODIFIED="1735007204888" TEXT="verdammter Riecher" VSHIFT="7">
<arrowlink COLOR="#fecea8" DESTINATION="ID_1501030777" ENDARROW="Default" ENDINCLINATION="192;835;" ID="Arrow_ID_978869219" STARTARROW="None" STARTINCLINATION="-278;34;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734903075113" ID="ID_579607510" MODIFIED="1734917024943" TEXT="Design-&#xdc;bung: ProxyProvider implementieren">
</node>
<node COLOR="#5b280f" CREATED="1734903075113" FOLDED="true" ID="ID_579607510" MODIFIED="1735007024903" TEXT="Design-&#xdc;bung: ProxyProvider implementieren">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Ich hatte schon angefangen, &#252;ber der m&#246;gilchen Implementierung zu &#187;br&#252;ten&#171; und mich wieder in BufferProvider + OutputSlot eingelesen. Erst nach etwa einer Stunde ist mir aufgefallen, da&#223; OutputSlot ja eine DataSink erzeugt, und da&#223; diese bereits eine <font face="Monospaced" color="#572d2d">lockBufferFor(FrameID)</font>-Funktion hat, die ein (TADAA!) BuffHandle liefert. Nicht wirklich &#252;berraschend, da ich ja beide Protokolle (Buffer Provider und Output Slot) kurze Zeit nacheinander entworfen habe. Daher konnte ich wohl damals auch einen Proof-of-Concept-Test ziemlich einfach &#8222;aus dem &#196;rmel sch&#252;tteln&#8220;...
Ich hatte schon angefangen, &#252;ber der m&#246;gilchen Implementierung zu &#187;br&#252;ten&#171; und mich wieder in BufferProvider + OutputSlot eingelesen. Erst nach etwa einer Stunde ist mir aufgefallen, da&#223; OutputSlot ja eine DataSink erzeugt, und da&#223; diese bereits eine <font color="#572d2d" face="Monospaced">lockBufferFor(FrameID)</font>-Funktion hat, die ein (TADAA!) BuffHandle liefert. Nicht wirklich &#252;berraschend, da ich ja beide Protokolle (Buffer Provider und Output Slot) kurze Zeit nacheinander entworfen habe. Daher konnte ich wohl damals auch einen Proof-of-Concept-Test ziemlich einfach &#8222;aus dem &#196;rmel sch&#252;tteln&#8220;...
</p>
<p>
@ -98147,7 +98169,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<linktarget COLOR="#30ff00" DESTINATION="ID_579607510" ENDARROW="Default" ENDINCLINATION="35;-65;" ID="Arrow_ID_660020375" SOURCE="ID_1073109637" STARTARROW="None" STARTINCLINATION="-185;13;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_cancel"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1734903143791" ID="ID_1525724764" MODIFIED="1734903173828" TEXT="ein limitierter Proxy Buffer-Provider">
<node CREATED="1734903175564" ID="ID_369683017" MODIFIED="1734903197145" TEXT="er unterst&#xfc;tzt nicht den Registrierungs-Teil des Protokolls">
<node CREATED="1734903949643" ID="ID_1663712950" MODIFIED="1734903975613" TEXT="das geht so nicht">
@ -98175,8 +98198,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1734903258151" ID="ID_1229050082" MODIFIED="1734903631292" TEXT="er kann nur ein BuffHandle f&#xfc;r eine schon vorhandene Allokation erstellen"/>
<node CREATED="1734903289469" ID="ID_337010287" MODIFIED="1734903321330" TEXT="dieses delegiert an die Lebenszyklus-Methoden der OutputSink"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734908596668" ID="ID_1041510960" MODIFIED="1734915750510" TEXT="aufbauen per ProxyProvider_test">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1734908596668" ID="ID_1041510960" MODIFIED="1735007001606" TEXT="aufbauen per ProxyProvider_test">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1734908629671" ID="ID_1663582925" MODIFIED="1734908653800" TEXT="das ist ein Prototyping um das Design zu pr&#xfc;fen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
@ -98290,8 +98313,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
allerdings war das Design nie etwas anderes als&#160;<i>vorl&#228;ufig</i>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -98299,8 +98321,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...denn in all honesty, die Pr&#228;misse war und ist, da&#223; man auf dieser Basis einen echten BufferProvider implementieren k&#246;nnen d&#252;rfen sollte
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#650099" CREATED="1734922183448" ID="ID_410220659" MODIFIED="1734963807037" TEXT="also durch die Hintert&#xfc;r gehen?">
<icon BUILTIN="help"/>
@ -98372,7 +98393,6 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1734902914418" ID="ID_848538618" MODIFIED="1734902920919" TEXT="Beschlu&#xdf;">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
@ -98386,6 +98406,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1735015329636" ID="ID_1731327904" MODIFIED="1735015338459" TEXT="ProcNode::pull() implementieren">
<node CREATED="1735015342958" ID="ID_1587386585" MODIFIED="1735015357287" TEXT="ProcessKey vorerst als int64_t typedef"/>
<node CREATED="1735015361411" ID="ID_1747930116" MODIFIED="1735015378224" TEXT="Turnout-System konstruieren (macht noch nichts)"/>
<node CREATED="1735015379901" ID="ID_1117706052" MODIFIED="1735015388020" TEXT="Port #0 aufrufen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1735015413980" ID="ID_1103664878" LINK="#ID_657288363" MODIFIED="1735015749718" TEXT="NodeBuilder_test::build_simpleNode() mit einfachst m&#xf6;glicher Funktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1735015725930" ID="ID_1973845541" MODIFIED="1735015732805" TEXT="hat nur einen Ausgabebuffer"/>
<node CREATED="1735015734333" ID="ID_1151070146" MODIFIED="1735015745991" TEXT="Ergebnis: 42 liegt nachher im Buffer">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#174956" COLOR="#8dfd49" CREATED="1735016105632" HGAP="19" ID="ID_1022413835" MODIFIED="1735016451205" STYLE="bubble" TEXT="Erster Durchstich" VSHIFT="14">
<edge COLOR="#61fe5b"/>
<font NAME="SansSerif" SIZE="22"/>
</node>
</node>
</node>
</node>