From b5856348409f54ef70b6a7af27c7f0cb15456cce Mon Sep 17 00:00:00 2001
From: Danilo Ferreira de Lima <danilo.enoque.ferreira.de.lima@xfel.de>
Date: Mon, 4 Sep 2023 10:56:14 +0200
Subject: [PATCH] Signal end of stream.

---
 src/calng/PickyBoi.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/calng/PickyBoi.py b/src/calng/PickyBoi.py
index e66ceb46..4cbf2019 100644
--- a/src/calng/PickyBoi.py
+++ b/src/calng/PickyBoi.py
@@ -63,6 +63,14 @@ class PickyBoi(PythonDevice):
             .key("input")
             .commit(),
 
+
+            BOOL_ELEMENT(expected)
+            .key("breakStreamAfterEnd")
+            .description("If active, end the output stream after the range of selected train IDs has been forwarded.")
+            .assignmentOptional()
+            .defaultValue(False)
+            .commit(),
+
             UINT64_ELEMENT(expected)
             .key("nextTrainToCatch")
             .assignmentOptional()
@@ -299,6 +307,9 @@ class PickyBoi(PythonDevice):
                     self.updateState(State.MONITORING)
             else:
                 # past capture range
+                # if breakStreamAfterEnd is set, end the stream
+                if self.get("breakStreamAfterEnd"):
+                    self.signalEndOfStream("output")
                 if self._remaining_trains:
                     # note: wouuld also get triggered by receiving the same train twice
                     self.log.ERROR(f"Missed some train(s): {self._remaining_trains}")
-- 
GitLab