Invocation: now able to implement connecting of buffers

* at least for a simple, prototypical setup
 * and actually shifting the onerous into the Level-1 builder \\
   ''(which is precisely the intention here)''
This commit is contained in:
Fischlurch 2024-07-11 23:35:05 +02:00
parent 1955d28087
commit 133dd9e8ce
4 changed files with 184 additions and 49 deletions

View file

@ -251,6 +251,7 @@ namespace engine {
bool
BufferDescriptor::verifyValidity() const
{
ENSURE (provider_);
return provider_->verifyValidity(*this);
}
@ -258,10 +259,27 @@ namespace engine {
size_t
BufferDescriptor::determineBufferSize() const
{
ENSURE (provider_);
return provider_->getBufferSize (*this);
}
uint
BufferDescriptor::announce (uint count)
{
ENSURE (provider_);
return provider_->announce(count, *this);
}
BuffHandle
BufferDescriptor::lockBuffer()
{
ENSURE (provider_);
return provider_->lockBuffer(*this);
}
void
BuffHandle::emit()
{

View file

@ -103,6 +103,10 @@ namespace engine {
size_t determineBufferSize() const;
operator HashVal() const { return subClassification_; }
/** convenience shortcut to start a buffer handling cycle */
uint announce (uint count);
BuffHandle lockBuffer();
};

View file

@ -76,7 +76,7 @@
//#include "lib/itertools.hpp"
//#include "lib/util.hpp"
//#include <utility>
#include <utility>
#include <array>
//#include <stack>
@ -84,7 +84,7 @@
namespace steam {
namespace engine {
using std::forward;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
/**
@ -288,6 +288,7 @@ namespace engine {
using lib::meta::_Fun;
using lib::meta::is_BinaryFun;
using std::remove_reference_t;
/** Helper to pick up the parameter dimensions from the processing function
* @remark this is the rather simple yet common case that media processing
@ -303,8 +304,8 @@ namespace engine {
static_assert(_Fun<FUN>() , "something funktion-like required");
static_assert(is_BinaryFun<FUN>() , "function with two arguments expected");
using ArgI = typename _Fun<FUN>::Args::List::Head;
using ArgO = typename _Fun<FUN>::Args::List::Tail::Head;
using ArgI = remove_reference_t<typename _Fun<FUN>::Args::List::Head>;
using ArgO = remove_reference_t<typename _Fun<FUN>::Args::List::Tail::Head>;
template<class ARG>
struct MatchBuffArray
@ -361,18 +362,26 @@ namespace engine {
ArrayI inParam;
ArrayO outParam;
template<typename...INIT>
SimpleFunctionInvocationAdapter (INIT&& ...funSetup)
: FUN{forward<INIT> (funSetup)...}
{ }
void
connect (uint fanIn, uint fanOut)
{
REQUIRE (fanIn <= N and fanOut <= N);
UNIMPLEMENTED ("wire up all input/output buffers");
REQUIRE (fanIn >= FAN_I and fanOut >= FAN_O);
for (uint i=0; i<FAN_I; ++i)
inParam[i] = MAN::inBuff[i].template accessAs<BuffI*>();
for (uint i=0; i<FAN_O; ++i)
outParam[i] = MAN::outBuff[i].template accessAs<BuffO*>();
}
void
invoke()
{
process();
process (inParam, outParam);
}
};
@ -430,19 +439,24 @@ namespace engine {
}
void
shed (Feed&)
shed (Feed& feed)
{
for (uint i=0; i<fanOut; ++i)
{
BuffHandle resultData = outDescr[i].lockBuffer();
feed.outBuff.createAt(i, move(resultData));
}
feed.connect (fanIn,fanOut);
}
void
weft (Feed& feed)
{
/* NOP */
}
void
weft (Feed&)
{
/* NOP */
}
void
fix (Feed&)
fix (Feed& feed)
{
/* NOP */
}

View file

@ -1376,9 +1376,7 @@
</node>
<node CREATED="1501850967855" ID="ID_859055846" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Argument-Storage
@ -1394,9 +1392,7 @@
</node>
<node COLOR="#435e98" CREATED="1501867225983" FOLDED="true" ID="ID_1121867075" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
brauche dedizierten <b>Dispatcher</b>
@ -1430,9 +1426,7 @@
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1522935881957" HGAP="23" ID="ID_564244010" MODIFIED="1576282358155" TEXT="4/2018 was ist hier der Stand?" VSHIFT="16">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
kann mich so vague erinnern
@ -1528,9 +1522,7 @@
<icon BUILTIN="button_cancel"/>
<node CREATED="1502390353887" ID="ID_1015749080" MODIFIED="1518487921054">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
wenn die Queue voll ist
@ -1613,9 +1605,7 @@
<node CREATED="1533688905326" ID="ID_709974587" MODIFIED="1538263469667" TEXT="geh&#xf6;rt dem NotificationController"/>
<node CREATED="1533688913996" ID="ID_33570780" MODIFIED="1538263469667">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<i>das</i>&#160;ist schon die endg&#252;ltige L&#246;sung
@ -2312,9 +2302,7 @@
<node CREATED="1538618179734" ID="ID_1693288014" MODIFIED="1538618198551" TEXT="das Lumiera-eigene Stylesheet funktioniert praktisch gar nicht mehr"/>
<node CREATED="1538618201035" ID="ID_1034140537" MODIFIED="1538618349191" TEXT="...seitdem die Engine &apos;Adwaitha&apos; nicht mehr gefunden wird">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
ca 2014 finde ich einige Blog-Eintr&#228;ge, da&#223; jetzt keine Theming-Engine mehr notwendig ist,
@ -3254,9 +3242,7 @@
<icon BUILTIN="button_cancel"/>
<node CREATED="1538317176347" ID="ID_1919150970" MODIFIED="1538317201070" TEXT="wat soll der jeiz">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
das System ist ohnehin schon anget&#246;tet
@ -4623,9 +4609,7 @@
</node>
<node CREATED="1481687005813" ID="ID_1108477992" MODIFIED="1576282358146" TEXT="Entscheidung: Sesion-lifecycle und Dispatcher sind unabh&#xe4;ngig">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
grundlegende Design-Enscheidung
@ -6050,9 +6034,7 @@
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538588393995" ID="ID_1149076483" MODIFIED="1678573209829">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
#1168 : find a way to manage style of
@ -7800,9 +7782,7 @@
<node CREATED="1508020489583" ID="ID_1140824323" MODIFIED="1518487921064" TEXT="oder ein Element (bekannten Typs) bekommen"/>
<node CREATED="1508020551095" ID="ID_798942495" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
oder den <b>Spot</b>&#160;verschieben
@ -86693,8 +86673,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1719785497372" ID="ID_1423892267" MODIFIED="1719785553298" TEXT="braucht einen Parent-Verweis">
<arrowlink COLOR="#474375" DESTINATION="ID_639065262" ENDARROW="Default" ENDINCLINATION="22;-144;" ID="Arrow_ID_253090075" STARTARROW="None" STARTINCLINATION="125;12;"/>
</node>
<node CREATED="1719161926326" ID="ID_639065262" MODIFIED="1719785553298" TEXT="bezieht von diesem die Dependency-Injection">
<node CREATED="1719161926326" ID="ID_639065262" MODIFIED="1720738741563" TEXT="bezieht von diesem die Dependency-Injection">
<linktarget COLOR="#474375" DESTINATION="ID_639065262" ENDARROW="Default" ENDINCLINATION="22;-144;" ID="Arrow_ID_253090075" SOURCE="ID_1423892267" STARTARROW="None" STARTINCLINATION="125;12;"/>
<linktarget COLOR="#799399" DESTINATION="ID_639065262" ENDARROW="Default" ENDINCLINATION="-236;978;" ID="Arrow_ID_1822706622" SOURCE="ID_955738037" STARTARROW="None" STARTINCLINATION="-560;-40;"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1719162633670" ID="ID_460645690" MODIFIED="1719162641407" TEXT="Kl&#xe4;rungsbedarf hier">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719162643254" ID="ID_1096257345" MODIFIED="1719192592768" TEXT="BufferProvider oder Buffer Handles?">
@ -86804,6 +86785,17 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720485439372" ID="ID_1855482752" MODIFIED="1720485460702" TEXT="wird in die Berechnung hinein als spezieller BufferProvider &#xbb;verpackt&#xab;"/>
</node>
<node CREATED="1720740077119" ID="ID_1336461753" MODIFIED="1720740114947">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
diese Infos m&#252;ssen bereitstehen &#10230; jeweils zum <b>Aufbau</b>&#160; einer neuen <b>Invocation</b>
</p>
</body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720485164922" ID="ID_946422034" MODIFIED="1720537661229" TEXT="Zusammenfassung: gebraucht wird...">
<linktarget COLOR="#5a6072" DESTINATION="ID_946422034" ENDARROW="Default" ENDINCLINATION="-44;119;" ID="Arrow_ID_1415360970" SOURCE="ID_1545807598" STARTARROW="Default" STARTINCLINATION="-103;-6;"/>
<icon BUILTIN="forward"/>
@ -86954,7 +86946,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1719790776594" ID="ID_544743149" MODIFIED="1719790788364" TEXT="brauche also einen Funktor / lazyVal hier"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719790776594" ID="ID_544743149" MODIFIED="1720738214985" TEXT="Erweiterung: also einen Funktor / lazyVal verwenden">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#630f69" CREATED="1720738217256" HGAP="22" ID="ID_1819206244" MODIFIED="1720738248310" TEXT="ungekl&#xe4;rt: auf was f&#xfc;r einem Kontext l&#xe4;uft der?" VSHIFT="12">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1719791285941" ID="ID_320104526" MODIFIED="1719791288952" TEXT="Verschaltung">
@ -87773,8 +87770,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node CREATED="1720569454461" ID="ID_1379190851" MODIFIED="1720569494189" TEXT="fange mit der KISS-L&#xf6;sung an">
<node CREATED="1720569454461" ID="ID_1379190851" MODIFIED="1720740569295" TEXT="fange mit der KISS-L&#xf6;sung an">
<arrowlink COLOR="#504a80" DESTINATION="ID_1917701948" ENDARROW="Default" ENDINCLINATION="-196;10;" ID="Arrow_ID_1275152336" STARTARROW="None" STARTINCLINATION="208;0;"/>
<linktarget COLOR="#6473a5" DESTINATION="ID_1379190851" ENDARROW="Default" ENDINCLINATION="-80;478;" ID="Arrow_ID_1920043919" SOURCE="ID_671960069" STARTARROW="None" STARTINCLINATION="-171;-198;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1720574429481" HGAP="25" ID="ID_558040709" MODIFIED="1720574974389" VSHIFT="12">
<richcontent TYPE="NODE"><html>
@ -87813,7 +87811,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720572417472" ID="ID_1892978300" MODIFIED="1720572435945" TEXT="wenn das wirklich n&#xf6;tig wird (YAGNI)..."/>
<node CREATED="1720572436630" ID="ID_60200424" MODIFIED="1720572460182" TEXT="dann kann man immer noch ein spezielles Weaving-Pattern daf&#xfc;r aufbauen"/>
<node CREATED="1720572464914" ID="ID_1119846327" MODIFIED="1720572540180" TEXT="fange also nur mit einem BufferDescriptor-Array an">
<node COLOR="#435e98" CREATED="1720572464914" ID="ID_1119846327" MODIFIED="1720737130419">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
fange also nur mit einem <b>BufferDescriptor-Array</b>&#160;an
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1720573045524" ID="ID_1644013527" MODIFIED="1720573072547" TEXT="BufferDescriptor sind beliebig duplizierbar"/>
<node CREATED="1720573073663" ID="ID_1122948575" MODIFIED="1720573088876" TEXT="es wird ein unique-Key erzeugt und in einer Map registriert"/>
<node CREATED="1720573089822" ID="ID_247390072" MODIFIED="1720573104936" TEXT="abgesehen davon sind es Value-Objekte ohne Identit&#xe4;t"/>
@ -88016,6 +88023,98 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1720737059413" ID="ID_1692112198" MODIFIED="1720737074379" TEXT="mu&#xdf; Konstruktor f&#xfc;r die Processing-Function vorsehen">
<icon BUILTIN="button_ok"/>
<node CREATED="1720737076939" ID="ID_1080188184" MODIFIED="1720737084016" TEXT="...dabei aber alles offen lassen"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1720737084498" ID="ID_1428858121" MODIFIED="1720737103552" TEXT="kann eigentlich erst durch die Konfiguration gekl&#xe4;rt werden">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720737539292" ID="ID_661102788" MODIFIED="1720737558698" TEXT="mu&#xdf; (Output)-Buffer belegen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1720737563409" ID="ID_1032521139" MODIFIED="1720737580530" TEXT="brauche dazu Zugang zu den BufferProvider(n)"/>
<node CREATED="1720738071716" ID="ID_955738037" MODIFIED="1720738741563" TEXT="&#x27f6; das f&#xfc;hrt in das Thema &#xbb;Dependency Injection&#xab;">
<arrowlink COLOR="#799399" DESTINATION="ID_639065262" ENDARROW="Default" ENDINCLINATION="-236;978;" ID="Arrow_ID_1822706622" STARTARROW="None" STARTINCLINATION="-560;-40;"/>
<node CREATED="1720740188800" ID="ID_1355509523" MODIFIED="1720740198332" TEXT="l&#xe4;uft auf einen mehrstufigen Aufbau hinaus">
<node CREATED="1720740199022" ID="ID_804276765" MODIFIED="1720740224343" TEXT="zun&#xe4;chst einmal brauchen wir: ein Array von BufferProvider(n)"/>
<node CREATED="1720740227922" ID="ID_212393359" MODIFIED="1720740239065" TEXT="und zwar stets nur f&#xfc;r den Output">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1720740386677" ID="ID_1612599283" MODIFIED="1720740403146" TEXT="die stecken aber bereits in den BufferDescriptoren">
<icon BUILTIN="idea"/>
<node CREATED="1720744136468" ID="ID_993267865" MODIFIED="1720744150638" TEXT="nur dreht das jetzt irgendwie das Buffer-Handling-Protokoll herum, oder?"/>
<node CREATED="1720744152986" ID="ID_1912567777" MODIFIED="1720744316536" TEXT="nicht sicher ... ist n&#xe4;mlich insofern nicht ausimplementiert">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
der zentrale Test <font color="#480b64" face="Monospaced">verifyStandardCase()</font>&#160;ist <i><font color="#882f0d">auskommentiert</font>,</i>&#160; da er sich auf die <b>BufferTable</b>&#160;abst&#252;tzt &#8212; und mit deren Implementierung bin ich seinerzeit irgendwo in genau dem gleichen Wald versumpft, in dem ich jetzt auch wieder stecke ...
</p>
<p>
&#160;<font size="5">&#9785;</font>
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1720744374507" ID="ID_1809381526" MODIFIED="1720744406234" TEXT="den BufferDescriptor h&#xe4;tte man in einen Builder f&#xfc;r die BuffTable geben sollen....">
<icon BUILTIN="info"/>
<node CREATED="1720744409118" ID="ID_1046942123" MODIFIED="1720744422768" TEXT="also war wohl gemeint, da&#xdf; BuffHandles in der Table liegen"/>
<node CREATED="1720744423426" ID="ID_1649016612" MODIFIED="1720744431487" TEXT="und der Descriptor geh&#xf6;rt auf eine Meta-Ebene"/>
<node CREATED="1720744432131" ID="ID_567712710" MODIFIED="1720744459709" TEXT="naja &#x2014; auf dieser befinden wir uns ja">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
der Turnout ist ein Level-1-Builder....
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1720744464053" ID="ID_399616777" MODIFIED="1720745760878" TEXT="man k&#xf6;nnte nun das Design etwas &#xbb;aufbohren&#xab;">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...da ja ohnehin im Zusammenhang mit dem BufferProvider &#252;berall diverse &#187;conveninence shortcuts&#171; implementiert sind &#8212; ehrlich gesagt, <i><font color="#400190">es war und ist noch nicht klar wohin die Reise geht...</font></i>
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#c985a7" DESTINATION="ID_1166727208" ENDARROW="Default" ENDINCLINATION="22;-40;" ID="Arrow_ID_1352529511" STARTARROW="None" STARTINCLINATION="-89;5;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1720744605651" ID="ID_359076277" MODIFIED="1720744625532" TEXT="und den ersten Teil vom Protokoll auf den Descriptor aufdoppeln"/>
<node CREATED="1720744635577" ID="ID_1963665306" MODIFIED="1720744647424" TEXT="bis zu dem Punkt, wo man ein Handle bekommt">
<node CREATED="1720744739253" ID="ID_632663606" MODIFIED="1720744746500" TEXT="announce (count)"/>
<node CREATED="1720744756734" ID="ID_1183744537" MODIFIED="1720744759345" TEXT="lockBuffer()"/>
</node>
<node COLOR="#338800" CREATED="1720744626496" ID="ID_1859201873" MODIFIED="1720745767678">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
mit der offensichtlichen <i>forwarding-Impl</i>
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720745690535" ID="ID_1166727208" MODIFIED="1720745750241" TEXT="damit ist das Problem in die Build-Phase verschoben">
<linktarget COLOR="#c985a7" DESTINATION="ID_1166727208" ENDARROW="Default" ENDINCLINATION="22;-40;" ID="Arrow_ID_1352529511" SOURCE="ID_399616777" STARTARROW="None" STARTINCLINATION="-89;5;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1720740474467" ID="ID_671960069" MODIFIED="1720740569295" TEXT="zweite Stufe: sollte dieses Array aus einer kompakteren Darstellung aufbauen">
<arrowlink COLOR="#6473a5" DESTINATION="ID_1379190851" ENDARROW="Default" ENDINCLINATION="-80;478;" ID="Arrow_ID_1920043919" STARTARROW="None" STARTINCLINATION="-171;-198;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>