Invocation: explore variants to pass output connection

There might be one specific output result buffer at top level
for each invocation, which must be delivered into a prepared
output sink. This amounts to one special case, cross-cutting
an otherwise completely generic data flow scheme.

After considering several solutions, it seems most straight-forward
to configure a specific `OutputBufferProvider` to serve as a proxy for
the `OutputSlot` / `DataSink` provided at top-level to the Render-Job.

As an asside, this analyis reveals that the result-slot number does
not belong into the `FeedManifold`, which is dynamic (on the stack);
rather, it's a fixed value configured as part of the `WeavingPattern`
This commit is contained in:
Fischlurch 2024-07-30 20:05:48 +02:00
parent 9a23aa773b
commit a4ff2081b9
3 changed files with 211 additions and 91 deletions

View file

@ -73,15 +73,6 @@ namespace engine {
BuffS inBuff;
BuffS outBuff;
uint resultSlot{0};
BuffHandle
result() const
{
ENSURE (resultSlot < N, "invalid result buffer retrieved.");
return outBuff[resultSlot];
}
};

View file

@ -415,6 +415,8 @@ namespace engine {
Several<PortRef> leadPort;
Several<BuffDescr> outTypes;
uint resultSlot{0};
//////////////////////////////////////////OOO builder must set-up those descriptors
SimpleWeavingPattern(Several<PortRef>&& pr, Several<BuffDescr> dr)
: CONF{}
@ -456,7 +458,7 @@ namespace engine {
feed.invoke();
}
void
BuffHandle
fix (Feed& feed)
{
for (uint i=0; i<leadPort.size(); ++i)
@ -469,7 +471,10 @@ namespace engine {
if (i != feed.resultSlot)
feed.outBuff[i].release();
}
ENSURE (resultSlot < CONF::MAX_SIZ, "invalid result buffer configured.");
return feed.outBuff[resultSlot];
}
};
@ -503,8 +508,7 @@ namespace engine {
PAT::pull(feed, turnoutSys);
PAT::shed(feed);
PAT::weft(feed);
PAT::fix (feed);
return feed.result();
return PAT::fix (feed);
}
};

View file

