Invocation: investigate forwarding an output data block

This investigation started out as solving an already solved problem...
I'll continue this as a design exercise non the less.

__Some explanation__: To achieve the goal of invoking a Node end-to-end,
the gap between the `Port` API, the `ProcNode` API and the `RenderInvocation` must be closed.
This leads to questions of API design: ''what core operation should the `ProcNode` API expose?''
 * is `ProcNode` just a forwarding / delegating container and becoming redundant?
 * or does the API rather move in the direction of an ''Exit Node''?

This leads to the question how the opened `OutputSlot` can be exposed as a `BuffHandle`
to allow to set off the recursive Node invocation. As it turns out, the onerous for this step
lies on the actual `OutputSlot` implementation, since the API and output protocol already requires
to expose a `BuffHandle`. Yet there is no "real" implementation available, just a Mock setup based
on `DiagnosticBufferProvider`, which obviously can just be passed-through.

Which leaves me with mixed feelings. For one it is conveninent to skip this topic for now,
but on the other hand the design of `BufferProvider` does not seem well suited for such an proxying task.
Thus I decided to explore this aspect in the form of a prototyping test....
This commit is contained in:
Fischlurch 2024-12-22 22:31:05 +01:00
parent 2068278616
commit 33c8f1c5b1
7 changed files with 617 additions and 36 deletions

View file

@ -0,0 +1,55 @@
/*
BufferProxyProvider - Adapt existing allocation for access through the Buffer protocol
Copyright (C)
2024, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
* *****************************************************************/
/** @file buffer-proxy-provider.cpp
** Implementation details of a forwarding BufferProvider stub implementation.
*/
#include "lib/error.hpp"
#include "steam/engine/buffer-proxy-provider.hpp"
//#include "steam/engine/buffer-metadata.hpp"
//#include "lib/util.hpp"
//using util::isSameAdr;
namespace steam {
namespace engine {
// storage for the default-marker constants
// const TypeHandler TypeHandler::RAW{};
namespace { // impl. details and definitions
// const uint DEFAULT_DESCRIPTOR = 0;
}
/** build a new
*/
// BufferProvider::BufferProvider (Literal implementationID)
// : meta_(new BufferMetadata (implementationID))
// { }
//
// BufferProvider::~BufferProvider() { }
/** @internal verify the given descriptor.
*/
}} // namespace engine

View file

@ -0,0 +1,86 @@
/*
BUFFER-PROXY-PROVIDER.hpp - Adapter to access existing allocation via buffer handling protocol
Copyright (C)
2024, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
*/
/** @file buffer-proxy-provider.hpp
** Adapter to expose a given memory block through a BuffHandle.
** This allows to integrate a specific data access (e.g. related to input / output)
** with the buffer lifecycle protocol as defined by BufferProvider.
** @see state.hpp
** @see output-slot.hpp
*/
#ifndef STEAM_ENGINE_BUFFER_PROXY_PROVIDER_H
#define STEAM_ENGINE_BUFFER_PROXY_PROVIDER_H
#include "lib/error.hpp"
#include "lib/symbol.hpp"
#include "lib/meta/util.hpp"
//#include "lib/hash-value.h"
#include "steam/engine/buffer-provider.hpp"
#include "steam/engine/buffer-metadata.hpp"
//#include "steam/engine/engine-ctx.hpp"
//#include "steam/engine/type-handler.hpp"
//#include "steam/engine/buffer-local-tag.hpp"
#include "lib/nocopy.hpp"
#include <functional>
#include <utility>
//#include <memory>
namespace steam {
namespace engine {
using lib::Literal;
// using std::unique_ptr;
// using std::forward;
/**
* Adapter to expose access to data blocks via BuffHandle and the BufferProvider protocol.
* @todo WIP-WIP 12/2024 this is a design sketch to explore extension capabilities of BufferProvider
*/
class BufferProxyProvider
: util::MoveOnly
{
std::function<void(size_t,BufferState)> listener_;
public:
template<class LIS, typename = lib::meta::disable_if_self<BufferProxyProvider, LIS>>
BufferProxyProvider (LIS&& listener)
: listener_{std::forward<LIS> (listener)}
{ }
template<typename TAR>
BuffHandle
lockBuffer (TAR& dataBlock)
{
UNIMPLEMENTED ("setup type handler and then create a locked BuffHandle");
}
};
/* === Implementation === */
/** convenience shortcut: */
}} // namespace steam::engine
#endif /*STEAM_ENGINE_BUFFER_PROXY_PROVIDER_H*/

View file

