BufferProvider: start planning for the memory handling part
As staring point, it is clear that the `BufferStore` side of the implementation will rely on a similar structure with a thread-local base service — which in this case will have to maintain a small pool of recently used buffer allocations...
This commit is contained in:
parent
3b7877204d
commit
e277913e22
7 changed files with 494 additions and 29 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
SIMPLE-BUFFER-STATE-REGISTRY.hpp - buffer state management with thread-local sub-services
|
LOCAL-BUFFER-STAGE.hpp - buffer state management with thread-local sub-services
|
||||||
|
|
||||||
Copyright (C)
|
Copyright (C)
|
||||||
2026 Hermann Vosseler <Ichthyostega@web.de>
|
2026 Hermann Vosseler <Ichthyostega@web.de>
|
||||||
|
|
|
||||||
53
src/vault/mem/local-buffer-store.hpp
Normal file
53
src/vault/mem/local-buffer-store.hpp
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
LOCAL-BUFFER-STORE.hpp - buffer memory handling with thread-local sub-services
|
||||||
|
|
||||||
|
Copyright (C)
|
||||||
|
2026 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 local-buffer-store.hpp
|
||||||
|
** Production-grade implementation of engine::BufferProvider memory handling.
|
||||||
|
**
|
||||||
|
** @see LocalBufferStore_test
|
||||||
|
** @see buffer-provider.hpp
|
||||||
|
** @see buffer-provider-protocol-test.cpp
|
||||||
|
** @see simple-buffer-state-registry.hpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VAULT_MEM_LOCAL_BUFFER_STORE_H
|
||||||
|
#define VAULT_MEM_LOCAL_BUFFER_STORE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "vault/mem/buffer-provider-setup.hpp"
|
||||||
|
#include "vault/mem/buffhandle.hpp" ///////////////TODO
|
||||||
|
#include "lib/local-slice.hpp"
|
||||||
|
#include "lib/depend.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace vault {
|
||||||
|
namespace mem {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @todo type comment
|
||||||
|
*/
|
||||||
|
class LocalBufferStore
|
||||||
|
: public BufferProviderSetup::Store
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
LocalBufferStore()
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}} // namespace vault::mem
|
||||||
|
#endif /*VAULT_MEM_LOCAL_BUFFER_STORE_H*/
|
||||||
55
src/vault/mem/local-mem-pool.hpp
Normal file
55
src/vault/mem/local-mem-pool.hpp
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*
|
||||||
|
LOCAL-MEM-POOL.hpp - working pool of buffer allocations for local reuse
|
||||||
|
|
||||||
|
Copyright (C)
|
||||||
|
2026 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 local-mem-pool.hpp
|
||||||
|
** A local cache of buffer allocations to facilitate reuse of memory in a worker.
|
||||||
|
**
|
||||||
|
** @see local-mem-pool-test.cpp
|
||||||
|
** @see local-buffer-store.hpp
|
||||||
|
** @see buffer-provider.hpp
|
||||||
|
** @see buffer-provider-protocol-test.cpp
|
||||||
|
** @see simple-buffer-state-registry.hpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VAULT_MEM_LOCAL_MEM_POOL_H
|
||||||
|
#define VAULT_MEM_LOCAL_MEM_POOL_H
|
||||||
|
|
||||||
|
|
||||||
|
//#include "vault/mem/buffer-provider-setup.hpp"
|
||||||
|
//#include "vault/mem/engine-buffer-metadata.hpp"
|
||||||
|
//#include "vault/mem/buffer-metadata.hpp"
|
||||||
|
#include "vault/mem/buffhandle.hpp" //////////////TODO
|
||||||
|
//#include "lib/local-slice.hpp"
|
||||||
|
//#include "lib/depend.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace vault {
|
||||||
|
namespace mem {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Low-level Building block for Render Engine memory management.
|
||||||
|
*/
|
||||||
|
class LocalMemPool
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
LocalMemPool()
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}} // namespace vault::mem
|
||||||
|
#endif /*VAULT_MEM_LOCAL_MEM_POOL_H*/
|
||||||
|
|
@ -77,6 +77,16 @@ return: 0
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
TEST "Local buffer memory handling" LocalBufferStore_test <<END
|
||||||
|
return: 0
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
TEST "Local pool for buffer memory" LocalMemPool_test <<END
|
||||||
|
return: 0
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
TEST "Mock support for render job planning" MockSupport_test <<END
|
TEST "Mock support for render job planning" MockSupport_test <<END
|
||||||
return: 0
|
return: 0
|
||||||
END
|
END
|
||||||
|
|
|
||||||
94
tests/vault/mem/local-buffer-store-test.cpp
Normal file
94
tests/vault/mem/local-buffer-store-test.cpp
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
LocalBufferStore(Test) - verify thread-local buffer memory allocator proxy
|
||||||
|
|
||||||
|
Copyright (C)
|
||||||
|
2026, 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 local-buffer-store-test.cpp
|
||||||
|
** unit test \ref LocalBufferStore_test
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "test/run.hpp"
|
||||||
|
#include "test/test-helper.hpp"
|
||||||
|
//#include "vault/mem/engine-buffer-metadata.hpp"
|
||||||
|
#include "vault/mem/local-buffer-store.hpp"
|
||||||
|
//#include "lib/depend-inject.hpp"
|
||||||
|
//#include "lib/thread.hpp"
|
||||||
|
//#include "lib/error.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
//using std::this_thread::yield;
|
||||||
|
//using lib::Thread;
|
||||||
|
|
||||||
|
namespace vault {
|
||||||
|
namespace mem {
|
||||||
|
namespace test {
|
||||||
|
|
||||||
|
// using LERR_(LOGIC);
|
||||||
|
// using LERR_(LIFECYCLE);
|
||||||
|
|
||||||
|
|
||||||
|
namespace { // Test helper
|
||||||
|
|
||||||
|
// template<typename X>
|
||||||
|
// Buff*
|
||||||
|
// mark_as_Buffer(X& something)
|
||||||
|
// {
|
||||||
|
// return reinterpret_cast<Buff*> (std::addressof(something));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************//**
|
||||||
|
* @test verify worker memory handling that relies on a thread-local allocator.
|
||||||
|
*/
|
||||||
|
class LocalBufferStore_test : public Test
|
||||||
|
{
|
||||||
|
|
||||||
|
virtual void
|
||||||
|
run (Arg)
|
||||||
|
{
|
||||||
|
seedRand();
|
||||||
|
|
||||||
|
verify_DataTransfer();
|
||||||
|
verify_lulz();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
void
|
||||||
|
verify_DataTransfer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @test
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
verify_lulz()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/** Register this test class... */
|
||||||
|
LAUNCHER (LocalBufferStore_test, "unit engine");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}}} // namespace vault::mem::test
|
||||||
94
tests/vault/mem/local-mem-pool-test.cpp
Normal file
94
tests/vault/mem/local-mem-pool-test.cpp
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
LocalMemPool(Test) - verify low-level handling of buffer blocks in a local pool
|
||||||
|
|
||||||
|
Copyright (C)
|
||||||
|
2026, 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 local-mem-pool-test.cpp
|
||||||
|
** unit test \ref LocalMemPool_test
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "test/run.hpp"
|
||||||
|
#include "test/test-helper.hpp"
|
||||||
|
//#include "vault/mem/engine-buffer-metadata.hpp"
|
||||||
|
#include "vault/mem/local-mem-pool.hpp"
|
||||||
|
//#include "lib/depend-inject.hpp"
|
||||||
|
//#include "lib/thread.hpp"
|
||||||
|
//#include "lib/error.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
//using std::this_thread::yield;
|
||||||
|
//using lib::Thread;
|
||||||
|
|
||||||
|
namespace vault {
|
||||||
|
namespace mem {
|
||||||
|
namespace test {
|
||||||
|
|
||||||
|
// using LERR_(LOGIC);
|
||||||
|
// using LERR_(LIFECYCLE);
|
||||||
|
|
||||||
|
|
||||||
|
namespace { // Test helper
|
||||||
|
|
||||||
|
// template<typename X>
|
||||||
|
// Buff*
|
||||||
|
// mark_as_Buffer(X& something)
|
||||||
|
// {
|
||||||
|
// return reinterpret_cast<Buff*> (std::addressof(something));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************//**
|
||||||
|
* @test verify handling of prospective buffer allocations in a local pool.
|
||||||
|
*/
|
||||||
|
class LocalMemPool_test : public Test
|
||||||
|
{
|
||||||
|
|
||||||
|
virtual void
|
||||||
|
run (Arg)
|
||||||
|
{
|
||||||
|
seedRand();
|
||||||
|
|
||||||
|
verify_blah();
|
||||||
|
verify_lolz();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
void
|
||||||
|
verify_blah()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @test
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
verify_lolz()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/** Register this test class... */
|
||||||
|
LAUNCHER (LocalMemPool_test, "unit engine");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}}} // namespace vault::mem::test
|
||||||
|
|
@ -74191,7 +74191,8 @@
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1716728664652" ID="ID_1644685634" MODIFIED="1716728666879" TEXT="Strukturen">
|
<node CREATED="1716728664652" ID="ID_1644685634" MODIFIED="1776730151948" TEXT="Strukturen">
|
||||||
|
<linktarget COLOR="#5c6c7a" DESTINATION="ID_1644685634" ENDARROW="Default" ENDINCLINATION="-892;2424;" ID="Arrow_ID_284707831" SOURCE="ID_622928577" STARTARROW="None" STARTINCLINATION="-1922;116;"/>
|
||||||
<node CREATED="1716728667779" ID="ID_467995115" MODIFIED="1716728670092" TEXT="Namen">
|
<node CREATED="1716728667779" ID="ID_467995115" MODIFIED="1716728670092" TEXT="Namen">
|
||||||
<node CREATED="1716728670955" ID="ID_1816165091" MODIFIED="1716728689109">
|
<node CREATED="1716728670955" ID="ID_1816165091" MODIFIED="1716728689109">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
|
|
@ -104114,7 +104115,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734633240020" ID="ID_1833389965" MODIFIED="1734633492466" TEXT="Dokumentation FeedManifold">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734633240020" ID="ID_1833389965" MODIFIED="1776722093773" TEXT="Dokumentation FeedManifold">
|
||||||
<linktarget COLOR="#82878e" DESTINATION="ID_1833389965" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_1228391309" SOURCE="ID_1954201095" STARTARROW="None" STARTINCLINATION="1447;0;"/>
|
<linktarget COLOR="#82878e" DESTINATION="ID_1833389965" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_1228391309" SOURCE="ID_1954201095" STARTARROW="None" STARTINCLINATION="1447;0;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node COLOR="#435e98" CREATED="1734633366137" ID="ID_1795683894" MODIFIED="1734633419361" TEXT="beispielhafte Demonstration im NodeBase_test">
|
<node COLOR="#435e98" CREATED="1734633366137" ID="ID_1795683894" MODIFIED="1734633419361" TEXT="beispielhafte Demonstration im NodeBase_test">
|
||||||
|
|
@ -143866,8 +143867,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1770828120216" ID="ID_1112258994" MODIFIED="1770828480214" TEXT="vorläufige Implementierung">
|
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1770828120216" ID="ID_1112258994" MODIFIED="1770828480214" TEXT="vorläufige Implementierung">
|
||||||
<icon BUILTIN="hourglass"/>
|
<icon BUILTIN="hourglass"/>
|
||||||
<node CREATED="1771434625350" ID="ID_87043838" MODIFIED="1771434634233" TEXT="vorgreifende Vereinfachungen">
|
<node CREATED="1771434625350" ID="ID_87043838" MODIFIED="1776718387608" TEXT="vorgreifende Vereinfachungen">
|
||||||
<node CREATED="1771434938648" ID="ID_598910343" MODIFIED="1771435079926" TEXT="Anouncements ignorieren und jeweils per Heap allozieren">
|
<arrowlink COLOR="#1d52cb" DESTINATION="ID_675333491" ENDARROW="Default" ENDINCLINATION="-1046;-49;" ID="Arrow_ID_1903219737" STARTARROW="None" STARTINCLINATION="178;997;"/>
|
||||||
|
<node CREATED="1771434938648" ID="ID_598910343" MODIFIED="1776718297756" TEXT="Anouncements ignorieren und jeweils per Heap allozieren">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -143876,9 +143878,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
|
<icon BUILTIN="full-1"/>
|
||||||
<icon BUILTIN="forward"/>
|
<icon BUILTIN="forward"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1771434732657" ID="ID_1779414160" MODIFIED="1771435551701" TEXT="Verwaltung nur lokal im Thread">
|
<node CREATED="1771434732657" ID="ID_1779414160" MODIFIED="1776718304320" TEXT="Verwaltung nur lokal im Thread">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -143887,6 +143890,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
|
<icon BUILTIN="full-2"/>
|
||||||
|
<icon BUILTIN="hourglass"/>
|
||||||
<node CREATED="1771434757430" ID="ID_460264122" MODIFIED="1771434936057" TEXT="es gibt dort bereits ein gewisses Pooling">
|
<node CREATED="1771434757430" ID="ID_460264122" MODIFIED="1771434936057" TEXT="es gibt dort bereits ein gewisses Pooling">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
|
|
@ -143899,7 +143904,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1771434769658" ID="ID_830753719" MODIFIED="1771434796468" TEXT="aber neu-Allokationen und Freigaben passieren direkt per Heap-Memory"/>
|
<node CREATED="1771434769658" ID="ID_830753719" MODIFIED="1771434796468" TEXT="aber neu-Allokationen und Freigaben passieren direkt per Heap-Memory"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1771435088490" ID="ID_1084049036" MODIFIED="1771435456405" TEXT="Zentraler Pool arbeitet identisch wie die thread-lokale Verwaltung">
|
<node CREATED="1771435088490" ID="ID_1084049036" MODIFIED="1776718310328" TEXT="Zentraler Pool arbeitet identisch wie die thread-lokale Verwaltung">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -143908,6 +143913,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
|
<icon BUILTIN="full-3"/>
|
||||||
|
<icon BUILTIN="hourglass"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1776195345475" ID="ID_773105612" MODIFIED="1776195351345" TEXT="Problem der Code-Struktur">
|
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1776195345475" ID="ID_773105612" MODIFIED="1776195351345" TEXT="Problem der Code-Struktur">
|
||||||
|
|
@ -144148,6 +144155,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
</node>
|
</node>
|
||||||
|
<node CREATED="1776718003509" ID="ID_647108530" MODIFIED="1776718243116" TEXT="nach Durcharbeiten eines Prototypen ⟶ viel weniger dramatisch"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1776305000767" ID="ID_1274607292" MODIFIED="1776305029772" TEXT="mein Bauchgefühl sagt, ich sollte das notieren und dann weiter gehen">
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1776305000767" ID="ID_1274607292" MODIFIED="1776305029772" TEXT="mein Bauchgefühl sagt, ich sollte das notieren und dann weiter gehen">
|
||||||
|
|
@ -144223,7 +144231,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1776204526672" ID="ID_961403309" MODIFIED="1776477618192" TEXT="Prototyping (testgetrieben)">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1776204526672" ID="ID_961403309" MODIFIED="1776477618192" TEXT="Prototyping (testgetrieben)">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1776293021744" ID="ID_290625266" MODIFIED="1776522855937" TEXT="Problem: dieses Setup ist effektiv statisch/global">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1776293021744" ID="ID_290625266" MODIFIED="1776717333143" TEXT="Problem: dieses Setup ist effektiv statisch/global">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -144238,7 +144246,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<arrowlink COLOR="#a61032" DESTINATION="ID_808171568" ENDARROW="Default" ENDINCLINATION="11;-94;" ID="Arrow_ID_66477268" STARTARROW="None" STARTINCLINATION="259;15;"/>
|
<arrowlink COLOR="#a61032" DESTINATION="ID_808171568" ENDARROW="Default" ENDINCLINATION="11;-94;" ID="Arrow_ID_66477268" STARTARROW="None" STARTINCLINATION="257;14;"/>
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1776204565654" ID="ID_45614742" MODIFIED="1776522493293" TEXT="generischer Slice">
|
<node COLOR="#338800" CREATED="1776204565654" ID="ID_45614742" MODIFIED="1776522493293" TEXT="generischer Slice">
|
||||||
|
|
@ -144248,8 +144256,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
<node CREATED="1776292987880" ID="ID_808037956" MODIFIED="1776477504910" TEXT="Zugriff über Pointer-artige Syntax">
|
<node CREATED="1776292987880" ID="ID_808037956" MODIFIED="1776477504910" TEXT="Zugriff über Pointer-artige Syntax">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1776293021744" ID="ID_808171568" MODIFIED="1776522852160" TEXT="Problem: thread_local ist implizit statisch">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1776293021744" FOLDED="true" ID="ID_808171568" MODIFIED="1776717333143" TEXT="Problem: thread_local ist implizit statisch">
|
||||||
<linktarget COLOR="#a61032" DESTINATION="ID_808171568" ENDARROW="Default" ENDINCLINATION="11;-94;" ID="Arrow_ID_66477268" SOURCE="ID_290625266" STARTARROW="None" STARTINCLINATION="259;15;"/>
|
<linktarget COLOR="#a61032" DESTINATION="ID_808171568" ENDARROW="Default" ENDINCLINATION="11;-94;" ID="Arrow_ID_66477268" SOURCE="ID_290625266" STARTARROW="None" STARTINCLINATION="257;14;"/>
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
<node CREATED="1776293040334" ID="ID_555811092" MODIFIED="1776293060463" TEXT="das heißt es ist eine »versteckte globale Variable«"/>
|
<node CREATED="1776293040334" ID="ID_555811092" MODIFIED="1776293060463" TEXT="das heißt es ist eine »versteckte globale Variable«"/>
|
||||||
<node CREATED="1776295872712" ID="ID_906429004" MODIFIED="1776295889501" TEXT="stellt das für den konkteten Use-Case überhaupt eine Beschränkung dar?">
|
<node CREATED="1776295872712" ID="ID_906429004" MODIFIED="1776295889501" TEXT="stellt das für den konkteten Use-Case überhaupt eine Beschränkung dar?">
|
||||||
|
|
@ -144300,7 +144308,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776438434768" ID="ID_983236748" MODIFIED="1776438441595" TEXT="Definition und Verwendung">
|
<node CREATED="1776438434768" ID="ID_983236748" MODIFIED="1776438441595" TEXT="Definition und Verwendung">
|
||||||
<node CREATED="1776438447894" ID="ID_1968488456" MODIFIED="1776438567887" TEXT="verwendet sinnvollerweise einen CONF-Typparameter">
|
<node COLOR="#5b280f" CREATED="1776438447894" ID="ID_1968488456" MODIFIED="1776716436255" TEXT="verwendet sinnvollerweise einen CONF-Typparameter">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
<body>
|
<body>
|
||||||
|
|
@ -144309,6 +144317,11 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
|
<icon BUILTIN="button_cancel"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776716439084" ID="ID_224588412" MODIFIED="1776716578096" TEXT="Kompromiß: eine Definition LocalSlice<SRV, CONF> ist klarer — und CONF hat Default">
|
||||||
|
<arrowlink COLOR="#6fa89b" DESTINATION="ID_69243918" ENDARROW="Default" ENDINCLINATION="22;-44;" ID="Arrow_ID_1076534574" STARTARROW="None" STARTINCLINATION="-123;4;"/>
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776438572468" ID="ID_1804894411" MODIFIED="1776438590402" TEXT="die einzelne Instanz ist Monostate und default-konstruierbar und kopierbar"/>
|
<node CREATED="1776438572468" ID="ID_1804894411" MODIFIED="1776438590402" TEXT="die einzelne Instanz ist Monostate und default-konstruierbar und kopierbar"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -144328,7 +144341,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
<node CREATED="1776474854867" ID="ID_1487038882" MODIFIED="1776474859837" TEXT="CONF">
|
<node CREATED="1776474854867" ID="ID_1487038882" MODIFIED="1776474859837" TEXT="CONF">
|
||||||
<node CREATED="1776474861216" ID="ID_399712480" MODIFIED="1776474870435" TEXT="typedef Service"/>
|
<node CREATED="1776474861216" ID="ID_399712480" MODIFIED="1776474870435" TEXT="typedef Service"/>
|
||||||
<node CREATED="1776474871327" ID="ID_142831800" MODIFIED="1776474879674" TEXT="eine init-Funktion"/>
|
<node CREATED="1776474871327" ID="ID_142831800" MODIFIED="1776474879674" TEXT="eine init-Funktion"/>
|
||||||
<node COLOR="#338800" CREATED="1776518244557" ID="ID_69243918" MODIFIED="1776522105417" TEXT="Verbesserung : Setup für Service-Typ">
|
<node COLOR="#338800" CREATED="1776518244557" FOLDED="true" ID="ID_69243918" MODIFIED="1776716567158" TEXT="Verbesserung : Setup für Service-Typ">
|
||||||
|
<linktarget COLOR="#6fa89b" DESTINATION="ID_69243918" ENDARROW="Default" ENDINCLINATION="22;-44;" ID="Arrow_ID_1076534574" SOURCE="ID_224588412" STARTARROW="None" STARTINCLINATION="-123;4;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1776518286073" ID="ID_992160718" MODIFIED="1776518303060" TEXT="LocalSlice<SRV>"/>
|
<node CREATED="1776518286073" ID="ID_992160718" MODIFIED="1776518303060" TEXT="LocalSlice<SRV>"/>
|
||||||
<node CREATED="1776518303809" ID="ID_1039989287" MODIFIED="1776518323133" TEXT="normalerweise genügt ein default-Setup-Template"/>
|
<node CREATED="1776518303809" ID="ID_1039989287" MODIFIED="1776518323133" TEXT="normalerweise genügt ein default-Setup-Template"/>
|
||||||
|
|
@ -144364,7 +144378,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1776474884669" ID="ID_66962199" MODIFIED="1776477543983" TEXT="LocalSlice_test">
|
<node COLOR="#338800" CREATED="1776474884669" FOLDED="true" ID="ID_66962199" MODIFIED="1776717007045" TEXT="LocalSlice_test">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1776474892988" ID="ID_1841154811" MODIFIED="1776474911245" TEXT="verwende ein Backend das eine Variable inkrementiert"/>
|
<node CREATED="1776474892988" ID="ID_1841154811" MODIFIED="1776474911245" TEXT="verwende ein Backend das eine Variable inkrementiert"/>
|
||||||
<node CREATED="1776474912122" ID="ID_225188556" MODIFIED="1776474931651" TEXT="verwende einen front-End-Service, der das Backend mehrfach aufruft"/>
|
<node CREATED="1776474912122" ID="ID_225188556" MODIFIED="1776474931651" TEXT="verwende einen front-End-Service, der das Backend mehrfach aufruft"/>
|
||||||
|
|
@ -144405,13 +144419,18 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776204569932" ID="ID_1285006287" MODIFIED="1776204574453" TEXT="Stage-Slice">
|
<node COLOR="#338800" CREATED="1776204569932" ID="ID_1285006287" MODIFIED="1776717570113" TEXT="Technologie: lokaler Metadaten-Store">
|
||||||
<node COLOR="#338800" CREATED="1776522893322" ID="ID_1694212347" MODIFIED="1776566332195" TEXT="BufferMetadata um Migration erweitern">
|
<linktarget COLOR="#3c578a" DESTINATION="ID_1285006287" ENDARROW="Default" ENDINCLINATION="-27;32;" ID="Arrow_ID_145731778" SOURCE="ID_292130223" STARTARROW="None" STARTINCLINATION="-327;39;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1776556044669" ID="ID_857328588" MODIFIED="1776556055571" TEXT="Begriff: Key-chain">
|
<node COLOR="#338800" CREATED="1776522893322" FOLDED="true" ID="ID_1694212347" MODIFIED="1776717948394" TEXT="BufferMetadata um Migration erweitern">
|
||||||
|
<linktarget COLOR="#d9fdb2" DESTINATION="ID_1694212347" ENDARROW="Default" ENDINCLINATION="-99;6;" ID="Arrow_ID_1098636138" SOURCE="ID_1413251785" STARTARROW="None" STARTINCLINATION="-278;-12;"/>
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
<node CREATED="1776556044669" ID="ID_857328588" MODIFIED="1776717311121" TEXT="Begriff: Key-chain">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
<node CREATED="1776556089572" ID="ID_565019641" MODIFIED="1776556103328" TEXT="ein Entry mit allen seinen Parent-Entries"/>
|
<node CREATED="1776556089572" ID="ID_565019641" MODIFIED="1776556103328" TEXT="ein Entry mit allen seinen Parent-Entries"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776556171704" ID="ID_1788136226" MODIFIED="1776556247063" TEXT="Zweck: Abgleich zwischen zwei Metadata-Tabellen">
|
<node CREATED="1776556171704" ID="ID_1788136226" MODIFIED="1776717303124" TEXT="Zweck: Abgleich zwischen zwei Metadata-Tabellen">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
<node CREATED="1776556712396" ID="ID_346498254" MODIFIED="1776556720533" TEXT="Ergänzen fehlender Informationen"/>
|
<node CREATED="1776556712396" ID="ID_346498254" MODIFIED="1776556720533" TEXT="Ergänzen fehlender Informationen"/>
|
||||||
<node CREATED="1776556725461" ID="ID_154374768" MODIFIED="1776556776087" TEXT="beschränkter Abgleich bestimmter Daten"/>
|
<node CREATED="1776556725461" ID="ID_154374768" MODIFIED="1776556776087" TEXT="beschränkter Abgleich bestimmter Daten"/>
|
||||||
<node CREATED="1776556777026" ID="ID_441313668" MODIFIED="1776556800521" TEXT="Exception falls inkonsistenter Abgleich verlangt wird">
|
<node CREATED="1776556777026" ID="ID_441313668" MODIFIED="1776556800521" TEXT="Exception falls inkonsistenter Abgleich verlangt wird">
|
||||||
|
|
@ -144488,7 +144507,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1776566422332" ID="ID_773286904" MODIFIED="1776707180399" TEXT="Verbindung zur zentral-Registry">
|
<node COLOR="#338800" CREATED="1776566422332" ID="ID_773286904" MODIFIED="1776707180399" TEXT="Verbindung zur zentral-Registry">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#435e98" CREATED="1776566441432" ID="ID_83703051" MODIFIED="1776707176040" TEXT="neue Typ-Registrierung im Thread ⟹ zur Zentrale publiziert">
|
<node COLOR="#435e98" CREATED="1776566441432" FOLDED="true" ID="ID_83703051" MODIFIED="1776717324379" TEXT="neue Typ-Registrierung im Thread ⟹ zur Zentrale publiziert">
|
||||||
<node CREATED="1776604591195" ID="ID_1133340482" MODIFIED="1776604688880" TEXT="brauche dafür die zentralen EngineMetadata">
|
<node CREATED="1776604591195" ID="ID_1133340482" MODIFIED="1776604688880" TEXT="brauche dafür die zentralen EngineMetadata">
|
||||||
<node COLOR="#5b280f" CREATED="1776604776169" ID="ID_1295263836" MODIFIED="1776604807258" TEXT="Aua — jetzt gibt's doch eine statische Initialisierung">
|
<node COLOR="#5b280f" CREATED="1776604776169" ID="ID_1295263836" MODIFIED="1776604807258" TEXT="Aua — jetzt gibt's doch eine statische Initialisierung">
|
||||||
<icon BUILTIN="button_cancel"/>
|
<icon BUILTIN="button_cancel"/>
|
||||||
|
|
@ -144565,7 +144584,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1776566459396" ID="ID_20651536" MODIFIED="1776707176041" TEXT="Verwendung im Thread ⟸ Typ aus Zentrale synchronisiert">
|
<node COLOR="#435e98" CREATED="1776566459396" FOLDED="true" ID="ID_20651536" MODIFIED="1776717325670" TEXT="Verwendung im Thread ⟸ Typ aus Zentrale synchronisiert">
|
||||||
<node COLOR="#435e98" CREATED="1776704448745" ID="ID_1701721015" MODIFIED="1776707039908" TEXT="wo wird der down-sync eingeschleift?">
|
<node COLOR="#435e98" CREATED="1776704448745" ID="ID_1701721015" MODIFIED="1776707039908" TEXT="wo wird der down-sync eingeschleift?">
|
||||||
<icon BUILTIN="help"/>
|
<icon BUILTIN="help"/>
|
||||||
<node CREATED="1776704463019" ID="ID_1647332020" MODIFIED="1776704470100" TEXT="muß in lookup() sitzen"/>
|
<node CREATED="1776704463019" ID="ID_1647332020" MODIFIED="1776704470100" TEXT="muß in lookup() sitzen"/>
|
||||||
|
|
@ -144584,12 +144603,13 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776204575221" ID="ID_869340284" MODIFIED="1776204579271" TEXT="Store-Slice"/>
|
<node COLOR="#338800" CREATED="1776204694205" ID="ID_1617552510" MODIFIED="1776717871305" TEXT="LocalBufferStage">
|
||||||
<node CREATED="1776204694205" ID="ID_1617552510" MODIFIED="1776204701641" TEXT="WorkerBufferStage">
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1776436907819" ID="ID_1105234662" MODIFIED="1776439761005" TEXT="Rolle der RootID klären">
|
<node COLOR="#435e98" CREATED="1776436907819" ID="ID_1105234662" MODIFIED="1776717877295" TEXT="Rolle der RootID klären">
|
||||||
<linktarget COLOR="#5b39d7" DESTINATION="ID_1105234662" ENDARROW="Default" ENDINCLINATION="113;-353;" ID="Arrow_ID_8614584" SOURCE="ID_1444097357" STARTARROW="None" STARTINCLINATION="-450;30;"/>
|
<linktarget COLOR="#5b39d7" DESTINATION="ID_1105234662" ENDARROW="Default" ENDINCLINATION="113;-353;" ID="Arrow_ID_8614584" SOURCE="ID_1444097357" STARTARROW="None" STARTINCLINATION="-450;30;"/>
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
<node CREATED="1776436962370" ID="ID_1640147854" MODIFIED="1776436990673" TEXT="dient als Parent-ID für alle abstrakten Buffer-Types"/>
|
<node CREATED="1776436962370" ID="ID_1640147854" MODIFIED="1776436990673" TEXT="dient als Parent-ID für alle abstrakten Buffer-Types"/>
|
||||||
<node CREATED="1776436992946" ID="ID_1491925884" MODIFIED="1776437012665" TEXT="könnte damit wie eine Mandant-ID wirken">
|
<node CREATED="1776436992946" FOLDED="true" ID="ID_1491925884" MODIFIED="1776717882558" TEXT="könnte damit wie eine Mandant-ID wirken">
|
||||||
<node CREATED="1776439531426" ID="ID_1417995514" MODIFIED="1776439536521" TEXT="aktuelle Implementierung">
|
<node CREATED="1776439531426" ID="ID_1417995514" MODIFIED="1776439536521" TEXT="aktuelle Implementierung">
|
||||||
<node CREATED="1776439537615" ID="ID_765591297" MODIFIED="1776439591395" TEXT="neuer Typ ⟶ BufferStage::defineBufferType() ⟶ BufferMetadata::Key"/>
|
<node CREATED="1776439537615" ID="ID_765591297" MODIFIED="1776439591395" TEXT="neuer Typ ⟶ BufferStage::defineBufferType() ⟶ BufferMetadata::Key"/>
|
||||||
<node CREATED="1776439592374" ID="ID_195017187" MODIFIED="1776439628902" TEXT="hier wird der in der Instanz gespeicherte Family-Hash als root-Seed verwendet"/>
|
<node CREATED="1776439592374" ID="ID_195017187" MODIFIED="1776439628902" TEXT="hier wird der in der Instanz gespeicherte Family-Hash als root-Seed verwendet"/>
|
||||||
|
|
@ -144636,16 +144656,129 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
<node COLOR="#435e98" CREATED="1776477731488" ID="ID_1764139922" MODIFIED="1776477873117" TEXT="Fazit">
|
<node COLOR="#435e98" CREATED="1776477731488" ID="ID_1764139922" MODIFIED="1776477873117" TEXT="Fazit">
|
||||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
<node CREATED="1776477743564" ID="ID_893955025" MODIFIED="1776477774653" TEXT="durch Heben in die BufferStage wird BufferMetadata ein beliebig nutzbarer Service"/>
|
<node CREATED="1776477743564" ID="ID_893955025" MODIFIED="1776477774653" TEXT="durch Heben in die BufferStage wird BufferMetadata ein beliebig nutzbarer Service"/>
|
||||||
<node CREATED="1776477775546" ID="ID_1413251785" MODIFIED="1776477827799" TEXT="zudem noch Import/Export von Registrierungen ⟹ thread-local aufrufbar"/>
|
<node CREATED="1776477775546" ID="ID_1413251785" MODIFIED="1776717963200" TEXT="zudem noch Import/Export von Registrierungen ⟹ thread-local aufrufbar">
|
||||||
|
<arrowlink COLOR="#d9fdb2" DESTINATION="ID_1694212347" ENDARROW="Default" ENDINCLINATION="-99;6;" ID="Arrow_ID_1098636138" STARTARROW="None" STARTINCLINATION="-278;-12;"/>
|
||||||
|
</node>
|
||||||
<node CREATED="1776477847655" ID="ID_1038306996" MODIFIED="1776477868291" TEXT="einen globalen Metadataten-Store bekommt man so »nebenbei geschenkt«">
|
<node CREATED="1776477847655" ID="ID_1038306996" MODIFIED="1776477868291" TEXT="einen globalen Metadataten-Store bekommt man so »nebenbei geschenkt«">
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1776717506994" ID="ID_1042445347" MODIFIED="1776717829645" TEXT="Setup">
|
||||||
|
<node CREATED="1776717529469" ID="ID_976163129" MODIFIED="1776717537610" TEXT="LocalSlice<BufferMetadata>"/>
|
||||||
|
<node CREATED="1776717539011" ID="ID_1202139011" MODIFIED="1776717548429" TEXT="lib::Depend<EngineBufferMetadata>">
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#a3020b" CREATED="1776717684522" ID="ID_86581395" MODIFIED="1776717708497" TEXT="hier Monitor-Lock auf allen Zugriffen">
|
||||||
|
<font NAME="SansSerif" SIZE="11"/>
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776717549236" ID="ID_292130223" MODIFIED="1776717585916" TEXT="Synchronisationspunkte">
|
||||||
|
<arrowlink COLOR="#3c578a" DESTINATION="ID_1285006287" ENDARROW="Default" ENDINCLINATION="-27;32;" ID="Arrow_ID_145731778" STARTARROW="None" STARTINCLINATION="-327;39;"/>
|
||||||
|
<node CREATED="1776717616255" ID="ID_1345485576" MODIFIED="1776717650141" TEXT="defineBufferType ⟹ propagateUp"/>
|
||||||
|
<node CREATED="1776717630558" ID="ID_211240465" MODIFIED="1776717671951" TEXT="lookup(fail) ⟹ propagateDown"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#338800" CREATED="1776717842661" ID="ID_299627358" MODIFIED="1776717850818" TEXT="LocalBufferStage_test">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1776717717869" ID="ID_1249350870" MODIFIED="1776717825852" TEXT="sonst ist das API-Mapping komplett identisch wie SimpleBufferStateRegistry">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
...was mich <i>tatsächlich etwas verblüfft,</i> aber es geht wohl grade glatt auf (und das bestätigt m.E. auch das API-Design)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776204702568" ID="ID_1197574712" MODIFIED="1776717865253" TEXT="LocalBufferStore">
|
||||||
|
<node CREATED="1776718325330" ID="ID_675333491" MODIFIED="1776718375192" TEXT="in mehreren Schritten eine »einfache« Implementierung aufbauen">
|
||||||
|
<linktarget COLOR="#1d52cb" DESTINATION="ID_675333491" ENDARROW="Default" ENDINCLINATION="-1046;-49;" ID="Arrow_ID_1903219737" SOURCE="ID_87043838" STARTARROW="None" STARTINCLINATION="178;997;"/>
|
||||||
|
<node CREATED="1776720614578" ID="ID_1271966009" MODIFIED="1776720628696" TEXT="im ersten Schritt ohne Pooling, direkt auf den Heap"/>
|
||||||
|
<node CREATED="1776720640172" ID="ID_953357896" MODIFIED="1776720658883" TEXT="dann eine einfache Pool-Steuerung dazubauen"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776720939330" ID="ID_1122029657" MODIFIED="1776720953799" TEXT="eine Test-Instrumentierung muß mit entwickelt werden">
|
||||||
|
<node CREATED="1776720954934" ID="ID_533496174" MODIFIED="1776721127952" TEXT="Vorbild ist der BlockFlow">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
dort gibt es die Syntax <font face="Monospaced" color="#4f3a3a">watch(blockFlow)</font>, für den Zugang zu einem Diagnostic-Wrapper, der als friend deklariert ist, aber im Prod-Betrieb einfach nicht vorhanden ist. Durch ein solches Schema kann man sich bis in kritische Details hinein das Verhalten eines production-Grade Memory-Managers anschauen, ohne spezielle Mocks und Stubs einsetzen zu müssen.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776721171818" ID="ID_1260732507" MODIFIED="1776721345544" TEXT="die zweite Ausbaustufe ist das Ziel ⟹ Diagnostik darauf auslegen">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Mit »zweite Ausbaustufe« meine ich, daß ein lokaler Pool da ist. Auch wenn dann später auch noch ein Austausch von Datenblöcken die direkte Allokation ergänzt.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Demnach muß ich von Anfang an eine solche Pool-Struktur vorsehen, obschon er zu Beginn niemals passiv Speicher vorhält
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776721908184" ID="ID_1043942557" MODIFIED="1776721969540" TEXT="LocalMemPool ⟵ als Basis-Service">
|
||||||
|
<node CREATED="1776721990317" ID="ID_939953958" MODIFIED="1776722093776" TEXT="dieser soll thread-local laufen und den gesamten Aufruf-übergreifenden State enthalten">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Diese Komponente entspricht also den BufferMetadata im LocalBufferStage: es ist ein technischer Implementierungs-Service, auf dessen Basis das BufferStore-API durch Abstraktion realisiert werden kann
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776722096447" ID="ID_1042530898" MODIFIED="1776730063985" TEXT="Vorraussetzungen und Intentionen klären">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
<node CREATED="1776722126935" ID="ID_622928577" MODIFIED="1776730151948" TEXT="verwendet C++ Allocator als Basis-Komponente">
|
||||||
|
<arrowlink COLOR="#5c6c7a" DESTINATION="ID_1644685634" ENDARROW="Default" ENDINCLINATION="-892;2424;" ID="Arrow_ID_284707831" STARTARROW="None" STARTINCLINATION="-1922;116;"/>
|
||||||
|
<node CREATED="1776728829329" ID="ID_668886450" MODIFIED="1776728839460" TEXT="puh ... damit kann ich jetzt wenig anfangen"/>
|
||||||
|
<node CREATED="1776728840468" ID="ID_790562538" MODIFIED="1776728850563" TEXT="das ist eine Menge von unfertigen Anläufen"/>
|
||||||
|
<node CREATED="1776728968556" ID="ID_668224503" MODIFIED="1776729214247" TEXT="ein zentrales Problem ist daß der »C++ Allocator« selber „halb daneben“ ist">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
in Ticket #1366 (und auch oben in der Mindmap) habe ich definiert, wie ein gutes Framework aussehen sollte. Aber das ist mehr eine Wunschliste — was gebraucht würde wäre ein Satz kohärenter Concepts, denn es geht grade <i>nicht</i> darum, eine einzige »Library-Implementierung« zu schaffen; vielmehr geht es darum, die diversen Library-Container und Frameworks so unter einen Hut zu bekommen, daß sie <i>composable</i> werden.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776729354439" ID="ID_1095417165" MODIFIED="1776729378457" TEXT="LinkedElements und die StdFactory dort könnten ein Beispiel sein"/>
|
||||||
|
<node CREATED="1776729996848" ID="ID_1369917935" MODIFIED="1776730019385" TEXT="⟹ das Schema ist daß eine »Factory« den Allocator dekoriert"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1776722100558" ID="ID_1140947088" MODIFIED="1776722105058" TEXT="LocalMemPool_test"/>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776204702568" ID="ID_1197574712" MODIFIED="1776204706747" TEXT="WorkerBufferStore"/>
|
|
||||||
<node CREATED="1776204787207" ID="ID_1425789996" MODIFIED="1776204792254" TEXT="vorerst nur anlegen">
|
<node CREATED="1776204787207" ID="ID_1425789996" MODIFIED="1776204792254" TEXT="vorerst nur anlegen">
|
||||||
<node CREATED="1776204765269" ID="ID_1404790840" MODIFIED="1776204785977" TEXT="EngineBufferMetadata">
|
<node COLOR="#338800" CREATED="1776204765269" ID="ID_1404790840" MODIFIED="1776718452275" TEXT="EngineBufferMetadata">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1776605957061" ID="ID_405169256" MODIFIED="1776606058887" TEXT="eigenständiger Service">
|
<node CREATED="1776605957061" ID="ID_405169256" MODIFIED="1776606058887" TEXT="eigenständiger Service">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head/>
|
<head/>
|
||||||
|
|
@ -144716,8 +144849,34 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
||||||
<linktarget COLOR="#4ff278" DESTINATION="ID_419155046" ENDARROW="Default" ENDINCLINATION="1269;0;" ID="Arrow_ID_703288918" SOURCE="ID_808614387" STARTARROW="None" STARTINCLINATION="1269;0;"/>
|
<linktarget COLOR="#4ff278" DESTINATION="ID_419155046" ENDARROW="Default" ENDINCLINATION="1269;0;" ID="Arrow_ID_703288918" SOURCE="ID_808614387" STARTARROW="None" STARTINCLINATION="1269;0;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1776718454776" ID="ID_945576551" MODIFIED="1776718582794">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<u>Stand</u>: <i>bis auf weiteres</i> bereits fertig
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Das erscheint bereits elaboriert genug, um damit eine echte Render-Engine zu betreiben. Wobei festzuhalten ist, daß das genze Konzept mit den hierarchiscen Metadaten bisher eine »frei drehende Idee« ist, und einer gründlichen Kritik unterzogen werden sollte.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1776204795573" ID="ID_1001789565" MODIFIED="1776718587143" TEXT="EngineBufferManager">
|
||||||
|
<icon BUILTIN="hourglass"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776204795573" ID="ID_1001789565" MODIFIED="1776204802934" TEXT="EngineBufferManager"/>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1776442826894" ID="ID_509761355" MODIFIED="1776442834087" TEXT="OutputSlot mit integrieren">
|
<node CREATED="1776442826894" ID="ID_509761355" MODIFIED="1776442834087" TEXT="OutputSlot mit integrieren">
|
||||||
<node CREATED="1776442835820" ID="ID_1709918207" MODIFIED="1776442866636" TEXT="der integrierte OutputBufferProxy hat auch eine BufferStage-Implementierung"/>
|
<node CREATED="1776442835820" ID="ID_1709918207" MODIFIED="1776442866636" TEXT="der integrierte OutputBufferProxy hat auch eine BufferStage-Implementierung"/>
|
||||||
|
|
@ -167563,7 +167722,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702415671495" ID="ID_690521198" MODIFIED="1702416445460" TEXT="Doxygen">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702415671495" ID="ID_690521198" MODIFIED="1702416445460" TEXT="Doxygen">
|
||||||
<icon BUILTIN="prepare"/>
|
<icon BUILTIN="prepare"/>
|
||||||
<node CREATED="1702416632230" ID="ID_842762054" MODIFIED="1702416637945" TEXT="zentrale Technologien">
|
<node CREATED="1702416632230" ID="ID_842762054" MODIFIED="1702416637945" TEXT="zentrale Technologien">
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734633109131" ID="ID_1954201095" MODIFIED="1734633492466" TEXT="FeedManifold">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734633109131" ID="ID_1954201095" MODIFIED="1776722093773" TEXT="FeedManifold">
|
||||||
<arrowlink COLOR="#82878e" DESTINATION="ID_1833389965" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_1228391309" STARTARROW="None" STARTINCLINATION="1447;0;"/>
|
<arrowlink COLOR="#82878e" DESTINATION="ID_1833389965" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_1228391309" STARTARROW="None" STARTINCLINATION="1447;0;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue