From 1ec883787a9e81144cc62f1a9c02c218ba4c3784 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 15 Dec 2016 05:07:40 +0100 Subject: [PATCH] DOC: decision about where to home the SessionCommandService After some consideration, it became clear that this service implementation is closely tied to the DispatcherLoop -- which will consequently be responsible to run and expose this service implementation --- doc/devel/uml/Session-subsystem.png | Bin 0 -> 31129 bytes src/proc/control/command-dispatch.hpp | 95 + src/proc/control/proc-dispatcher.hpp | 6 +- uml/Lumiera.xmi | 6090 ++++++++++++++++++++++++- wiki/renderengine.html | 11 +- wiki/thinkPad.ichthyo.mm | 203 +- 6 files changed, 6374 insertions(+), 31 deletions(-) create mode 100644 doc/devel/uml/Session-subsystem.png create mode 100644 src/proc/control/command-dispatch.hpp diff --git a/doc/devel/uml/Session-subsystem.png b/doc/devel/uml/Session-subsystem.png new file mode 100644 index 0000000000000000000000000000000000000000..6804a483206428772eb0245e9f0c15e30d9b9367 GIT binary patch literal 31129 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 + + This program 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +/** @file command-dispatch.hpp + ** Interface to abstract the DispatcherLoop's ability to handle command messages. + ** //TODO + ** + ** @see proc-dispatcher.hpp + ** @see session-command-service.hpp + ** @see DispatcherLoop + ** + */ + + + +#ifndef PROC_CONTROL_COMMAND_DISPATCH_H +#define PROC_CONTROL_COMMAND_DISPATCH_H + +//#include "lib/symbol.hpp" +#include "common/subsys.hpp" +#include "lib/depend.hpp" +#include "lib/sync.hpp" + +#include +//#include + + + +namespace proc { +namespace control { + +// using lib::Symbol; + using std::unique_ptr; +// using std::bind; + using lumiera::Subsys; + + + class DispatcherLoop; + + + /** + * @todo Type-comment + */ + class ProcDispatcher + : public lib::Sync<> + { + unique_ptr runningLoop_; + bool active_{false}; + + + public: + static lib::Depend instance; + + bool start (Subsys::SigTerm); + bool isRunning(); + void requestStop(); + + void activate(); + void deactivate(); + void clear(); + + + /* == diagnostics == */ + +// size_t size() const ; + bool empty() const ; + + }; + ////////////////TODO currently just fleshing out the API.... + + + + +}} // namespace proc::control +#endif /*PROC_CONTROL_COMMAND_DISPATCH_H*/ diff --git a/src/proc/control/proc-dispatcher.hpp b/src/proc/control/proc-dispatcher.hpp index 0e117946d..7cf02ab4a 100644 --- a/src/proc/control/proc-dispatcher.hpp +++ b/src/proc/control/proc-dispatcher.hpp @@ -32,8 +32,8 @@ -#ifndef CONTROL_PROC_DISPATCHER_H -#define CONTROL_PROC_DISPATCHER_H +#ifndef PROC_CONTROL_PROC_DISPATCHER_H +#define PROC_CONTROL_PROC_DISPATCHER_H //#include "lib/symbol.hpp" #include "common/subsys.hpp" @@ -91,4 +91,4 @@ namespace control { }} // namespace proc::control -#endif +#endif /*PROC_CONTROL_PROC_DISPATCHER_H*/ diff --git a/uml/Lumiera.xmi b/uml/Lumiera.xmi index 5141e9fdb..d776a1e99 100644 --- a/uml/Lumiera.xmi +++ b/uml/Lumiera.xmi @@ -1,5 +1,5 @@ - + umbrello uml modeller http://umbrello.kde.org @@ -33,6 +33,7 @@ + @@ -51,6 +52,7 @@ + @@ -103,7 +105,7 @@ - + @@ -173,7 +175,187 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -244,6 +426,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -355,7 +589,7 @@ - + @@ -372,6 +606,7 @@ + @@ -382,14 +617,15 @@ + - + - + @@ -413,8 +649,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -571,11 +837,11 @@ - +

- +
@@ -658,11 +924,11 @@ - +
- +
@@ -745,11 +1011,11 @@ - +
- +
@@ -832,11 +1098,11 @@ - +
- +
@@ -1068,6 +1334,1562 @@ + + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + +
+ +
+ +
+ + + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
@@ -1267,11 +3089,11 @@ - +
- +
@@ -1343,11 +3165,11 @@ - +
- +
@@ -1419,11 +3241,11 @@ - +
- +
@@ -1495,11 +3317,11 @@ - +
- +
@@ -1781,6 +3603,4228 @@
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + +
+ +
+ +
+ + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 7ff1ce4dc..6cca8d71b 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -6071,7 +6071,7 @@ The concurrent nature of the problem is what makes this simple task somewhat mor * referrals to already known sequence points might be added later, and also from different threads ({{red{WIP 3/14}}} not sure if we need to expand on this observation -- see CalcStream &hArr; Segment) This structure looks like requiring a message passing approach: we can arrange for determining the actual dependencies and fulfillment state late, within a single consumer, which is responsible for invoking the triggers. The other clients (threads) just pass messages into a possibly lock-free messageing channel. -
+
The Session contains all information, state and objects to be edited by the User. From a users view, the Session is synonymous to the //current Project//. It can be [[saved and loaded|SessionLifecycle]]. The individual Objects within the Session, i.e. Clips, Media, Effects, are contained in one (or several) collections within the Session, which we call [[Sequence]].
 &rarr; [[Session design overview|SessionOverview]]
 &rarr; Structure of the SessionInterface
