From ccf970eaeee30782164672d31193f4f8e85faea2 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 22 Oct 2023 00:55:56 +0200 Subject: [PATCH] =?UTF-8?q?Scheduler:=20clarify=20redundant=20=CE=BB-post?= =?UTF-8?q?=20param?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The signature for the »post« operation includes the ExecutionCtx itself, which is obviously redundant, given that this operation is ''part of this context.'' However, for mock-implementation of the ExecutionCtx for unit testing, the form of the implementation was deliberately kept unspecified, allowing to use functor objects, which can be instrumented later. Yet a functor stored as member has typically no access to the "this"-ptr... --- src/vault/gear/scheduler.hpp | 6 +- wiki/thinkPad.ichthyo.mm | 112 +++++++++++++++++++++-------------- 2 files changed, 74 insertions(+), 44 deletions(-) diff --git a/src/vault/gear/scheduler.hpp b/src/vault/gear/scheduler.hpp index 201103b39..2680328a8 100644 --- a/src/vault/gear/scheduler.hpp +++ b/src/vault/gear/scheduler.hpp @@ -194,7 +194,11 @@ namespace gear { /* ==== Implementation of the Concept ExecutionCtx ==== */ - /** λ-post: */ + /** + * λ-post: enqueue for time-bound execution, possibly dispatch immediately. + * This is the »main entrance« to get some Activity scheduled. + * @remark the \a ctx argument is redundant (helpful for test/mocking) + */ activity::Proc post (Time when, Activity& chain, ExecutionCtx& ctx) { diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 06ac81e2d..2b6c0e694 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -57327,9 +57327,7 @@ - - - +

damit kann man von jedem »Invocable« eine Signatur abgreifen @@ -57355,9 +57353,7 @@ - - - +

...denn man verwendet diese Metafunktion ja stets explizit mit einem gegebenen Typ, und im Falle eines Ausdrucks muß man noch einen decltype() darum wickeln. Mögliche Probleme: @@ -57382,9 +57378,7 @@ - - - +

Beispiel: explore(elements).transform(....irgendwas....) @@ -57411,9 +57405,7 @@ - - - +

has_Sig sollte keine Compile-Fehler auslösen, wenn der gegebene Typ überhaupt nicht Funktions-artig ist (⟹ denn dann ist die Aussage trivialer Weise wiederlegt; was gar keine Signatur hat, kann auch nicht eine bestimmte Signatur haben). Realisieren kann man das über den bool-Check, den ich vor einiger Zeit bereits in lib::meta::_Fun eingebaut habe (im Zusammenhang mit IterExplorer) @@ -57423,9 +57415,7 @@ - - - +

Warum Macro? damit man per STRINGIFY() einen lesbareren Hinweis in die Static-Assertion bekommt @@ -80375,7 +80365,36 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + + + + + + + +

+ weil ja λ-post selbst im ExecutionCtx sitzt +

+ +
+
+ + + + +

+ wenn man nämlich als Funktor oder statische Funktion implementiert, bekommt man kein "this" in die Hand +

+ +
+
+ + + + @@ -80404,9 +80423,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

...also solange ich nur mit Unit-Tests gearbeitet habe @@ -80416,9 +80433,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

  • @@ -80432,8 +80447,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- -
+
@@ -80454,9 +80468,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

im Besonderen λ-post ist im Grunde @@ -80467,9 +80479,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

...nämlich die Fähigkeit, einen Activity-chain zu einem geplanten Zeitpunkt oder auf Signal hin auszuführen — und diese Fähigkeit muß selbstverständlich der Sprache selber zu Gebote stehen, damit sie komplexe Aktionsmuster flexibel ausdrücken kann @@ -80587,12 +80597,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - + + - + @@ -81947,6 +81957,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ @@ -82011,9 +82022,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

es genügte, an diesen Stellen die Ausführung der abstrahierten Aktionen zu loggen @@ -82030,9 +82039,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

der Scheduler selber kann diese Rolle generisch übernehmen @@ -82042,9 +82049,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

  • @@ -82064,6 +82069,26 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
    + + + + + + + + + +

    + ...speziell wenn man λ-post als Funktor implementiert, bekommt man keinen this* +

    +

    + ...entspricht außerdem dem generellen Schema, nach dem alle »downstream« benötigten Argumente durch die ganze Kette möglichst in gleicher Reihenfolge durchgegeben werden. +

    + +
    + +
    +
    @@ -85879,7 +85904,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
    - + @@ -87015,6 +87040,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
    +