@ -5014,9 +5014,7 @@
<linktarget COLOR="#b73b74" DESTINATION="ID_1998357180" ENDARROW="Default" ENDINCLINATION="-1444;146;" ID="Arrow_ID_373354654" SOURCE="ID_264004203" STARTARROW="None" STARTINCLINATION="-586;-482;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662052083304" ID="ID_1536704401" MODIFIED="1662052109690">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Stock-IDs sind <font color="#e94312" face="Monospaced">@deprecated</font>
@ -5051,9 +5049,7 @@
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477784813895" ID="ID_330280074" MODIFIED="1567875934606">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<u>Aufgabe</u>: <i><font size="4" color="#821b58">populate timeline</font></i>
@ -5269,9 +5265,7 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538938796825" ID="ID_1428561726" MODIFIED="1557498707218">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
&#187;der <b>Viewer</b>&#171;
@ -5459,9 +5453,7 @@
<node CREATED="1665800481228" ID="ID_1358268582" MODIFIED="1665800494158" TEXT="Transformationen anwenden">
<node CREATED="1665800496063" ID="ID_547172174" MODIFIED="1665801184257" TEXT="Problem: Gruppen und Filter">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Inkscape wendet Transformationen normalerweise nur auf Blatt-Elemente direkt an; sonst f&#252;gt es ein &quot;transform&quot;-Element ein; dieses ist eine Matrix f&#252;r homogene Koordinaten.
@ -5471,9 +5463,7 @@
</node>
<node CREATED="1665800514028" ID="ID_1925132136" MODIFIED="1665801292480" TEXT="Filter deaktivieren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
wenn man den Filter entfernt / auf Null dreht (Blur), dann wendet Inkscape die Transformation an
@ -6262,9 +6252,7 @@
<node CREATED="1495234865717" ID="ID_1261122199" MODIFIED="1557498707220" TEXT="ist das notwendig?"/>
<node CREATED="1538588192126" ID="ID_1032145387" MODIFIED="1576282358136" TEXT="wohl nicht">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
wenn die GTK-Loop angehalten wird,
@ -8014,9 +8002,7 @@
</node>
<node CREATED="1508540106274" ID="ID_1727085652" MODIFIED="1576282358124" TEXT="ID-Literale existeren dauerhaft">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
der Resolver macht kein Memory-Management,
@ -10882,9 +10868,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1513206594428" ID="ID_678047423" MODIFIED="1513206615387">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
vorgegebene Zahlenfolge<br />in untendlichem Zufalls-Baum finden
@ -15046,9 +15030,7 @@
<node CREATED="1529073503466" ID="ID_1047392798" MODIFIED="1529073510052" TEXT="darf niemals neu erzeugen"/>
<node CREATED="1529073510904" ID="ID_403151375" MODIFIED="1529073549243" TEXT="navigiert den vorbereiten Pfad nochmal hinunter">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
....jaaaaa, das ist verschwenderisch
@ -22258,9 +22240,7 @@
</node>
<node CREATED="1611437583831" HGAP="33" ID="ID_149706819" MODIFIED="1611438463655" TEXT="aber diverse Design-Verbesserungen bleiben" VSHIFT="8">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
....durch den Versuch, &quot;die Hooks&quot; zu einem allgemeinem Gui-Konstruktionsframework mit double-Dispatch auszubauen, habe ich das bestehende Design erheblich gesch&#228;rft, und f&#252;r einige Teilaspekte viel sinnigere L&#246;sungen gefunden. Am Ende hat sich gezeigt, da&#223; meine Vision nicht realisierbar ist, und zwar fehlte eigentlich nur &quot;eine ganz kleine L&#252;cke&quot; &#8213; aber ich bin erfahren genug, um zu wissen, da&#223; man eine solche Situation nicht <i>durch Zaubertricks retten</i>&#160;kann. Daher habe ich diese Vision in aller Form begraben, aber die Design-Verbesserungen entsprechend heruntergestuft und so erhalten.
@ -52073,9 +52053,7 @@
</node>
<node CREATED="1492294454001" ID="ID_1498558942" MODIFIED="1492359486258">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
SessionCommandService::<b>bindArg</b>
@ -52087,9 +52065,7 @@
</node>
<node CREATED="1492294454001" ID="ID_48228210" MODIFIED="1492359489563">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
SessionCommandService::<b>invoke</b>
@ -52121,9 +52097,7 @@
<node CREATED="1492095551151" ID="ID_1172833434" MODIFIED="1518487921092" TEXT="verweist auf andere Komponente"/>
<node CREATED="1492095590481" ID="ID_842137243" MODIFIED="1518487921092">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
managed diese Komponente <i>nicht</i>
@ -52149,9 +52123,7 @@
<node CREATED="1492094305497" ID="ID_1689865131" MODIFIED="1518487921092" TEXT="Zweifel wegen double checked locking"/>
<node CREATED="1492094321039" ID="ID_1545149473" MODIFIED="1518487921092">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
aufwendiges <i>Nebenthema</i>
@ -52177,9 +52149,7 @@
</node>
<node CREATED="1492095433567" FOLDED="true" HGAP="69" ID="ID_1208499974" MODIFIED="1576282357985" TEXT="DSL schaffen" VSHIFT="1">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das war der erste Entwurf
@ -52219,9 +52189,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1492096992098" ID="ID_495973760" MODIFIED="1492132247519">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Symbol ADD_CLIP = CmdAccess::to (cmd::scope_addClip, INTO_FORK);
@ -52258,9 +52226,7 @@
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1492099466079" ID="ID_1013112793" MODIFIED="1576282357984" TEXT="gentle degradation">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
die DSL mu&#223; so konstruiert werden,
@ -52288,9 +52254,7 @@
</node>
<node CREATED="1576282357985" HGAP="43" ID="ID_73450627" MODIFIED="1613917052881" TEXT="Thema vorerst vertagt und einfache L&#xf6;sung implementiert" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
<u><font size="2">(Anmerkung 2/2021)</font></u>
@ -52388,9 +52352,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1489544836757" ID="ID_1364306635" MODIFIED="1576282357984" TEXT="Ausf&#xfc;hrung abweisen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...stattdessen einen Fehler-Indikator ausl&#246;sen
@ -52403,9 +52365,7 @@
</node>
<node CREATED="1489544910395" ID="ID_909938815" MODIFIED="1576282357983" TEXT="enable Action">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das ist eine Reaktion,
@ -85918,10 +85878,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713821606607" ID="ID_492497884" MODIFIED="1713823536290" TEXT="NodeDevel_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1713823362710" ID="ID_66967253" MODIFIED="1719277373397" TEXT="Hilfsmittel zur Entwicklung und zum Aufbau">
<node CREATED="1719277267208" HGAP="29" ID="ID_594112005" MODIFIED="1719625152303" TEXT="brauche eine komplette Test-Ontologie" VSHIFT="7">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719277267208" HGAP="29" ID="ID_594112005" LINK="https://issues.lumiera.org/ticket/1372" MODIFIED="1722274638084" TEXT="#1372 establish a &#xbb;Test Domain Ontology&#xab;" VSHIFT="7">
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" SOURCE="ID_973384222" STARTARROW="None" STARTINCLINATION="-1433;133;"/>
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="524;-512;" ID="Arrow_ID_839086124" SOURCE="ID_605165611" STARTARROW="Default" STARTINCLINATION="-1300;117;"/>
<linktarget COLOR="#ff2400" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-136;-44;" ID="Arrow_ID_1657525718" SOURCE="ID_1706482104" STARTARROW="None" STARTINCLINATION="101;9;"/>
<linktarget COLOR="#fde0ca" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_594112055" SOURCE="ID_854334540" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1719277376922" ID="ID_420782384" MODIFIED="1719787483524" TEXT="das ist zugleich ein Pr&#xfc;fstein f&#xfc;r das angestrebte &#xbb;generische Design&#xab;">
<arrowlink COLOR="#a63b5a" DESTINATION="ID_1834369403" ENDARROW="Default" ENDINCLINATION="-507;-32;" ID="Arrow_ID_249989493" STARTARROW="None" STARTINCLINATION="-211;811;"/>
<linktarget COLOR="#412dcd" DESTINATION="ID_420782384" ENDARROW="Default" ENDINCLINATION="131;-411;" ID="Arrow_ID_317368901" SOURCE="ID_746946876" STARTARROW="None" STARTINCLINATION="241;1448;"/>
@ -88540,6 +88502,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842523924" ID="ID_1665424296" MODIFIED="1721842678142" TEXT="zudem: &#xbb;Service-Kontext&#xab; bereitstellen">
<arrowlink COLOR="#5d434b" DESTINATION="ID_611993343" ENDARROW="Default" ENDINCLINATION="60;-165;" ID="Arrow_ID_819933510" STARTARROW="None" STARTINCLINATION="-74;5;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274451779" ID="ID_1072443707" LINK="https://issues.lumiera.org/ticket/1373" MODIFIED="1722274484633" TEXT="#1373 Default-BufferProvider">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274502942" ID="ID_1076067994" LINK="https://issues.lumiera.org/ticket/1374" MODIFIED="1722275936824" TEXT="#1374 Output-BufferProvider">
<arrowlink COLOR="#861f49" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
@ -88637,8 +88606,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721956892200" ID="ID_1451110951" MODIFIED="1721956974355" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721956892200" ID="ID_1451110951" MODIFIED="1722384486637" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung">
<arrowlink COLOR="#4395d3" DESTINATION="ID_1329080039" ENDARROW="Default" ENDINCLINATION="-105;0;" ID="Arrow_ID_1999279188" STARTARROW="None" STARTINCLINATION="6;-21;"/>
<arrowlink COLOR="#414bc3" DESTINATION="ID_603785440" ENDARROW="Default" ENDINCLINATION="-465;-28;" ID="Arrow_ID_1386315858" STARTARROW="None" STARTINCLINATION="-31;500;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1721957000178" ID="ID_917881726" MODIFIED="1721962405933" TEXT="fragt sich nur: ist das m&#xf6;glich...?">
<icon BUILTIN="help"/>
@ -88731,7 +88701,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722005561810" ID="ID_605283552" MODIFIED="1722005604557" TEXT="zu dem Zeitpunkt haben wir einen Buffer-Descriptor vorliegen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722006966966" ID="ID_80799942" MODIFIED="1722007044652" TEXT="neues API ben&#xf6;tigt">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722006966966" ID="ID_80799942" MODIFIED="1722275926136" TEXT="neues API ben&#xf6;tigt">
<linktarget COLOR="#861f49" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" SOURCE="ID_1076067994" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1722006974253" ID="ID_1472014079" MODIFIED="1722006984025" TEXT="aufrufbar auf/mit einem BufferDescriptor"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722006984755" ID="ID_1802025811" MODIFIED="1722092863044" TEXT="kann ein LocalTag setzen">
@ -88739,9 +88710,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722092776817" ID="ID_1178263086" MODIFIED="1722092793427" TEXT="Bezugspunkt: BufferMetadata::lock()">
<node CREATED="1722092795833" ID="ID_444477764" MODIFIED="1722092803241" TEXT="konstruiert einen abgeleiteten Entry"/>
<node CREATED="1722092804037" ID="ID_696205920" MODIFIED="1722092813545" TEXT="konstruiert dabei einen abgeleiteten Key"/>
<node CREATED="1722092814539" ID="ID_32890513" MODIFIED="1722092832617" TEXT="speichert diesen abgeleiteten Entriy in die Metadaten-Tabelle"/>
<node CREATED="1722092814539" ID="ID_32890513" MODIFIED="1722092832617" TEXT="speichert diesen abgeleiteten Entry in die Metadaten-Tabelle"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722092834937" ID="ID_1568128579" MODIFIED="1722092977474" TEXT="pr&#xfc;fen: Hash-Behandlung konsistent">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#a50125" CREATED="1722092834937" ID="ID_1568128579" MODIFIED="1722218607040" TEXT="pr&#xfc;fen: Hash-Behandlung konsistent">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -88751,15 +88722,20 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1722129822146" ID="ID_768909598" MODIFIED="1722129849880" TEXT="hilft eine feste Reihenfolge?">
<node COLOR="#435e98" CREATED="1722129822146" ID="ID_768909598" MODIFIED="1722218577161" TEXT="hilft eine feste Reihenfolge?">
<icon BUILTIN="help"/>
<node CREATED="1722129884245" ID="ID_732292850" MODIFIED="1722129899976" TEXT="Ausgangspunkt: gegebener (parent)Type-hash"/>
<node CREATED="1722129857702" ID="ID_114268361" MODIFIED="1722129879231" TEXT="sinnvollerweise: LocalKey stets zuerst, dann die Adresse"/>
<node COLOR="#338800" CREATED="1722129857702" ID="ID_114268361" MODIFIED="1722218587632" TEXT="sinnvollerweise: LocalKey stets zuerst, dann die Adresse">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1722218590047" ID="ID_203381512" MODIFIED="1722218598390" TEXT="l&#xf6;st aber das Problem nicht">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#980e5e" CREATED="1722129450311" ID="ID_584023703" MODIFIED="1722129479340" TEXT="hab ein ganz ungutes Gef&#xfc;hl hier">
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1722129503142" ID="ID_791304404" MODIFIED="1722129798643" TEXT="Gefahr, einen bereits bestehenden Eintrag nicht mehr zu finden">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1722129503142" ID="ID_791304404" MODIFIED="1722210017088" TEXT="Gefahr, einen bereits bestehenden Eintrag nicht mehr zu finden">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -88769,13 +88745,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722174380744" ID="ID_267908880" MODIFIED="1722174427410" TEXT="Zielkonflikt im Rahmen des bestehenden Systems">
<node BACKGROUND_COLOR="#d5c08e" COLOR="#a50125" CREATED="1722174380744" ID="ID_267908880" MODIFIED="1722210051783" TEXT="Zielkonflikt im Rahmen des bestehenden Systems">
<icon BUILTIN="clanbomber"/>
<node CREATED="1722174447615" ID="ID_1522763793" MODIFIED="1722174491095" TEXT="Anforderung-1 : f&#xfc;r eine Buffer-Addresse darf es h&#xf6;chstens einen Eintrag geben"/>
<node CREATED="1722174500520" ID="ID_1587953083" MODIFIED="1722174647262" TEXT="Anforderung-2 : (abstrakter)Typ-Eintrag wird durch LocalTag differenziert"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722183960753" ID="ID_1728122357" MODIFIED="1722187113886" TEXT="m&#xf6;gliche L&#xf6;sung: LocalTag nur f&#xfc;r abstrakte Eintr&#xe4;ge in den Hash aufnehmen">
<node COLOR="#5b280f" CREATED="1722183960753" ID="ID_1728122357" MODIFIED="1722210025903" TEXT="m&#xf6;gliche L&#xf6;sung: LocalTag nur f&#xfc;r abstrakte Eintr&#xe4;ge in den Hash aufnehmen">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722174881847" ID="ID_1281056403" MODIFIED="1722174898085" TEXT="die Bedeutung der abstrakten Typ-Eintr&#xe4;ge ist unklar">
<icon BUILTIN="messagebox_warning"/>
@ -88788,8 +88765,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...da mit jedem Buffer-Typ auch eine bestimmte Memory-Block-Gr&#246;&#223;e verbunden ist, k&#246;nnte man dahinter mehrere kachelnde Basis-Allokatoren anordnen &#8212; und in einer solchen Struktur w&#228;re es sinnvoll, zu erwartende Buffer-Allokationen <b>im Voraus anzuk&#252;ndigen</b>. Die Steuerung der Pool-Gr&#246;&#223;e k&#246;nnte dann im Hintergrund erfolgen, was <i>m&#246;glicherweise eine relevante Optimierung auf Durchsatz</i>&#160;erm&#246;glicht
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1722175400457" ID="ID_299028104" MODIFIED="1722175484518" TEXT="hierzu w&#xe4;re eine Betrachtung des Buffer-Lebenszyklus notwengig">
<icon BUILTIN="hourglass"/>
@ -88804,8 +88780,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
anhand der Hash-ID, die zum Entry geh&#246;rt, welcher beim Erzeugen des Handles gespeichert wurde
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1722178787002" ID="ID_1918650261" MODIFIED="1722178803804" TEXT="&#xfc;berf&#xfc;hrt ihn &#x27fc; FREE">
<node CREATED="1722178807616" ID="ID_66134104" MODIFIED="1722178819618" TEXT="attached-dtor">
@ -88822,8 +88797,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
der Entry wird aus der Metadaten-Tabelle <b>gel&#246;scht</b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -88843,23 +88817,136 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722187190971" ID="ID_1915656776" MODIFIED="1722187217883" TEXT="damit bek&#xe4;me man jeweils einen separaten Hash und Entry"/>
<node CREATED="1722187254401" ID="ID_1600797508" MODIFIED="1722187297320" TEXT="man k&#xf6;nnte nun jedem die jeweils gleiche Adresse zuordnen"/>
<node CREATED="1722187298244" ID="ID_1405182769" MODIFIED="1722187322085" TEXT="und dann jeden Eintrag locken, ohne da&#xdf; die Metadatenverlwaltung Alarm schl&#xe4;gt"/>
<node CREATED="1722187373789" ID="ID_1380501144" MODIFIED="1722187434046" TEXT="wenn sich aber die Implementierung an das implizierte Protokoll h&#xe4;lt &#x27f9; keine Gefahr">
<node CREATED="1722187373789" ID="ID_1380501144" MODIFIED="1722218544048" TEXT="wenn sich aber die Implementierung an das implizierte Protokoll h&#xe4;lt &#x27f9; keine Gefahr">
<linktarget COLOR="#b4fbb3" DESTINATION="ID_1380501144" ENDARROW="Default" ENDINCLINATION="-5;51;" ID="Arrow_ID_1590595594" SOURCE="ID_120157543" STARTARROW="None" STARTINCLINATION="117;5;"/>
<node CREATED="1722187437073" ID="ID_967644037" MODIFIED="1722187460993" TEXT="die Impl. kann den State zu einer Adresse nicht wissen"/>
<node CREATED="1722187463676" ID="ID_1266347109" MODIFIED="1722187482519" TEXT="erwartet wird, da&#xdf; sie f&#xfc;r jede Anfrage eine neue Adresse belegt"/>
<node CREATED="1722187483627" ID="ID_1498778966" MODIFIED="1722187504963" TEXT="und nur Adressen wiederverwendet, die per detachBuffer() zur&#xfc;ckgegeben wurden"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1722187531132" ID="ID_849426679" MODIFIED="1722187575744" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1722187535395" ID="ID_9598554" MODIFIED="1722187568052" TEXT="Gefahr besteht &#x2014; ist aber aktuell nicht virulent"/>
<node CREATED="1722187540798" ID="ID_120157543" MODIFIED="1722187552833" TEXT="es gibt aber ein implizites Implementierungs-Protokoll"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722187577286" ID="ID_439948385" MODIFIED="1722187586617" TEXT="Ticket aufmachen">
<node COLOR="#166760" CREATED="1722187540798" ID="ID_120157543" MODIFIED="1722218550296" TEXT="es gilt ein implizites Implementierungs-Protokoll einzuhalten">
<arrowlink COLOR="#b4fbb3" DESTINATION="ID_1380501144" ENDARROW="Default" ENDINCLINATION="-5;51;" ID="Arrow_ID_1590595594" STARTARROW="None" STARTINCLINATION="117;5;"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1722187577286" ID="ID_439948385" MODIFIED="1722209964728" TEXT="sp&#xe4;ter nochmal &#xfc;berpr&#xfc;fen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1722209967992" HGAP="33" ID="ID_1744793928" LINK="https://issues.lumiera.org/ticket/1369" MODIFIED="1722275517215" TEXT="#1369 Buffer metadata lifecycle correctness" VSHIFT="5">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1722378833398" ID="ID_1845392822" MODIFIED="1722384739956" TEXT="Einbindung">
<icon BUILTIN="yes"/>
<node CREATED="1722277680964" ID="ID_418005647" MODIFIED="1722277690328" TEXT="es m&#xfc;&#xdf;te in/vor dem shed() passieren"/>
<node COLOR="#435e98" CREATED="1722277574522" ID="ID_542393351" MODIFIED="1722380123392" TEXT="konkrete M&#xf6;glichkeiten">
<icon BUILTIN="list"/>
<node CREATED="1722277699469" ID="ID_810622390" MODIFIED="1722277710651" TEXT="M&#xf6;glichkeit-1 : fest im Handle speichern">
<node CREATED="1722277712095" ID="ID_1947161112" MODIFIED="1722277763412" TEXT="Jobs sind concurrent &#x27f9; mu&#xdf; fester Teil der Connectivity sein"/>
<node CREATED="1722277769615" ID="ID_1968075327" MODIFIED="1722277776139" TEXT="Konsequenzen">
<node CREATED="1722277777404" ID="ID_1281609321" MODIFIED="1722277786489" TEXT="brauche eine globale Nummern-Vergabe"/>
<node CREATED="1722277790941" ID="ID_1358954671" MODIFIED="1722277802503" TEXT="OutputBufferProvider braucht eine Registry-Table"/>
</node>
<node CREATED="1722277836902" ID="ID_1827442412" MODIFIED="1722277841014" TEXT="Buffer assoziieren">
<node CREATED="1722277842182" ID="ID_1041796529" MODIFIED="1722277874731" TEXT="entweder das Turnout-System macht das"/>
<node CREATED="1722277876041" ID="ID_992570327" MODIFIED="1722277893954" TEXT="oder es gibt ein API um das gesetzte LocalTag abzufragen"/>
<node CREATED="1722277903327" ID="ID_1204530708" MODIFIED="1722277914664" TEXT="in jedem Fall mu&#xdf; das LocalTag sonst noch irgendwo gespeichert werden"/>
</node>
</node>
<node CREATED="1722277919491" ID="ID_1414769577" MODIFIED="1722277932789" TEXT="M&#xf6;glichkeit-2 : Buffer-Addresse ins LocalTag">
<node CREATED="1722277946714" ID="ID_703701312" MODIFIED="1722277969696" TEXT="die Qualifikation mu&#xdf; dann aber transient erfolgen"/>
<node CREATED="1722278042546" ID="ID_1858307352" MODIFIED="1722278071034" TEXT="der OutputBufferProvider reicht dann &#xbb;blind&#xab; diese Addresse als Buffer durch"/>
<node CREATED="1722278083046" ID="ID_812113855" MODIFIED="1722278099351" TEXT="unklar: wie kann dieser Buffer dann sp&#xe4;ter committed werden?"/>
<node CREATED="1722278120742" ID="ID_1502307588" MODIFIED="1722278124654" TEXT="Aufruf">
<node CREATED="1722278128759" ID="ID_1963148702" MODIFIED="1722278140777" TEXT="Buffer wird direkt gegeben oder irgendwo im TurnoutSystem gespeichert"/>
<node CREATED="1722278192870" ID="ID_1432121845" MODIFIED="1722278242224" TEXT="der shed()-Aufruf bekommt einen zus&#xe4;tzlichen Parameter"/>
</node>
</node>
<node CREATED="1722279534669" ID="ID_603785440" MODIFIED="1722384486637" TEXT="M&#xf6;glichkeit-3 : Referenz auf eine DataSink">
<linktarget COLOR="#414bc3" DESTINATION="ID_603785440" ENDARROW="Default" ENDINCLINATION="-465;-28;" ID="Arrow_ID_1386315858" SOURCE="ID_1451110951" STARTARROW="None" STARTINCLINATION="-31;500;"/>
<node CREATED="1722279679206" ID="ID_1000159706" MODIFIED="1722279712944" TEXT="der RenderJob belegt einen OutputSlot &#x27fc; DataSink (&#x2259; smart handle)"/>
<node CREATED="1722279715269" ID="ID_1138507577" MODIFIED="1722279734809" TEXT="in das LocalTag wird eine Referenz auf diese DataSink gepackt"/>
<node CREATED="1722279759031" ID="ID_1688274556" MODIFIED="1722279780323" TEXT="das LocalTag wird im TurnoutSystem abgelegt"/>
<node CREATED="1722279791714" ID="ID_1864321002" MODIFIED="1722279814091" TEXT="effektiv gibt es nur eine Verwendung des OutputBufferProviders"/>
<node CREATED="1722279852394" ID="ID_551846138" MODIFIED="1722279866990" TEXT="der shed()-Aufruf gibt an dieser Stelle das LocalTag mit"/>
<node CREATED="1722279892408" ID="ID_743923267" MODIFIED="1722380168308" TEXT="der OutputBufferProvider extrahiert die DataSink und verwendet sie">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_743923267" ENDARROW="Default" ENDINCLINATION="9;90;" ID="Arrow_ID_674912377" SOURCE="ID_70781847" STARTARROW="None" STARTINCLINATION="189;8;"/>
<node CREATED="1722279912483" ID="ID_1933308272" MODIFIED="1722279952169" TEXT="er belegt den Buffer per DataSink::lockBufferFor(Frame)"/>
<node CREATED="1722279973483" ID="ID_1607488895" MODIFIED="1722279984643" TEXT="er erstellt daraus das BufferHandle"/>
<node CREATED="1722279985641" ID="ID_1333031416" MODIFIED="1722280003882" TEXT="dieses ist so verdrahtet, da&#xdf; es den emit()-Aufruf weitergibt"/>
</node>
</node>
<node CREATED="1722280039959" ID="ID_1636377754" MODIFIED="1722280058164" TEXT="M&#xf6;glichkeit-4 : das Output-Protocol umbauen">
<node CREATED="1722280063255" ID="ID_1468920252" MODIFIED="1722280086252" TEXT="das Belegen eines OutputSlot liefert dann eine Reihe von BuffHandles"/>
<node CREATED="1722280088155" ID="ID_1667357755" MODIFIED="1722280108564" TEXT="diese sind so verdrahtet, da&#xdf; sie die gleichen Funktionen erf&#xfc;llen wie bisher die DataSink"/>
<node CREATED="1722280337386" ID="ID_502477777" MODIFIED="1722280416091" TEXT="das Ausgabe BuffHandle wird von au&#xdf;en in den top-Level-Aufruf hineingegeben"/>
</node>
</node>
<node CREATED="1722378846244" ID="ID_454469150" MODIFIED="1722384760763" TEXT="Diskussion">
<icon BUILTIN="forward"/>
<node COLOR="#5b280f" CREATED="1722378850954" ID="ID_523544526" MODIFIED="1722380080996" TEXT="M&#xf6;glichkeit-1 ist zweifelhaft &#x2014; wohl gar nicht widerspruchsfrei umsetzbar">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1722378890830" ID="ID_1213273275" MODIFIED="1722380080996" TEXT="M&#xf6;glichkeit-2 ist offensichtlich besser &#x2014; l&#xe4;&#xdf;t aber den commit() ungel&#xf6;st">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#11053f" CREATED="1722378970459" ID="ID_70781847" MODIFIED="1722384610260" TEXT="M&#xf6;glichkeit-3 als Weiterentwicklung erscheint einfach und plausibel">
<arrowlink DESTINATION="ID_743923267" ENDARROW="Default" ENDINCLINATION="9;90;" ID="Arrow_ID_674912377" STARTARROW="None" STARTINCLINATION="189;8;"/>
<arrowlink COLOR="#8e30c2" DESTINATION="ID_128884200" ENDARROW="Default" ENDINCLINATION="53;-3;" ID="Arrow_ID_182326182" STARTARROW="None" STARTINCLINATION="-9;58;"/>
<icon BUILTIN="forward"/>
</node>
<node COLOR="#5b280f" CREATED="1722379006311" ID="ID_665293589" MODIFIED="1722380080995" TEXT="M&#xf6;glichkeit-4 ist oberfl&#xe4;chlich clever &#x2014; aber inhaltlich inkonsequent">
<icon BUILTIN="button_cancel"/>
<node CREATED="1722379064983" ID="ID_360363502" MODIFIED="1722379260985" TEXT="die &#xc4;hnlichkeit zwischen BuffHandle und DataSink ist nur oberfl&#xe4;chlich">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...sie entsteht dadurch, da&#223; beide auf bew&#228;hrten L&#246;sungsmustern aufbauen; das hei&#223;t aber noch nicht, da&#223; beide eine gemeinsame Natur haben
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1722379089220" ID="ID_673929506" MODIFIED="1722379877456" TEXT="DataSink ist bewu&#xdf;t mit ref-counting, BuffHandle ist in der Verwendung offen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
In beiden F&#228;llen gibt es das Problem der Freigabe &#8212; aber meine Bewertung ist unterschiedlich ausgefallen: f&#252;r einen Ausgabe-Vorgang gibt es verschiedene kritische Zust&#228;nde, und die M&#246;glichkeit einer Verklemmung; und <i>genau weil man den Protokoll-Status &#252;ber ein Timeout bestimmen kann,</i>&#160;besteht auch die Gefahr, da&#223; ein versp&#228;teter Rechenproze&#223; in Verletzung des Protokolls weiterhin in die Ausgabe schreibt. Ganz anders beim BuffHandle, welches eine m&#246;glichst leichtgewichtige low-level-Abstraktion darstellt; die Methoden am dem Handle dienen nur dazu, Protokoll-Schritte auf eine h&#246;here Ebene zur&#252;ckzumelden, aber der Gebrauch des Handles wird nicht selber durch ein Protokoll geregelt. Hinzu kommt, da&#223; ref-counting einen gewissen Performance-Overhead hat, der f&#252;r ein BuffHandle vielleicht schon kritisch werden k&#246;nnte; eine DataSink dagegen wird auf top-Level erstellt und wird dann nach unten nur ausgeliehen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1722379126698" ID="ID_1998092289" MODIFIED="1722380024273" TEXT="Ein Ausgabevorgang und eine Buffer-Verwendung sind zwei verschiedene Dinge">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Das ist das wichtigste Argument: sie finden auf verschiedenen Abstraktionsebenen statt. Der Ausgabevorgang <i>kann m&#246;glicherweise</i>&#160; eine Buffer-Verwendung mit einschlie&#223;en &#8212; letztere bekommt aber nur durch den Kontext ihre Bedeutung
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1722384533324" ID="ID_128884200" MODIFIED="1722384881672" TEXT="Ergebnis: kein neues API notwendig">
<arrowlink COLOR="#8c1444" DESTINATION="ID_450967698" ENDARROW="Default" ENDINCLINATION="-313;-10;" ID="Arrow_ID_414353144" STARTARROW="None" STARTINCLINATION="-367;0;"/>
<linktarget COLOR="#8e30c2" DESTINATION="ID_128884200" ENDARROW="Default" ENDINCLINATION="53;-3;" ID="Arrow_ID_182326182" SOURCE="ID_70781847" STARTARROW="None" STARTINCLINATION="-9;58;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1722006993331" ID="ID_1387727951" MODIFIED="1722091917790" TEXT="mu&#xdf; mehrfach-Spezialisierung unterbinden">
<icon BUILTIN="button_ok"/>
@ -88882,6 +88969,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1722384768471" ID="ID_537635442" MODIFIED="1722384955366" TEXT="Fazit">
<arrowlink COLOR="#3159bc" DESTINATION="ID_1809654586" ENDARROW="Default" ENDINCLINATION="151;-415;" ID="Arrow_ID_946061354" STARTARROW="None" STARTINCLINATION="-305;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1722384774724" ID="ID_231403168" MODIFIED="1722384802636" TEXT="das bestehende API f&#xfc;r Output-Management deckt diesen Fall bereits komplett ab"/>
<node CREATED="1722384803792" ID="ID_450967698" MODIFIED="1722384876816" TEXT="es gen&#xfc;gt, ein zus&#xe4;tzliches LocalTag beim Belegen des speziellen Output-&#xbb;Slot&#xab; mit zugeben">
<linktarget COLOR="#8c1444" DESTINATION="ID_450967698" ENDARROW="Default" ENDINCLINATION="-313;-10;" ID="Arrow_ID_414353144" SOURCE="ID_128884200" STARTARROW="None" STARTINCLINATION="-367;0;"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1722384890441" ID="ID_438526459" MODIFIED="1722385120612" TEXT="zu kl&#xe4;ren bleibt: wie wird diese Info genau eingebunden?">
<arrowlink COLOR="#932840" DESTINATION="ID_657216791" ENDARROW="Default" ENDINCLINATION="103;-2;" ID="Arrow_ID_1546346335" STARTARROW="None" STARTINCLINATION="-431;18;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
@ -88890,6 +88987,30 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722384676729" ID="ID_1680039499" MODIFIED="1722384690496" TEXT="Herausf&#xfc;hren des Ergebnis-Buffers">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1722384697659" ID="ID_1809654586" MODIFIED="1722385140236" TEXT="Analyse ergab bisher....">
<linktarget COLOR="#3159bc" DESTINATION="ID_1809654586" ENDARROW="Default" ENDINCLINATION="151;-415;" ID="Arrow_ID_946061354" SOURCE="ID_537635442" STARTARROW="None" STARTINCLINATION="-305;0;"/>
<icon BUILTIN="edit"/>
<node CREATED="1722384964234" ID="ID_1078579384" MODIFIED="1722384990515" TEXT="der OutputBufferProvider funktioniert rein als Proxy"/>
<node CREATED="1722384991671" ID="ID_74035909" MODIFIED="1722385019119" TEXT="man gibt hierf&#xfc;r die Referenz auf eine OutputSink verpackt in ein LocalTag mit"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1722385049647" ID="ID_657216791" MODIFIED="1722385115272" TEXT="zu kl&#xe4;ren bleibt: wie kommt das LocalTag genau an die richtige Stelle?">
<linktarget COLOR="#932840" DESTINATION="ID_657216791" ENDARROW="Default" ENDINCLINATION="103;-2;" ID="Arrow_ID_1546346335" SOURCE="ID_438526459" STARTARROW="None" STARTINCLINATION="-431;18;"/>
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722385152329" ID="ID_1882977627" MODIFIED="1722385161927" TEXT="Problem: Aufrufstruktur">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1722385165975" ID="ID_59108048" MODIFIED="1722385176210" TEXT="die Formulierung ist generisch-rekursiv"/>
<node CREATED="1722385177230" ID="ID_795154055" MODIFIED="1722385231890" TEXT="das LocalTag wird aber nur an einer Stelle (top-Level) gebraucht">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722385605151" ID="ID_519028808" MODIFIED="1722385612920" TEXT="Markieren des Output-Slot">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721003681836" ID="ID_536010685" MODIFIED="1721061587708" TEXT="erst mal: Bulk-Konfig f&#xfc;r alle">
<icon BUILTIN="flag-yellow"/>
</node>
@ -137210,6 +137331,10 @@ unsigned int ThreadIdAsInt = *static_cast&lt;unsigned int*&gt;(static_cast&lt;vo
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1023195884" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_1892586048" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274730224" ID="ID_854334540" MODIFIED="1722275425903" TEXT="#1372 establish a &#xbb;Test Domain Ontology&#xab;">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_594112055" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714181432070" ID="ID_1278689110" LINK="https://issues.lumiera.org/ticket/905" MODIFIED="1714181911349" TEXT="#905 build node invocation setup">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_943908122" ENDARROW="Default" ENDINCLINATION="-1682;204;" ID="Arrow_ID_1115019309" STARTARROW="None" STARTINCLINATION="-1643;116;"/>
<icon BUILTIN="flag-yellow"/>