@@ -6089,7 +6089,7 @@ The Session object is a singleton &mdash; actually it is a »~PImpl«-Facade
 
 
 !Session lifecycle
-The session lifecycle need to be distinguished from the state of the //session subsystem.// The latter is one of the major components of Lumiera, and when it is brought up, the {{{SessionCommandFacade}}} is opened and the ProcDispatcher started. On the other hand, the session as such is a data structure and pulled up on demand, by the {{{SessionManager}}}. Whenever the session is fully populated and configured, the ProcDispatcher is instructed to //actually allow dispatching of commands towards the session.// This command dispatching mechanism is the actual access point to the session for clients outside Proc-Layer; when dispatching is halted, commands can be enqueued non the less, which allows for a reactive UI.
+The session lifecycle need to be distinguished from the state of the [[session subsystem|SessionSubsystem]]. The latter is one of the major components of Lumiera, and when it is brought up, the {{{SessionCommandFacade}}} is opened and the ProcDispatcher started. On the other hand, the session as such is a data structure and pulled up on demand, by the {{{SessionManager}}}. Whenever the session is fully populated and configured, the ProcDispatcher is instructed to //actually allow dispatching of commands towards the session.// This command dispatching mechanism is the actual access point to the session for clients outside Proc-Layer; when dispatching is halted, commands can be enqueued non the less, which allows for a reactive UI.
 
@@ -6371,6 +6371,13 @@ And last but not least: the difficult part of this whole concept is encapsulated {{red{WIP ... draft}}}
+
+
//A subsystem within Proc-Layer, responsible for lifecycle and access to the editing [[Session]].//
+[img[Structure of the Session Subsystem|uml/Session-subsystem.png]]
+
+!Structure
+The ProcDispatcher is at the heart of the //Session Subsystem.// Because the official interface for working on the session, the {{{SessionCommand}}} façade, is expressed in terms of sending command messages to invoke predefined [[commands|CommandHandling]] to operate on the SessionInterface, the actual implementation of such a {{{SessionCommandService}}} needs a component actually to enqueue and dispatch those commands -- which is the {{{DispatcherLoop}}} within the ProcDispatcher. As usual, the ''lifecycle'' is controlled by a subsystem descriptor, which starts and stopps the whole subsystem; and this starting and stopping in turn translates into starting/stopping of the dispatcher loop. On the other hand, //activation of the dispatcher,// which means actively to dispatch commands, is controlled by the lifecycle of the session proper. The latter is just a data structure, and can be loaded / saved and rebuilt through the ''session manager''.
+
<<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 855991614..9128bf5a1 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -212,10 +212,201 @@ - - - + + + + + + + + + +

+ setzt aktivierten Dispatcher zwingend voraus +

+ +
+ + + + + +

+ es genügt definitiv nicht, nur die Dispatcher-Komponente(Schnittstelle) erreichen zu können. +

+

+ Jede Operation, die über dieses externe Interface bereitsteht, benötigt zur Implementierung +

+

+ eine aktiv laufende Dispatcher-Queue. +

+

+ +

+

+ Daher macht es Sinn, den Interface-Lebenszyklus ganz starr an den Disspatcher zu binden +

+ +
+
+ + + + + + +

+ ...und zwar wirklich sehr implizit, +

+

+ nämlich über die Identität (IDs) der Command-Parameter. +

+

+ Das heißt, ein eingehendes Command paßt nur zu einer bestimmten Session-Instanz, +

+

+ was zwar jederzeit (via statisches/internes Session-API) verifizierbar ist, jedoch nicht offensichtlich +

+ +
+
+ + + + + + +

+ das folgt einfach aus den logischen Eigenschaften der beteiligten Komponenten, +

+

+ welche eben autonom sind. +

+

+ +

+

+ Das heißt im Klartext, alle Clients müssen darauf vorbereitet sein, daß diese Schnittstelle +

+

+ jederzeit wegbrechen kann, was dann heißt, daß irgend ein Aufruf eine Exception wirft +

+ +
+
+
+ + + + + + + + +

+ wer besitzt die +

+

+ Implementierung +

+ +
+ + + + + + + + + + + + + + +

+ meint: zwei gekoppelte Statusvariable +

+ + +
+
+ + + + + + + + + + + + + + + + + + +

+ muß alle Operationen durchschleifen +

+

+ oder muß PImpl als Interface exponieren +

+ + +
+
+ + + + + + +

+ meint: zwei gekoppelte Statusvariable +

+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+ Shutdown tricky +

+ +
+
+ + +
@@ -310,6 +501,12 @@ + + + + + +