gstreamer
Loading...
Searching...
No Matches
GSROCratePlugin Class Referenceabstract

Implementation-owned framing and optional electronics response for one crate. More...

#include <gSROPlugin.h>

Public Member Functions

 GSROCratePlugin (GSROFrameSink &sink)
virtual ~GSROCratePlugin ()=default
 GSROCratePlugin (const GSROCratePlugin &)=delete
GSROCratePlugin & operator= (const GSROCratePlugin &)=delete
 GSROCratePlugin (GSROCratePlugin &&)=delete
GSROCratePlugin & operator= (GSROCratePlugin &&)=delete
virtual void consume_payload (GSROPayload payload)=0
virtual void advance_time (GSROTime safe_time)=0
virtual void finish_run (const GSROEndContext &context)=0

Protected Attributes

GSROFrameSink & output

Detailed Description

GEMC creates one instance per crate per run invocation. All callbacks execute serially on that crate's thread. State may span frame boundaries; overlap processing must not reset at every frame boundary. No mutable digitizer or worker state may be accessed here. The output sink outlives this instance.

The collector accepts out-of-order deliveries, but calls consume_payload in ascending order of (time, event_id, sequence), releasing only records strictly before a proven safe input boundary. advance_time follows consumption of all records before that boundary. Equal-time records remain pending until a later boundary, keeping their ordering deterministic.

At orderly shutdown, including interruption, the collector consumes all remaining submitted records in order before finish_run. Missing events can leave these records beyond the last safe input boundary. Only advance_time and finish_run authorize frame emission; consume_payload alone does not establish completeness. finish_run decides what to do with incomplete frames using the end context. GEMC imposes no frame duration or acquisition cutoff. Output readiness may lag input progress when electronics retain unresolved signals.

On orderly shutdown, GEMC calls finish_run once, then output.finish_output once. No callbacks follow. Callback exceptions propagate to the service, which stops dispatch and wakes blocked producers. Successful finalization is not guaranteed after an exception; destructors still release resources.

Definition at line 78 of file gSROPlugin.h.

Constructor & Destructor Documentation

◆ GSROCratePlugin() [1/3]

GSROCratePlugin::GSROCratePlugin ( GSROFrameSink & sink)
inlineexplicit

Definition at line 81 of file gSROPlugin.h.

◆ ~GSROCratePlugin()

virtual GSROCratePlugin::~GSROCratePlugin ( )
virtualdefault

◆ GSROCratePlugin() [2/3]

GSROCratePlugin::GSROCratePlugin ( const GSROCratePlugin & )
delete

◆ GSROCratePlugin() [3/3]

GSROCratePlugin::GSROCratePlugin ( GSROCratePlugin && )
delete

Member Function Documentation

◆ advance_time()

virtual void GSROCratePlugin::advance_time ( GSROTime safe_time)
pure virtual

◆ consume_payload()

virtual void GSROCratePlugin::consume_payload ( GSROPayload payload)
pure virtual

◆ finish_run()

virtual void GSROCratePlugin::finish_run ( const GSROEndContext & context)
pure virtual

◆ operator=() [1/2]

GSROCratePlugin & GSROCratePlugin::operator= ( const GSROCratePlugin & )
delete

◆ operator=() [2/2]

GSROCratePlugin & GSROCratePlugin::operator= ( GSROCratePlugin && )
delete

Field Documentation

◆ output

GSROFrameSink& GSROCratePlugin::output
protected

Definition at line 94 of file gSROPlugin.h.


The documentation for this class was generated from the following file: