Skip to content

Commit cd5a8dc

Browse files
authored
Merge pull request #51 from ess-dmsc/add_control_topic
Added control_topic to pl72 run start
2 parents 33e1b79 + c5e10e7 commit cd5a8dc

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

streaming_data_types/fbschemas/run_start_pl72/RunStart.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,16 @@ def Metadata(self):
123123
return self._tab.String(o + self._tab.Pos)
124124
return None
125125

126+
# RunStart
127+
def ControlTopic(self):
128+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(28))
129+
if o != 0:
130+
return self._tab.String(o + self._tab.Pos)
131+
return None
132+
126133

127134
def RunStartStart(builder):
128-
builder.StartObject(12)
135+
builder.StartObject(13)
129136

130137

131138
def RunStartAddStartTime(builder, startTime):
@@ -194,5 +201,11 @@ def RunStartAddMetadata(builder, metadata):
194201
)
195202

196203

204+
def RunStartAddControlTopic(builder, controlTopic):
205+
builder.PrependUOffsetTRelativeSlot(
206+
12, flatbuffers.number_types.UOffsetTFlags.py_type(controlTopic), 0
207+
)
208+
209+
197210
def RunStartEnd(builder):
198211
return builder.EndObject()

streaming_data_types/run_start_pl72.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def serialise_pl72(
3636
broker: str = "localhost:9092",
3737
metadata: str = "{}",
3838
detector_spectrum_map: Optional[DetectorSpectrumMap] = None,
39+
control_topic: str = "",
3940
) -> bytes:
4041
builder = flatbuffers.Builder(512)
4142
builder.ForceDefaults(True)
@@ -59,6 +60,7 @@ def serialise_pl72(
5960
run_name_offset = builder.CreateString(run_name)
6061
filename_offset = builder.CreateString(filename)
6162
metadata_offset = builder.CreateString(metadata)
63+
control_topic_offset = builder.CreateString(control_topic)
6264

6365
# Build detector-spectrum map
6466
if detector_spectrum_map is not None:
@@ -97,6 +99,7 @@ def serialise_pl72(
9799
RunStart.RunStartAddMetadata(builder, metadata_offset)
98100
if detector_spectrum_map is not None:
99101
RunStart.RunStartAddDetectorSpectrumMap(builder, detector_spectrum_map_offset)
102+
RunStart.RunStartAddControlTopic(builder, control_topic_offset)
100103

101104
run_start_message = RunStart.RunStartEnd(builder)
102105

@@ -116,6 +119,7 @@ class RunStartInfo(NamedTuple):
116119
instrument_name: str = ""
117120
metadata: str = ""
118121
detector_spectrum_map: Optional[DetectorSpectrumMap] = None
122+
control_topic: str = ""
119123

120124

121125
def deserialise_pl72(buffer: Union[bytearray, bytes]) -> RunStartInfo:
@@ -130,6 +134,7 @@ def deserialise_pl72(buffer: Union[bytearray, bytes]) -> RunStartInfo:
130134
instrument_name = run_start.InstrumentName() if run_start.InstrumentName() else b""
131135
run_name = run_start.RunName() if run_start.RunName() else b""
132136
metadata = run_start.Metadata() if run_start.Metadata() else b""
137+
control_topic = run_start.ControlTopic() if run_start.ControlTopic() else b""
133138

134139
detector_spectrum_map = None
135140
det_spec_map_buf = run_start.DetectorSpectrumMap()
@@ -152,4 +157,5 @@ def deserialise_pl72(buffer: Union[bytearray, bytes]) -> RunStartInfo:
152157
broker=broker.decode(),
153158
metadata=metadata.decode(),
154159
detector_spectrum_map=detector_spectrum_map,
160+
control_topic=control_topic.decode(),
155161
)

tests/test_pl72.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class TestSerialisationPl72:
2424
"detector_spectrum_map": DetectorSpectrumMap(
2525
np.array([4, 5, 6]), np.array([0, 1, 2]), 3
2626
),
27+
"control_topic": "some_topic_name",
2728
}
2829

2930
def test_serialises_and_deserialises_pl72_message_correctly(self):
@@ -57,6 +58,7 @@ def test_serialises_and_deserialises_pl72_message_correctly(self):
5758
deserialised_tuple.detector_spectrum_map.detector_ids,
5859
self.original_entry["detector_spectrum_map"].detector_ids,
5960
)
61+
assert deserialised_tuple.control_topic == self.original_entry["control_topic"]
6062

6163
def test_if_buffer_has_wrong_id_then_throws(self):
6264
buf = serialise_pl72(**self.original_entry)

0 commit comments

Comments
 (0)