diff --git a/src/steam/engine/render-drive.cpp b/src/steam/engine/render-drive.cpp index 3ac4fc9cb..e34793c8a 100644 --- a/src/steam/engine/render-drive.cpp +++ b/src/steam/engine/render-drive.cpp @@ -51,23 +51,6 @@ namespace engine { } - void - RenderDrive::signalFailure (JobParameter parameter, JobFailureReason reason) - { - UNIMPLEMENTED ("what needs to be done when a planning continuation cant be invoked?"); - } - - - bool - RenderDrive::verify (Time nominalTime, InvocationInstanceID invoKey) const - { - UNIMPLEMENTED ("the actual meat: advance the render process"); - return getTimings().isValid() - && Time::MIN < nominalTime && nominalTime < Time::MAX - && nominalTime == getTimings().getFrameStartAt (invoKey.frameNumber); - } - - InvocationInstanceID RenderDrive::buildInstanceID (HashVal seed) const { diff --git a/src/steam/engine/render-drive.hpp b/src/steam/engine/render-drive.hpp index c84c86735..436163581 100644 --- a/src/steam/engine/render-drive.hpp +++ b/src/steam/engine/render-drive.hpp @@ -106,12 +106,10 @@ namespace engine { return META_JOB; } - bool verify (Time, InvocationInstanceID) const override; size_t hashOfInstance (InvocationInstanceID) const override; InvocationInstanceID buildInstanceID(HashVal) const override; void invokeJobOperation (JobParameter) override; - void signalFailure (JobParameter, JobFailureReason) override; diff --git a/src/vault/gear/job.cpp b/src/vault/gear/job.cpp index 063a6875b..579e21f22 100644 --- a/src/vault/gear/job.cpp +++ b/src/vault/gear/job.cpp @@ -82,13 +82,6 @@ namespace gear { } - void - Job::signalFailure (JobFailureReason reason) const - { - myClosure(this).signalFailure (parameter, reason); - } - - /** find out about the classification of this job. * Typically its not necessary for the normal scheduling of * Jobs to know anything beyond the contents of the #lumiera_jobDescriptor, @@ -97,22 +90,8 @@ namespace gear { JobKind Job::getKind() const { - REQUIRE (isValid()); return myClosure(this).getJobKind(); } - - - /** Render Job self verification. - * performs a parameter consistency check - * including a call-back to the defining JobTicket - */ - bool - Job::isValid() const - { - return this->jobClosure - and myClosure(this).verify (getNominalTime(), - getInvocationInstanceID()); - } bool @@ -155,8 +134,6 @@ namespace { forwardInvocation (lumiera_jobDefinition& jobDef) { Job& job = static_cast (jobDef); - - REQUIRE (job.isValid()); return job; } } @@ -172,13 +149,6 @@ lumiera_job_invoke (LumieraJobDefinition jobDef) forwardInvocation(*jobDef).triggerJob(); } -void -lumiera_job_failure (LumieraJobDefinition jobDef, JobFailureReason reason) -{ - REQUIRE (jobDef); - forwardInvocation(*jobDef).signalFailure(reason); -} - size_t lumiera_job_get_hash (LumieraJobDefinition jobDef) { diff --git a/src/vault/gear/job.h b/src/vault/gear/job.h index 54e3bc8d2..5ffa45c4c 100644 --- a/src/vault/gear/job.h +++ b/src/vault/gear/job.h @@ -84,15 +84,6 @@ enum JobPriority }; -/** - * @todo find out about the possible kinds of failure - */ -enum JobFailureReason - { - TIMEOUT, - PREREQUISITE_NOT_AVAILABLE ///////////////TODO - }; - typedef int64_t FrameCnt; @@ -241,10 +232,8 @@ namespace gear { virtual void invokeJobOperation (JobParameter parameter) =0; - virtual void signalFailure (JobParameter,JobFailureReason) =0; virtual JobKind getJobKind() const =0; - virtual bool verify (Time, InvocationInstanceID) const =0; virtual HashVal hashOfInstance(InvocationInstanceID) const =0; virtual InvocationInstanceID buildInstanceID(HashVal)const =0; ////////////////////////////TICKET #1293 : a size_t hash? or a LUID? @@ -286,7 +275,6 @@ namespace gear { void triggerJob() const; - void signalFailure (JobFailureReason) const; Time @@ -302,7 +290,6 @@ namespace gear { } JobKind getKind() const; - bool isValid() const; bool usesClosure (JobClosure const&) const; @@ -339,13 +326,6 @@ extern "C" { * assuming availability of all prerequisites */ void lumiera_job_invoke (LumieraJobDefinition); -/** signal inability to invoke this job - * @todo decide what and how to communicate details of the failure - * @remarks the purpose of this function is to allow for reliable checkpoints - * within the network of dependent job invocations, even after - * missing deadlines or aborting a sequence of jobs */ -void lumiera_job_failure (LumieraJobDefinition, JobFailureReason); - /** calculate a hash value based on the Job's \em identity. */ size_t lumiera_job_get_hash (LumieraJobDefinition); diff --git a/src/vault/gear/nop-job-functor.hpp b/src/vault/gear/nop-job-functor.hpp index 9076b4b2f..e17862409 100644 --- a/src/vault/gear/nop-job-functor.hpp +++ b/src/vault/gear/nop-job-functor.hpp @@ -65,12 +65,6 @@ namespace gear { return META_JOB; } - bool - verify (Time, InvocationInstanceID) const - { - return true; // always happy - } - InvocationInstanceID buildInstanceID (HashVal) const override { @@ -92,12 +86,6 @@ namespace gear { /* NOP */ } - void - signalFailure (JobParameter, JobFailureReason) override - { - ///////////TODO do we ever need to notify anyone? can this even happen? - } - public: NopJobFunctor(); }; diff --git a/tests/core/steam/engine/job-hash-test.cpp b/tests/core/steam/engine/job-hash-test.cpp index c2e153a4e..89379f019 100644 --- a/tests/core/steam/engine/job-hash-test.cpp +++ b/tests/core/steam/engine/job-hash-test.cpp @@ -71,8 +71,6 @@ namespace test { verify_simple_job_properties() { MockJob job; - CHECK (job.isValid()); - Time beforeInvocation = RealClock::now(); job.triggerJob(); @@ -110,9 +108,7 @@ namespace test { : public JobClosure { void invokeJobOperation (JobParameter) { /* irrelevant */ } - void signalFailure (JobParameter,JobFailureReason) { /* irrelevant */ } JobKind getJobKind() const { return META_JOB; } - bool verify (Time, InvocationInstanceID) const { return false; } InvocationInstanceID buildInstanceID(HashVal) const { return InvocationInstanceID(); } size_t diff --git a/tests/core/steam/engine/mock-dispatcher.cpp b/tests/core/steam/engine/mock-dispatcher.cpp index 8c3e50e58..f0bcc1bb7 100644 --- a/tests/core/steam/engine/mock-dispatcher.cpp +++ b/tests/core/steam/engine/mock-dispatcher.cpp @@ -89,28 +89,12 @@ namespace test { invocationLog_[hash_value (parameter)] = Invocation(parameter); } - void - signalFailure (JobParameter,JobFailureReason) override - { - NOTREACHED ("Job failure is not subject of this test"); - } - JobKind getJobKind() const override { return META_JOB; } - bool - verify (Time nominalJobTime, InvocationInstanceID invoKey) const override - { - return Time::ANYTIME < nominalJobTime - && 0 <= invoKey.part.a - && invoKey.part.a < MAX_PARAM_A - && -MAX_PARAM_B <= invoKey.part.b - && invoKey.part.b < MAX_PARAM_B; - } - /** * Generate a specifically marked invocationKey for use in unit-tests. * @remark in the actual implementation, this function generates a distinct diff --git a/tests/vault/gear/activity-detector-test.cpp b/tests/vault/gear/activity-detector-test.cpp index 47fe352f1..6e6aed734 100644 --- a/tests/vault/gear/activity-detector-test.cpp +++ b/tests/vault/gear/activity-detector-test.cpp @@ -68,7 +68,7 @@ namespace test { simpleUsage(); verifyMockInvocation(); - verifyDummyJobFunctor(); + verifyMockJobFunctor(); detect_activation(); detect_gate(); } @@ -103,7 +103,7 @@ namespace test { verifyMockInvocation() { ActivityDetector detector; - auto fun = detector.buildDiagnosticFun("funny"); + auto fun = detector.buildDiagnosticFun ("funny"); uint rnd = rand() % 10000; ++detector; @@ -143,11 +143,13 @@ namespace test { /** @test TODO diagnostic setup to detect a JobFunctor activation - * @todo WIP 7/23 ⟶ define ⟶ implement + * @todo WIP 7/23 🔁 define ⟶ implement */ void - verifyDummyJobFunctor() + verifyMockJobFunctor() { + ActivityDetector detector; + JobFunctor& mockFunctor = detector.buildMockJobFunctor ("mockJob"); } diff --git a/tests/vault/gear/activity-detector.hpp b/tests/vault/gear/activity-detector.hpp index 69de4fc08..84dda78de 100644 --- a/tests/vault/gear/activity-detector.hpp +++ b/tests/vault/gear/activity-detector.hpp @@ -71,7 +71,8 @@ //#include "steam/mobject/model-port.hpp" //#include "steam/engine/dispatcher.hpp" //#include "steam/engine/job-ticket.hpp" -//#include "vault/gear/job.h" +#include "vault/gear/job.h" +#include "vault/gear/activity.hpp" //#include "vault/real-clock.hpp" //#include "lib/allocator-handle.hpp" //#include "lib/time/timevalue.hpp" @@ -335,6 +336,11 @@ namespace test { return Functor{id, eventLog_, invocationSeq_}; } + JobFunctor& ///////////////////////////////////////////////////////////////////TICKET #1287 : fix actual interface down to JobFunctor (after removing C structs) + buildMockJobFunctor (string id) + { + UNIMPLEMENTED ("build a rigged JobFunctor"); + } ActivityMatch diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 45f7e8ea6..b545e0b19 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -82429,9 +82429,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + + + + + @@ -82463,6 +82470,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + @@ -82868,6 +82880,92 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + +

+ Ein Render-Vorgang wurde in die Wege geleitet, aber beim Bereitstellen der Mittel zeigt sich, daß das beabsichtigte Ziel grundsätzlich oder akzidenteller Weise gar nicht erreichbar ist +

+ +
+ + + + + + + +

+ Ein grunsätzlich bereits komplett vorgeplanter Render-Vorgang stellt wider erwarten fest, daß eine Prüfung oder Annahme falsch war und eine Vorbedingung nicht erfüllt werden kann bzw. ein Arbeitsmittel doch nicht verfügbar ist +

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

+ Obwohl die Render-Aktivitäten komplett wie geplant ablaufen, ist zum aktuellen Zeitpunkt der vorgeplante Zeitrahmen verlassen, so daß Termine absehbar nicht mehr gehalten werden können +

+ +
+ + + + + + + + +

+ Ein unerwartetes Ereignis mitten in der Berechnung führt zum Kontrollverlust oder korumpiert die bereitgestellten Daten +

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

+ Im Rahmen normaler Verarbeitung wird ein nebenbei beobachteter Schwellwert verletzt, so daß das Ergebnis — wiewohl formal korrekt — nicht mehr den ursprünglichen Erwartungen genügt; es handelt sich hierbei um ein Ereignis, welches bekanntermaßen mit einer gewissen Wahrscheinlichkeit eintreten kann, beispielsweise um die Verzögerung oder Übertragungsstörung eines Remote-Feed, oder um eine limitierte Resource, die in geringerem Maß oder erst später als erwartet zur Verfügung steht +

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