@ -43,7 +43,7 @@
** Size and other characteristics of the data frames are assumed to be suitable, which typically ** Size and other characteristics of the data frames are assumed to be suitable, which typically
** won't be verified at that level anymore. Besides that, the allocation of an output slot reveals ** won't be verified at that level anymore. Besides that, the allocation of an output slot reveals
** detailed timing expectations. The client is required to comply to these timings when _emitting_ ** detailed timing expectations. The client is required to comply to these timings when _emitting_
** data -- he's even required to provide a current time specification, alongside with the data. ** data -- they are even required to provide a current time specification, alongside with the data.
** Based on this information, the output slot has the ability to handle timing failures gracefully; ** Based on this information, the output slot has the ability to handle timing failures gracefully;
** the concrete output slot implementation is expected to provide some kind of de-click or ** the concrete output slot implementation is expected to provide some kind of de-click or
** de-flicker facility, which kicks in automatically when a timing failure is detected. ** de-flicker facility, which kicks in automatically when a timing failure is detected.
@ -118,7 +118,7 @@ namespace play {
public: public:
virtual ~OutputSlot(); virtual ~OutputSlot();
typedef lib::IterSource<DataSink>::iterator OpenedSinks; using OpenedSinks = lib::IterSource<DataSink>::iterator;
class Allocation class Allocation
{ {

View file

@ -17,12 +17,17 @@ return: 0
END END
TEST "buffer metadata type keys" BufferMetadataKey_test <<END TEST "Bbuffer metadata type keys" BufferMetadataKey_test <<END
return: 0 return: 0
END END
TEST "buffer metadata and state transitions" BufferMetadata_test <<END TEST "Buffer metadata and state transitions" BufferMetadata_test <<END
return: 0
END
PLANNED "Proxy Buffer-provider" BufferProxyProvider_test <<END
return: 0 return: 0
END END

View file

@ -0,0 +1,88 @@
/*
OutputProxyProvider(Test) - verify accessing an output sink via BufferProvider protocol
Copyright (C)
2024, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
* *****************************************************************/
/** @file output-proxy-provider-test.cpp
** unit test \ref OutputProxyProvider_test
*/
#include "lib/test/run.hpp"
//#include "steam/play/diagnostic-output-slot.hpp"
#include "steam/engine/buffer-proxy-provider.hpp"
#include "steam/engine/test-rand-ontology.hpp"
namespace steam {
namespace engine{
namespace test {
/***************************************************************//**
* @test verify the OutputSlot interface and base implementation
* by performing full data exchange cycle. This is a
* kind of "dry run" for documentation purposes,
* both the actual OutputSlot implementation
* as the client using this slot are Mocks.
*/
class OutputProxyProvider_test : public Test
{
virtual void
run (Arg)
{
size_t seenID{0};
BufferState lastState{NIL};
auto listener = [&](size_t id, BufferState state)
{
seenID = id;
lastState = state;
};
// setup with notification callback
BufferProxyProvider proxPro{listener};
// Assuming some data block is »given«
seedRand();
TestFrame::reseed();
size_t frameNr = defaultGen.u64();
TestFrame dataBlock (frameNr);
CHECK ( dataBlock.isPristine());
BuffHandle handle = proxPro.lockBuffer (dataBlock);
// Now a »client« can do awful things to the buffer...
CHECK (handle.isValid());
auto& data = handle.accessAs<TestFrame>();
uint64_t param = defaultGen.u64();
manipulateFrame (&data, &data, param);
// »client« is done...
handle.emit();
// end usage cycle
handle.release();
CHECK (not handle.isValid());
CHECK (not dataBlock.isPristine());
CHECK ( dataBlock.isValid());
}
};
/** Register this test class... */
LAUNCHER (OutputProxyProvider_test, "unit play");
}}} // namespace steam::play::test

View file

@ -18,6 +18,7 @@
#include "lib/test/run.hpp" #include "lib/test/run.hpp"
#include "steam/engine/node-builder.hpp" #include "steam/engine/node-builder.hpp"
#include "steam/engine/diagnostic-buffer-provider.hpp"
//#include "lib/util.hpp" //#include "lib/util.hpp"
@ -63,6 +64,12 @@ namespace test {
CHECK (watch(node).isSrc()); CHECK (watch(node).isSrc());
CHECK (watch(node).ports().size() == 1); 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);
} }

View file

@ -28165,9 +28165,7 @@
</node> </node>
<node COLOR="#338800" CREATED="1677864417723" ID="ID_692056392" MODIFIED="1677864442889"> <node COLOR="#338800" CREATED="1677864417723" ID="ID_692056392" MODIFIED="1677864442889">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
Style-Klasse: <b><font face="Monospaced">.fork__bracket</font></b> Style-Klasse: <b><font face="Monospaced">.fork__bracket</font></b>
@ -28798,9 +28796,7 @@
<node CREATED="1557435548361" ID="ID_1786798505" MODIFIED="1557498707228" TEXT="w&#xfc;rde enable_if brauchen"/> <node CREATED="1557435548361" ID="ID_1786798505" MODIFIED="1557498707228" TEXT="w&#xfc;rde enable_if brauchen"/>
<node CREATED="1557435559616" ID="ID_17287871" MODIFIED="1557498707228" TEXT="Stop"> <node CREATED="1557435559616" ID="ID_17287871" MODIFIED="1557498707228" TEXT="Stop">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
steht in keinem Verh&#228;ltnis zum Zweck steht in keinem Verh&#228;ltnis zum Zweck
@ -29305,9 +29301,7 @@
</node> </node>
<node CREATED="1560304412203" FOLDED="true" ID="ID_1976247827" MODIFIED="1561827483833"> <node CREATED="1560304412203" FOLDED="true" ID="ID_1976247827" MODIFIED="1561827483833">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
Renderer <i>ist</i>&#160;bereits der Funktor Renderer <i>ist</i>&#160;bereits der Funktor
@ -30342,9 +30336,7 @@
</node> </node>
<node CREATED="1672871169883" ID="ID_923032562" MODIFIED="1672871357241" TEXT="mit dieser Korrektur funktioniert die horizontale Scrollbar (halbwegs) wie erwartet"> <node CREATED="1672871169883" ID="ID_923032562" MODIFIED="1672871357241" TEXT="mit dieser Korrektur funktioniert die horizontale Scrollbar (halbwegs) wie erwartet">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<ul> <ul>
<li> <li>
@ -31488,9 +31480,7 @@
</node> </node>
<node COLOR="#338800" CREATED="1563037328957" ID="ID_1150753033" MODIFIED="1563039434820" TEXT="man kann es aber (zur&#xfc;ck)setzen"> <node COLOR="#338800" CREATED="1563037328957" ID="ID_1150753033" MODIFIED="1563039434820" TEXT="man kann es aber (zur&#xfc;ck)setzen">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
&#160;&#160;&#160;&#160;for (uint i=0; i&lt;pos; ++i) &#160;&#160;&#160;&#160;for (uint i=0; i&lt;pos; ++i)
@ -32208,9 +32198,7 @@
<icon BUILTIN="help"/> <icon BUILTIN="help"/>
<node CREATED="1563831414186" ID="ID_1993035073" MODIFIED="1563831443895" TEXT="wo?"> <node CREATED="1563831414186" ID="ID_1993035073" MODIFIED="1563831443895" TEXT="wo?">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
/home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css /home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css
@ -32808,9 +32796,7 @@
</node> </node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679076581607" ID="ID_808858680" MODIFIED="1679076628793" TEXT="derzeit wird hier keinerlei Overlay gezeichnet"> <node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679076581607" ID="ID_808858680" MODIFIED="1679076628793" TEXT="derzeit wird hier keinerlei Overlay gezeichnet">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
...aber das wird sich ganz gewi&#223; &#228;ndern &#10230; Stichwort Bereichsmarkierungen ...aber das wird sich ganz gewi&#223; &#228;ndern &#10230; Stichwort Bereichsmarkierungen
@ -33578,9 +33564,7 @@
<node CREATED="1567689750410" ID="ID_1517735190" MODIFIED="1567689771647" TEXT="...von zwei Bereichen mit box-shadow"/> <node CREATED="1567689750410" ID="ID_1517735190" MODIFIED="1567689771647" TEXT="...von zwei Bereichen mit box-shadow"/>
<node CREATED="1567689772565" ID="ID_1542367602" MODIFIED="1576282358040" TEXT="...sofern der box-shadow den im Zeichenvorgang abgedeckten Bereich &#xfc;berschreitet"> <node CREATED="1567689772565" ID="ID_1542367602" MODIFIED="1576282358040" TEXT="...sofern der box-shadow den im Zeichenvorgang abgedeckten Bereich &#xfc;berschreitet">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
er wird von GTK eigentlich korrekt &#252;ber die Nachbarbereiche dar&#252;ber gezeichnet. er wird von GTK eigentlich korrekt &#252;ber die Nachbarbereiche dar&#252;ber gezeichnet.
@ -88795,15 +88779,19 @@ 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"> <node COLOR="#338800" CREATED="1734881815740" ID="ID_162927427" MODIFIED="1734881825221" TEXT="baue eine Node">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </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>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734877552951" ID="ID_1383452569" MODIFIED="1734879501751" TEXT="Parameter: fest und funktionsgeneriert"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734877552951" ID="ID_1383452569" MODIFIED="1734879501751" TEXT="Parameter: fest und funktionsgeneriert">
<linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1070;72;" ID="Arrow_ID_71441743" SOURCE="ID_985974600" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
<linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1339;91;" ID="Arrow_ID_1946653398" SOURCE="ID_600115804" STARTARROW="None" STARTINCLINATION="-1035;100;"/> <linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1339;91;" ID="Arrow_ID_1946653398" SOURCE="ID_600115804" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
<linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1070;72;" ID="Arrow_ID_71441743" SOURCE="ID_985974600" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733531449614" ID="ID_481525559" MODIFIED="1734059241149" TEXT="speziell auch Anlegen einer Parameter-Node"> <node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733531449614" ID="ID_481525559" MODIFIED="1734059241149" TEXT="speziell auch Anlegen einer Parameter-Node">
<linktarget COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1490;75;" ID="Arrow_ID_570772162" SOURCE="ID_1587342377" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<linktarget COLOR="#406cd3" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="-140;9;" ID="Arrow_ID_55724637" SOURCE="ID_1678162572" STARTARROW="None" STARTINCLINATION="-358;-24;"/> <linktarget COLOR="#406cd3" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="-140;9;" ID="Arrow_ID_55724637" SOURCE="ID_1678162572" 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"/> <icon BUILTIN="pencil"/>
</node> </node>
</node> </node>
@ -94449,6 +94437,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p> </p>
</body> </body>
</html></richcontent> </html></richcontent>
<node BACKGROUND_COLOR="#eadca7" COLOR="#690f14" CREATED="1734900837143" HGAP="32" ID="ID_1904321525" LINK="#ID_670416401" MODIFIED="1734900885391" TEXT="letztlich diese L&#xf6;sung gew&#xe4;hlt" VSHIFT="12"/>
</node> </node>
</node> </node>
<node COLOR="#5b280f" CREATED="1721956892200" FOLDED="true" ID="ID_1451110951" MODIFIED="1722470788939" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung"> <node COLOR="#5b280f" CREATED="1721956892200" FOLDED="true" ID="ID_1451110951" MODIFIED="1722470788939" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung">
@ -94723,7 +94712,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722279852394" ID="ID_551846138" MODIFIED="1722279866990" TEXT="der shed()-Aufruf gibt an dieser Stelle das LocalTag mit"/> <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"> <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;"/> <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="1722279912483" ID="ID_1933308272" MODIFIED="1734901237987" TEXT="er belegt den Buffer per DataSink::lockBufferFor(Frame)">
<linktarget COLOR="#53677e" DESTINATION="ID_1933308272" ENDARROW="Default" ENDINCLINATION="170;9;" ID="Arrow_ID_463152101" SOURCE="ID_1044436621" STARTARROW="None" STARTINCLINATION="119;-239;"/>
</node>
<node CREATED="1722279973483" ID="ID_1607488895" MODIFIED="1722279984643" TEXT="er erstellt daraus das BufferHandle"/> <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 CREATED="1722279985641" ID="ID_1333031416" MODIFIED="1722280003882" TEXT="dieses ist so verdrahtet, da&#xdf; es den emit()-Aufruf weitergibt"/>
</node> </node>
@ -94805,7 +94796,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent> </html></richcontent>
</node> </node>
<node CREATED="1722444704965" ID="ID_329807269" MODIFIED="1722444730742" TEXT="Aber: nicht den BufferProvider austauschen, sondern blo&#xdf; das BuffHandle"/> <node CREATED="1722444704965" ID="ID_329807269" MODIFIED="1722444730742" TEXT="Aber: nicht den BufferProvider austauschen, sondern blo&#xdf; das BuffHandle"/>
<node CREATED="1722445156984" ID="ID_204443476" MODIFIED="1722445177473" TEXT="der spezielle BufferProvider w&#xfc;rde au&#xdf;erhalb, im Top-Level verwendet"/> <node CREATED="1722445156984" ID="ID_204443476" MODIFIED="1734901315145" TEXT="der spezielle BufferProvider w&#xfc;rde au&#xdf;erhalb, im Top-Level verwendet">
<linktarget COLOR="#7b6890" DESTINATION="ID_204443476" ENDARROW="Default" ENDINCLINATION="40;118;" ID="Arrow_ID_594871915" SOURCE="ID_741480483" STARTARROW="None" STARTINCLINATION="138;-806;"/>
<node CREATED="1734901163415" ID="ID_1044436621" MODIFIED="1734901245821" TEXT="er schl&#xe4;gt die Br&#xfc;cke zum OutputSlot-Protokoll">
<arrowlink COLOR="#53677e" DESTINATION="ID_1933308272" ENDARROW="Default" ENDINCLINATION="170;9;" ID="Arrow_ID_463152101" STARTARROW="None" STARTINCLINATION="119;-239;"/>
</node>
</node>
</node> </node>
</node> </node>
</node> </node>
@ -95300,7 +95296,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721003681836" ID="ID_536010685" MODIFIED="1721061587708" TEXT="erst mal: Bulk-Konfig f&#xfc;r alle"> <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"/> <icon BUILTIN="flag-yellow"/>
<node COLOR="#5b280f" CREATED="1734742891965" ID="ID_1804383886" MODIFIED="1734743139622" TEXT="f&#xfc;r den ersten Prototyp: sinvolle Buffer-Descriptoren einf&#xfc;llen"> <node COLOR="#5b280f" CREATED="1734742891965" ID="ID_1804383886" MODIFIED="1734901268707" TEXT="f&#xfc;r den ersten Prototyp: sinvolle Buffer-Descriptoren einf&#xfc;llen">
<linktarget COLOR="#f6dafe" DESTINATION="ID_1804383886" ENDARROW="Default" ENDINCLINATION="-566;-28;" ID="Arrow_ID_296461814" SOURCE="ID_944567202" STARTARROW="None" STARTINCLINATION="-558;27;"/> <linktarget COLOR="#f6dafe" DESTINATION="ID_1804383886" ENDARROW="Default" ENDINCLINATION="-566;-28;" ID="Arrow_ID_296461814" SOURCE="ID_944567202" STARTARROW="None" STARTINCLINATION="-558;27;"/>
<icon BUILTIN="button_cancel"/> <icon BUILTIN="button_cancel"/>
</node> </node>
@ -97826,7 +97822,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-pink"/> <icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531749477" ID="ID_1587342377" MODIFIED="1734059374412" TEXT="Param-Functor im NodeBuilder_test anlegen"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733531749477" ID="ID_1587342377" MODIFIED="1734059374412" TEXT="Param-Functor im NodeBuilder_test anlegen">
<arrowlink COLOR="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1490;75;" ID="Arrow_ID_570772162" STARTARROW="None" STARTINCLINATION="-530;-37;"/> <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;"/> <linktarget COLOR="#f9407e" DESTINATION="ID_1587342377" ENDARROW="Default" ENDINCLINATION="330;471;" ID="Arrow_ID_316456085" SOURCE="ID_635342516" STARTARROW="None" STARTINCLINATION="684;35;"/>
<icon BUILTIN="flag-yellow"/> <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"> <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="#d20e48" 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;"/>
@ -97851,6 +97847,346 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="messagebox_warning"/> <icon BUILTIN="messagebox_warning"/>
</node> </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">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
m&#252;&#223;te doch <i>im Prinzip</i>&#160;bereits alles funktionieren....
</p>
</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)">
<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="1734894296705">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
brauche also <i>nur noch</i>&#160;ein BuffHandle hier
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734894315658" ID="ID_213775772" MODIFIED="1734894332521" 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">
<node CREATED="1734894414418" ID="ID_236501804" MODIFIED="1734894420317" TEXT="invokeJobOperation"/>
<node COLOR="#cd29bf" CREATED="1734894429480" ID="ID_1084000809" MODIFIED="1734894447480" TEXT="Butterbeidiefische!!!">
<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?">
<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">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das w&#252;rde mir eigentlich gefallen &#10233; packe ich diesen Schritt <b>JETZT</b>?
</p>
</body>
</html>
</richcontent>
<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 CREATED="1734895453486" ID="ID_1190790048" MODIFIED="1734895471874">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
die <b>m&#252;ssen</b>&#160;dann auch ins default Turnout-System
</p>
</body>
</html></richcontent>
</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 CREATED="1734895566335" ID="ID_1202439993" MODIFIED="1734895589747">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
im Scheduler ist nur noch <b>ein</b>&#160;freier Slot &#252;brig
</p>
</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 CREATED="1734895676448" ID="ID_338727472" MODIFIED="1734895687017" TEXT="damit w&#xe4;re dann die ProcNode tot">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1734895692438" ID="ID_295093492" MODIFIED="1734895707944" TEXT="und der Port w&#xe4;re die neue Node">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734895709971" ID="ID_1258984221" MODIFIED="1734895753710" TEXT="NEIN ich WILL das nicht verdammt noch einmal &#xd83d;&#xddf2;&#xd83d;&#xddf2;&#xd83d;&#xddf2;">
<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="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...">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Es gibt N Timelines. F&#252;r jede und f&#252;r jedes Segment habe ich <i>eine </i>Exit-Node.
</p>
<p>
&#10233; Also ~ 2000 pro Timeline
</p>
<p>
Das multipliziert nochmal mit ~20 Ports (Video, Audio, R,G,B,&#945;, Full-Screen, + Probe-Point(s), Audio-Subgruppe(n)...)
</p>
<p>
mit 8 Byte pro Pointer sind das ~ 1.5 MiB
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1734896966595" ID="ID_699738549" MODIFIED="1734897313147" TEXT="also grade der Fan f&#xfc;r die Ports tut weh">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...und zwar wegen den Subgruppen und Probe-Points, die eben keinesfalls beschr&#228;nkt werden d&#252;rfen
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1734897057294" ID="ID_351588545" MODIFIED="1734897241644" TEXT="eine Lookup-Table klingt auch nicht lustig">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...wegen der Concurrency, au&#223;erdem m&#252;&#223;te dann dort ja auch wieder das cartesische Produkt gespeichert werden, denn es sind ja grade alle m&#246;glichen Ports m&#246;glich
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1734897243485" ID="ID_1714038458" MODIFIED="1734897255982" TEXT="oder irgend eine Pointer-Trickserei"/>
<node COLOR="#5b280f" CREATED="1734897934183" ID="ID_76579817" MODIFIED="1734897952687" TEXT="STOP Premature Optimisation">
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734897954937" ID="ID_1708645844" MODIFIED="1734897992179" TEXT="ABER: Wir bekommen ein Problem bez&#xfc;glich Node-Storage">
<icon BUILTIN="clanbomber"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="138" ID="ID_1940874129" MODIFIED="1734900226156" STYLE="bubble" TEXT="Problem: statisch konfigurierte Nodes brauchen Speicher" VSHIFT="-25">
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
<arrowlink COLOR="#fe512a" DESTINATION="ID_928249123" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1663263974" STARTARROW="None" STARTINCLINATION="-841;41;"/>
<icon BUILTIN="bell"/>
<node CREATED="1721239003353" ID="ID_891196645" MODIFIED="1734900398995" STYLE="fork" TEXT="Getrieben durch die Kombinatorik">
<font NAME="SansSerif" SIZE="8"/>
</node>
<node CREATED="1721239003353" ID="ID_834510263" MODIFIED="1734900487394" STYLE="fork" TEXT="gef&#xe4;hrlicher Hebel durch Komplexit&#xe4;t im Edit-Projekt">
<font NAME="SansSerif" SIZE="8"/>
</node>
</node>
</node>
<node CREATED="1734897994143" ID="ID_1273692291" MODIFIED="1734898015323" TEXT="demgegen&#xfc;ber sind Sorgen wegen Exit-Nodes irgendwie sekund&#xe4;r">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1734898029900" ID="ID_1293412255" MODIFIED="1734898042867" TEXT="was kann man tun?">
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1734898046008" ID="ID_337690964" MODIFIED="1734898178291" TEXT="Aufgeben und doch wieder auf ein dynamisches Modell umstellen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
das was alle &#8222;vern&#252;nftigen Leute&#8220; sowiso machen &#8212; allerdings tun sie das nicht aus Vernunft, sondern aus Gedankenlosigkeit, weshalb das kein weiter relevanter Einwand ist
</p>
</body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1734898161672" ID="ID_864710227" MODIFIED="1734898344695" TEXT="durch einen weiteren Layer mit Storage-Encoding l&#xf6;sen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Also einen Post-Processing-Schritt, der die gleiche Ausf&#252;hrungs-Logik effizienter im Speicher codiert
</p>
<ul>
<li>
Flyweight-Pattern zur Deduplikation anwenden
</li>
<li>
VTables o.&#228;. wo m&#246;glich durch Funktionspointer ersetzen
</li>
</ul>
<p>
Das k&#246;nnte ggfs. sogar eine automatische Transformation sein, auf Basis des jetzt definierten Node-Modells; man w&#252;rde dann eine DAG &#10236; Tree -Transformation machen und dann die jeweilge ausf&#252;hrbare Node &#252;ber ein Lambda-Binding &#252;ber eine Prototyp-Node erzeugen.
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1734900499900" ID="ID_1840118668" MODIFIED="1734900509479" 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/>
<body>
<p>
alles andere w&#252;rde eine Art Kollaboration oder Protokoll implizieren
</p>
</body>
</html>
</richcontent>
</node>
<node COLOR="#5b280f" CREATED="1734901125292" ID="ID_741480483" MODIFIED="1734907065705" TEXT="es braucht dann doch einen Proxy-Buffer-Provider">
<arrowlink COLOR="#7b6890" DESTINATION="ID_204443476" ENDARROW="Default" ENDINCLINATION="40;118;" 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"/>
<node CREATED="1734901344895" ID="ID_1829576069" MODIFIED="1734901358806" TEXT="nach der Analys und dem Design mit dem LocalTag aufgegeben"/>
<node COLOR="#5b280f" CREATED="1734901402451" ID="ID_49509018" MODIFIED="1734907018343" TEXT="m&#xf6;glicherweise gen&#xfc;gt hier aber ein limitierter Adapter">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1734901435199" ID="ID_687178748" MODIFIED="1734901453728" TEXT="der ganze &#xbb;Registrierungs&#xab;-Teil des BufferProvider ist hier irrelevant"/>
<node CREATED="1734901454980" ID="ID_234293125" MODIFIED="1734901472097" TEXT="wir haben einen direkten Pointer von der OutputSink in der Hand"/>
<node CREATED="1734901475217" ID="ID_637280489" MODIFIED="1734901486332" TEXT="und wollen diesen als BuffHandle adaptieren"/>
<node COLOR="#5b280f" CREATED="1734906780836" ID="ID_1204155543" MODIFIED="1734906804481" TEXT="moment mal .... Slot liefert bereits ein BuffHandle">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node CREATED="1734907068755" ID="ID_1965236379" MODIFIED="1734907086890" TEXT="nein &#x2014; es ist gar nichts mehr zu tun hier...">
<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">
<node BACKGROUND_COLOR="#ccc999" COLOR="#34a881" CREATED="1734916937062" HGAP="36" ID="ID_1073109637" MODIFIED="1734917045148" TEXT="oh... oh ... ich rieche &#xbb;design smell&#xab;" VSHIFT="13">
<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>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734903075113" ID="ID_579607510" MODIFIED="1734917024943" 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;...
</p>
<p>
</p>
<p>
Heute aber kommt mir dieser ganze Zusammenhang ziemlich &#187;anr&#252;chig&#171; vor. Ich war inzwischen x-mal in der Analyse in die Falle gegangen, den BufferProvider mit dem Output-Management zu verwechseln &#8212; und dann immer wieder festgestellt, da&#223; <b>beide auf komplett andere Architektur-Ebenen geh&#246;ren</b>....
</p>
<p>
</p>
<p>
Deshalb m&#246;chte ich nun doch einmal aus-implementieren, was denn erforderlich w&#228;re, einen <b>frei-stehenden</b>&#160;Buffer-Provider neu zu implementieren, welcher an einen dahinter liegenden OutputSlot delegiert....
</p>
</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"/>
<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">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
weil die tats&#228;chlich zu unterst&#252;tzenden Operationen die BufferMetadata brauchen
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1734903977190" ID="ID_144797149" MODIFIED="1734904012188" TEXT="man kann aber die betr. Funktionen unsichtbar lassen"/>
<node CREATED="1734904021679" ID="ID_1405460395" MODIFIED="1734904060607">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Konsequenz &#10233; was der User bekommt, ist <i>kein BufferProvider</i>
</p>
</body>
</html></richcontent>
</node>
</node>
<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 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"/>
<node CREATED="1734908656059" ID="ID_1839974226" MODIFIED="1734908919282" TEXT="ich hab da n&#xe4;mlich gewisse Zweifel">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...und zwar schon l&#228;ngere Zeit bez&#252;glich der <i>Implementierung</i>&#160; des BufferProvider &#8212; das Konzept halte ich f&#252;r sehr wichtig und auch gelngen. Aber immer wieder, wenn ich dann die Implementierung anschaue, dann springt man irgendwo zwischen dieser Default-Implementierung und dem TrackingHeapBlockProvider hin und her &#8212; und der ganze Code &#8222;riecht schief&#8220;, irgendwie (wei&#223; aber nicht warum) ... Hinzu kommen Probleme (und, wie ich inzwischen wei&#223;, tats&#228;chliche Bugs) in der Typ-Registrierung, also BufferMetadata
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1734908668473" ID="ID_1923176208" MODIFIED="1734908680600" TEXT="andererseits sollte man das einfach zusammend&#xe4;ngeln k&#xf6;nnen"/>
<node CREATED="1734908683135" ID="ID_137786655" MODIFIED="1734908706479" TEXT="und dann k&#xf6;nnte man klarer sehen, was die Buffer-Provider default-Implementierung taugt"/>
</node>
<node CREATED="1734915599715" ID="ID_474946221" MODIFIED="1734915618629" TEXT="einen TestData block lokal erstellen"/>
<node CREATED="1734915620001" ID="ID_1943820077" MODIFIED="1734915634306" TEXT="diesen als BuffHandle verpacken"/>
<node CREATED="1734915635847" ID="ID_845883983" MODIFIED="1734915649281" TEXT="auf dem BuffHandle die Protokoll-Schritte durchf&#xfc;hren"/>
<node CREATED="1734915658404" ID="ID_1869375906" MODIFIED="1734915688583" TEXT="den TestData block kontrolliert manipulieren (&#x27f6; TestRandOntology)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1734915691998" ID="ID_878475118" MODIFIED="1734915711342" TEXT="&#xfc;ber einen Listener von den Protokoll-Schritten benachrichtigt werden"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734915714004" ID="ID_1586315790" MODIFIED="1734915746917" TEXT="Proxy-Implementierung &#xfc;ber private BufferProvider-Impl">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</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"/>
<node CREATED="1734902922902" ID="ID_448200491" MODIFIED="1734902938592" TEXT="die ProcNode selber wird zum Einstiegspunkt"/>
<node CREATED="1734902939862" ID="ID_1501484718" MODIFIED="1734902958780" TEXT="in diesem pull()-Aufruf wird das default-TurnoutSystem erstellt"/>
<node CREATED="1734902963799" ID="ID_1944604530" MODIFIED="1734902998934" TEXT="es werden nur die vier inhaltlch notwendigen Parameter &#xfc;bergeben">
<node CREATED="1734903001121" ID="ID_419750327" MODIFIED="1734903005264" TEXT="Port-#"/>
<node CREATED="1734903013442" ID="ID_806136663" MODIFIED="1734903031455" TEXT="BuffHandle"/>
<node CREATED="1734903035099" ID="ID_1398600631" MODIFIED="1734903042072" TEXT="nominalTime"/>
<node CREATED="1734903045004" ID="ID_386220419" MODIFIED="1734903063319" TEXT="(optional) processKey"/>
</node>
</node>
</node>
</node>
</node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785939337" ID="ID_642847753" MODIFIED="1728785947978" TEXT="einfachste Berechnung direkt verifizieren"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785939337" ID="ID_642847753" MODIFIED="1728785947978" TEXT="einfachste Berechnung direkt verifizieren">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
@ -98610,8 +98946,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#fe433f" DESTINATION="ID_1987832971" ENDARROW="Default" ENDINCLINATION="1285;255;" ID="Arrow_ID_284789378" STARTARROW="None" STARTINCLINATION="-530;-37;"/> <arrowlink COLOR="#fe433f" DESTINATION="ID_1987832971" ENDARROW="Default" ENDINCLINATION="1285;255;" ID="Arrow_ID_284789378" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733532021223" ID="ID_635342516" MODIFIED="1733532105787" TEXT="brauche dazu auch ParamAgent"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733532021223" ID="ID_635342516" MODIFIED="1734894065787" TEXT="brauche dazu auch Builder-Zugang mit Param-Functor">
<arrowlink COLOR="#f9407e" DESTINATION="ID_1587342377" ENDARROW="Default" ENDINCLINATION="330;471;" ID="Arrow_ID_316456085" STARTARROW="None" STARTINCLINATION="667;53;"/> <arrowlink COLOR="#f9407e" DESTINATION="ID_1587342377" ENDARROW="Default" ENDINCLINATION="330;471;" ID="Arrow_ID_316456085" STARTARROW="None" STARTINCLINATION="684;35;"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
</node> </node>
@ -99738,6 +100074,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#fe512a" DESTINATION="ID_515736718" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_789124503" SOURCE="ID_1315577261" STARTARROW="None" STARTINCLINATION="-815;60;"/> <linktarget COLOR="#fe512a" DESTINATION="ID_515736718" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_789124503" SOURCE="ID_1315577261" STARTARROW="None" STARTINCLINATION="-815;60;"/>
<icon BUILTIN="bell"/> <icon BUILTIN="bell"/>
</node> </node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_928249123" MODIFIED="1734900226156" TEXT="Problem: Node Storage-Anforderungen">
<linktarget COLOR="#fe512a" DESTINATION="ID_928249123" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1663263974" SOURCE="ID_1940874129" STARTARROW="None" STARTINCLINATION="-841;41;"/>
<icon BUILTIN="bell"/>
</node>
</node> </node>
<node BACKGROUND_COLOR="#c8b6c1" CREATED="1729963571896" HGAP="-82" ID="ID_780325179" MODIFIED="1729963839764" TEXT="Schablone" VSHIFT="23"> <node BACKGROUND_COLOR="#c8b6c1" CREATED="1729963571896" HGAP="-82" ID="ID_780325179" MODIFIED="1729963839764" TEXT="Schablone" VSHIFT="23">
<edge COLOR="#be05a9"/> <edge COLOR="#be05a9"/>