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:
parent
2068278616
commit
33c8f1c5b1
7 changed files with 617 additions and 36 deletions
55
src/steam/engine/buffer-proxy-provider.cpp
Normal file
55
src/steam/engine/buffer-proxy-provider.cpp
Normal 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
|
||||
86
src/steam/engine/buffer-proxy-provider.hpp
Normal file
86
src/steam/engine/buffer-proxy-provider.hpp
Normal 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*/
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
** 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
|
||||
** 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;
|
||||
** 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.
|
||||
|
|
@ -118,7 +118,7 @@ namespace play {
|
|||
public:
|
||||
virtual ~OutputSlot();
|
||||
|
||||
typedef lib::IterSource<DataSink>::iterator OpenedSinks;
|
||||
using OpenedSinks = lib::IterSource<DataSink>::iterator;
|
||||
|
||||
class Allocation
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,12 +17,17 @@ return: 0
|
|||
END
|
||||
|
||||
|
||||
TEST "buffer metadata type keys" BufferMetadataKey_test <<END
|
||||
TEST "Bbuffer metadata type keys" BufferMetadataKey_test <<END
|
||||
return: 0
|
||||
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
|
||||
END
|
||||
|
||||
|
|
|
|||
88
tests/core/steam/engine/buffer-proxy-provider-test.cpp
Normal file
88
tests/core/steam/engine/buffer-proxy-provider-test.cpp
Normal 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
|
||||
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include "lib/test/run.hpp"
|
||||
#include "steam/engine/node-builder.hpp"
|
||||
#include "steam/engine/diagnostic-buffer-provider.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
||||
|
|
@ -63,6 +64,12 @@ namespace test {
|
|||
|
||||
CHECK (watch(node).isSrc());
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28165,9 +28165,7 @@
|
|||
</node>
|
||||
<node COLOR="#338800" CREATED="1677864417723" ID="ID_692056392" MODIFIED="1677864442889">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Style-Klasse: <b><font face="Monospaced">.fork__bracket</font></b>
|
||||
|
|
@ -28798,9 +28796,7 @@
|
|||
<node CREATED="1557435548361" ID="ID_1786798505" MODIFIED="1557498707228" TEXT="würde enable_if brauchen"/>
|
||||
<node CREATED="1557435559616" ID="ID_17287871" MODIFIED="1557498707228" TEXT="Stop">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
steht in keinem Verhältnis zum Zweck
|
||||
|
|
@ -29305,9 +29301,7 @@
|
|||
</node>
|
||||
<node CREATED="1560304412203" FOLDED="true" ID="ID_1976247827" MODIFIED="1561827483833">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Renderer <i>ist</i> bereits der Funktor
|
||||
|
|
@ -30342,9 +30336,7 @@
|
|||
</node>
|
||||
<node CREATED="1672871169883" ID="ID_923032562" MODIFIED="1672871357241" TEXT="mit dieser Korrektur funktioniert die horizontale Scrollbar (halbwegs) wie erwartet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
|
|
@ -31488,9 +31480,7 @@
|
|||
</node>
|
||||
<node COLOR="#338800" CREATED="1563037328957" ID="ID_1150753033" MODIFIED="1563039434820" TEXT="man kann es aber (zurück)setzen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
    for (uint i=0; i<pos; ++i)
|
||||
|
|
@ -32208,9 +32198,7 @@
|
|||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1563831414186" ID="ID_1993035073" MODIFIED="1563831443895" TEXT="wo?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
/home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css
|
||||
|
|
@ -32808,9 +32796,7 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679076581607" ID="ID_808858680" MODIFIED="1679076628793" TEXT="derzeit wird hier keinerlei Overlay gezeichnet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...aber das wird sich ganz gewiß ändern ⟶ Stichwort Bereichsmarkierungen
|
||||
|
|
@ -33578,9 +33564,7 @@
|
|||
<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 überschreitet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
er wird von GTK eigentlich korrekt über die Nachbarbereiche darüber gezeichnet.
|
||||
|
|
@ -88795,15 +88779,19 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1734881815740" ID="ID_162927427" MODIFIED="1734881825221" TEXT="baue eine Node">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734893681253" ID="ID_22640844" MODIFIED="1734894128783" TEXT="der letzte Schrit bis zur Invocation...">
|
||||
<arrowlink COLOR="#462fca" DESTINATION="ID_1390040531" ENDARROW="Default" ENDINCLINATION="-1708;-131;" ID="Arrow_ID_25129790" STARTARROW="None" STARTINCLINATION="339;26;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
</node>
|
||||
<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="-1070;72;" ID="Arrow_ID_71441743" SOURCE="ID_985974600" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</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="#fe433f" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="1490;75;" ID="Arrow_ID_570772162" SOURCE="ID_1587342377" STARTARROW="None" STARTINCLINATION="-530;-37;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -94449,6 +94437,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node BACKGROUND_COLOR="#eadca7" COLOR="#690f14" CREATED="1734900837143" HGAP="32" ID="ID_1904321525" LINK="#ID_670416401" MODIFIED="1734900885391" TEXT="letztlich diese Lösung gewählt" VSHIFT="12"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1721956892200" FOLDED="true" ID="ID_1451110951" MODIFIED="1722470788939" TEXT="strukturell wäre das Spezial-Tag die beste Lösung">
|
||||
|
|
@ -94723,7 +94712,9 @@ Date:   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="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="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="1722279985641" ID="ID_1333031416" MODIFIED="1722280003882" TEXT="dieses ist so verdrahtet, daß es den emit()-Aufruf weitergibt"/>
|
||||
</node>
|
||||
|
|
@ -94805,7 +94796,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722444704965" ID="ID_329807269" MODIFIED="1722444730742" TEXT="Aber: nicht den BufferProvider austauschen, sondern bloß das BuffHandle"/>
|
||||
<node CREATED="1722445156984" ID="ID_204443476" MODIFIED="1722445177473" TEXT="der spezielle BufferProvider würde außerhalb, im Top-Level verwendet"/>
|
||||
<node CREATED="1722445156984" ID="ID_204443476" MODIFIED="1734901315145" TEXT="der spezielle BufferProvider würde auß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ägt die Brü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>
|
||||
|
|
@ -95300,7 +95296,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721003681836" ID="ID_536010685" MODIFIED="1721061587708" TEXT="erst mal: Bulk-Konfig für alle">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#5b280f" CREATED="1734742891965" ID="ID_1804383886" MODIFIED="1734743139622" TEXT="für den ersten Prototyp: sinvolle Buffer-Descriptoren einfüllen">
|
||||
<node COLOR="#5b280f" CREATED="1734742891965" ID="ID_1804383886" MODIFIED="1734901268707" TEXT="für den ersten Prototyp: sinvolle Buffer-Descriptoren einfüllen">
|
||||
<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"/>
|
||||
</node>
|
||||
|
|
@ -97826,7 +97822,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="flag-pink"/>
|
||||
<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;"/>
|
||||
<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"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1733532910801" ID="ID_1860532476" MODIFIED="1733533358706" TEXT="brauche unmittelbar als Nä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;"/>
|
||||
|
|
@ -97851,6 +97847,346 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</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üßte doch <i>im Prinzip</i> 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ücke zwischen Port-API und Node-API schließen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1734894196608" ID="ID_1878550252" MODIFIED="1734894248208" TEXT="Port::weave (TurnoutSystem&, OptionalBuff)">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1734894255065" ID="ID_13856620" MODIFIED="1734894266745" TEXT="using OptionalBuff = std::optional<BuffHandle>;"/>
|
||||
<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> 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ü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 »Testen« ein use-Case?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1734894495021" ID="ID_497362096" MODIFIED="1734894516120" TEXT="wenn ja ⟹ dann wird das ein Durchreiche-API"/>
|
||||
<node CREATED="1734894519908" ID="ID_265577496" MODIFIED="1734894532206" TEXT="wenn nein ⟹ dann wird das ein point-and-shot-API"/>
|
||||
<node CREATED="1734894558814" ID="ID_1672280670" MODIFIED="1734894571771" TEXT="in letzterem Fall wü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ürde mir eigentlich gefallen ⟹ 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ß "Ja""/>
|
||||
<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üssen</b> 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ü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> freier Slot übrig
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1734895608473" ID="ID_1542458027" MODIFIED="1734895628786" TEXT="daraus könnte man zwei Schlü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äre dann die ProcNode tot">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
</node>
|
||||
<node CREATED="1734895692438" ID="ID_295093492" MODIFIED="1734895707944" TEXT="und der Port wä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 ������">
|
||||
<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äre dann eine Art »Transport-Encoding«"/>
|
||||
<node CREATED="1734895829903" ID="ID_811772218" MODIFIED="1734895846922" TEXT="dieser Funktor wü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ür jede und für jedes Segment habe ich <i>eine </i>Exit-Node.
|
||||
</p>
|
||||
<p>
|
||||
⟹ Also ~ 2000 pro Timeline
|
||||
</p>
|
||||
<p>
|
||||
Das multipliziert nochmal mit ~20 Ports (Video, Audio, R,G,B,α, 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ür die Ports tut weh">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und zwar wegen den Subgruppen und Probe-Points, die eben keinesfalls beschränkt werden dü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ßerdem müßte dann dort ja auch wieder das cartesische Produkt gespeichert werden, denn es sind ja grade alle möglichen Ports mö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ü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ährlicher Hebel durch Komplexität im Edit-Projekt">
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734897994143" ID="ID_1273692291" MODIFIED="1734898015323" TEXT="demgegenüber sind Sorgen wegen Exit-Nodes irgendwie sekundä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 „vernünftigen Leute“ sowiso machen — 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ösen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Also einen Post-Processing-Schritt, der die gleiche Ausführungs-Logik effizienter im Speicher codiert
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Flyweight-Pattern zur Deduplikation anwenden
|
||||
</li>
|
||||
<li>
|
||||
VTables o.ä. wo möglich durch Funktionspointer ersetzen
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Das könnte ggfs. sogar eine automatische Transformation sein, auf Basis des jetzt definierten Node-Modells; man würde dann eine DAG ⟼ Tree -Transformation machen und dann die jeweilge ausführbare Node über ein Lambda-Binding ü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öffnetes BuffHandle">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
alles andere wü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öglicherweise genügt hier aber ein limitierter Adapter">
|
||||
<icon BUILTIN="idea"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1734901435199" ID="ID_687178748" MODIFIED="1734901453728" TEXT="der ganze »Registrierungs«-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 — 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 ⟹ DiagnosticBufferProvider"/>
|
||||
<node CREATED="1734907740525" ID="ID_98128013" MODIFIED="1734907768212" TEXT="später mal.... wird ein realer Output so einen Proxy-Provider implementieren müssen">
|
||||
<node BACKGROUND_COLOR="#ccc999" COLOR="#34a881" CREATED="1734916937062" HGAP="36" ID="ID_1073109637" MODIFIED="1734917045148" TEXT="oh... oh ... ich rieche »design smell«" 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-Übung: ProxyProvider implementieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Ich hatte schon angefangen, über der mögilchen Implementierung zu »brüten« und mich wieder in BufferProvider + OutputSlot eingelesen. Erst nach etwa einer Stunde ist mir aufgefallen, daß OutputSlot ja eine DataSink erzeugt, und daß diese bereits eine <font face="Monospaced" color="#572d2d">lockBufferFor(FrameID)</font>-Funktion hat, die ein (TADAA!) BuffHandle liefert. Nicht wirklich ü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 „aus dem Ärmel schütteln“...
|
||||
</p>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
Heute aber kommt mir dieser ganze Zusammenhang ziemlich »anrüchig« vor. Ich war inzwischen x-mal in der Analyse in die Falle gegangen, den BufferProvider mit dem Output-Management zu verwechseln — und dann immer wieder festgestellt, daß <b>beide auf komplett andere Architektur-Ebenen gehören</b>....
|
||||
</p>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
Deshalb möchte ich nun doch einmal aus-implementieren, was denn erforderlich wäre, einen <b>frei-stehenden</b> 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ü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ächlich zu unterstü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 ⟹ 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ü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ü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ämlich gewisse Zweifel">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und zwar schon längere Zeit bezüglich der <i>Implementierung</i>  des BufferProvider — das Konzept halte ich fü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 — und der ganze Code „riecht schief“, irgendwie (weiß aber nicht warum) ... Hinzu kommen Probleme (und, wie ich inzwischen weiß, tatsä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ängeln können"/>
|
||||
<node CREATED="1734908683135" ID="ID_137786655" MODIFIED="1734908706479" TEXT="und dann kö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ühren"/>
|
||||
<node CREATED="1734915658404" ID="ID_1869375906" MODIFIED="1734915688583" TEXT="den TestData block kontrolliert manipulieren (⟶ TestRandOntology)">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1734915691998" ID="ID_878475118" MODIFIED="1734915711342" TEXT="ü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 ü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ß">
|
||||
<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 ü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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785939337" ID="ID_642847753" MODIFIED="1728785947978" TEXT="einfachste Berechnung direkt verifizieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -98610,8 +98946,8 @@ Date:   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;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733532021223" ID="ID_635342516" MODIFIED="1733532105787" TEXT="brauche dazu auch ParamAgent">
|
||||
<arrowlink COLOR="#f9407e" DESTINATION="ID_1587342377" ENDARROW="Default" ENDINCLINATION="330;471;" ID="Arrow_ID_316456085" STARTARROW="None" STARTINCLINATION="667;53;"/>
|
||||
<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="684;35;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -99738,6 +100074,10 @@ Date:   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;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
</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 BACKGROUND_COLOR="#c8b6c1" CREATED="1729963571896" HGAP="-82" ID="ID_780325179" MODIFIED="1729963839764" TEXT="Schablone" VSHIFT="23">
|
||||
<edge COLOR="#be05a9"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue