DynExp
Highly flexible laboratory automation for dynamically changing experiments.
Loading...
Searching...
No Matches
NetworkTimeTaggerModule.h
Go to the documentation of this file.
1// This file is part of DynExp.
2
9#pragma once
10
11#include "stdafx.h"
12#include "../MetaInstruments/TimeTagger.h"
14
15#include "NetworkTimeTagger.grpc.pb.h"
16
17namespace DynExpModule
18{
19 template <typename... gRPCServices>
20 class NetworkTimeTaggerT;
21
22 template <typename... gRPCServices>
24 {
25 public:
27
29 virtual ~NetworkTimeTaggerData() = default;
30
32 {
33 // Retry a couple of times since time tagger sometimes blocks
34 // for a while due to slow operations like activating the HBT.
35 for (int NumTries = 0; true; ++NumTries)
36 {
37 try
38 {
39 return DynExp::dynamic_Object_cast<InstrType>(NetworkDataStreamInstrumentData<gRPCServices...>::GetDataStreamInstrument().get());
40 }
41 catch ([[maybe_unused]] const Util::TimeoutException& e)
42 {
43 if (NumTries < 5)
44 continue;
45 else
46 throw;
47 }
48 }
49 }
50
51 private:
54
55 void Init() {}
56 };
57
58 template <typename... gRPCServices>
73
74 template <typename... gRPCServices>
76 {
77 public:
78 using ObjectType = NetworkTimeTaggerT<gRPCServices...>;
79 using ParamsType = NetworkTimeTaggerParams<gRPCServices...>;
80
82 virtual ~NetworkTimeTaggerConfigurator() = default;
83
84 private:
85 virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore& Core) const override { return DynExp::MakeParams<NetworkTimeTaggerConfigurator>(ID, Core); }
86 };
87
88 template <typename... gRPCServices>
89 class NetworkTimeTaggerT : public NetworkDataStreamInstrumentT<gRPCServices...>
90 {
91 public:
92 using ParamsType = NetworkTimeTaggerParams<gRPCServices...>;
93 using ConfigType = NetworkTimeTaggerConfigurator<gRPCServices...>;
94 using ModuleDataType = NetworkTimeTaggerData<gRPCServices...>;
95 using ThisServiceType = DynExpProto::NetworkTimeTagger::NetworkTimeTagger;
96
97 constexpr static auto Name() noexcept { return "Network Time Tagger"; }
98
101 virtual ~NetworkTimeTaggerT() = default;
102
103 virtual std::string GetName() const override { return Name(); }
104
105 protected:
107 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHardwareInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HardwareInfoMessage>
108 {
109 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHardwareInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HardwareInfoMessage>;
110 using Base::ResponseMessage;
111
112 public:
113 CallDataGetHardwareInfo(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
114 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetHardwareInfo) {}
115 virtual ~CallDataGetHardwareInfo() = default;
116
117 private:
118 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
119 {
120 auto StreamSizeMsg = std::make_unique<DynExpProto::NetworkTimeTagger::HardwareInfoMessage>();
121 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
122 auto Instrument = ModuleData->GetTimeTagger();
123
124 ResponseMessage.set_mininputthresholdinvolts(Instrument->GetMinThresholdInVolts());
125 ResponseMessage.set_maxinputthresholdinvolts(Instrument->GetMaxThresholdInVolts());
126 ResponseMessage.set_timingresolutioninpicoseconds(Instrument->GetResolution().count());
127 }
128 };
129
131 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetBufferInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::BufferInfoMessage>
132 {
133 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetBufferInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::BufferInfoMessage>;
134 using Base::ResponseMessage;
135
136 public:
137 CallDataGetBufferInfo(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
138 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetBufferInfo) {}
139 virtual ~CallDataGetBufferInfo() = default;
140
141 private:
142 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
143 {
144 auto StreamSizeMsg = std::make_unique<DynExpProto::NetworkTimeTagger::BufferInfoMessage>();
145 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
146 auto Instrument = ModuleData->GetTimeTagger();
147
148 ResponseMessage.set_buffersizeinsamples(Instrument->GetBufferSize());
149 }
150 };
151
153 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamMode, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::StreamModeMessage>
154 {
155 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamMode, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::StreamModeMessage>;
156 using Base::ResponseMessage;
157
158 public:
159 CallDataGetStreamMode(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
160 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetStreamMode) {}
161 virtual ~CallDataGetStreamMode() = default;
162
163 private:
164 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
165 {
166 auto StreamSizeMsg = std::make_unique<DynExpProto::NetworkTimeTagger::StreamModeMessage>();
167 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
168 auto Instrument = ModuleData->GetTimeTagger();
169 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::TimeTagger>(Instrument->GetInstrumentData());
170
171 ResponseMessage.set_streammode(InstrData->GetStreamMode() == DynExpInstr::TimeTaggerData::StreamModeType::Counts ?
172 DynExpProto::NetworkTimeTagger::StreamModeType::Counts : DynExpProto::NetworkTimeTagger::StreamModeType::Events);
173 }
174 };
175
177 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetStreamMode, ThisServiceType, DynExpProto::NetworkTimeTagger::StreamModeMessage, DynExpProto::Common::VoidMessage>
178 {
179 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetStreamMode, ThisServiceType, DynExpProto::NetworkTimeTagger::StreamModeMessage, DynExpProto::Common::VoidMessage>;
180 using Base::RequestMessage;
181
182 public:
183 CallDataSetStreamMode(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
184 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetStreamMode) {}
185 virtual ~CallDataSetStreamMode() = default;
186
187 private:
188 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
189 {
190 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
191 auto Instrument = ModuleData->GetTimeTagger();
192 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::TimeTagger>(Instrument->GetInstrumentData());
193
194 InstrData->SetStreamMode(RequestMessage.streammode() == DynExpProto::NetworkTimeTagger::StreamModeType::Counts ?
196 }
197 };
198
200 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataClearBuffer, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
201 {
202 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataClearBuffer, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
203
204 public:
205 CallDataClearBuffer(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
206 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestClearBuffer) {}
207 virtual ~CallDataClearBuffer() = default;
208
209 private:
210 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
211 {
212 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
213 auto Instrument = ModuleData->GetTimeTagger();
214
215 Instrument->Clear();
216 }
217 };
218
220 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataConfigureInput, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureInputMessage, DynExpProto::Common::VoidMessage>
221 {
222 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataConfigureInput, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureInputMessage, DynExpProto::Common::VoidMessage>;
223 using Base::RequestMessage;
224
225 public:
226 CallDataConfigureInput(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
227 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestConfigureInput) {}
228 virtual ~CallDataConfigureInput() = default;
229
230 private:
231 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
232 {
233 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
234 auto Instrument = ModuleData->GetTimeTagger();
235
236 Instrument->ConfigureInput(RequestMessage.userisingedge(), RequestMessage.thresholdinvolts());
237 }
238 };
239
241 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetExposureTime, ThisServiceType, DynExpProto::NetworkTimeTagger::ExposureTimeMessage, DynExpProto::Common::VoidMessage>
242 {
243 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetExposureTime, ThisServiceType, DynExpProto::NetworkTimeTagger::ExposureTimeMessage, DynExpProto::Common::VoidMessage>;
244 using Base::RequestMessage;
245
246 public:
247 CallDataSetExposureTime(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
248 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetExposureTime) {}
249 virtual ~CallDataSetExposureTime() = default;
250
251 private:
252 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
253 {
254 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
255 auto Instrument = ModuleData->GetTimeTagger();
256
257 Instrument->SetExposureTime(Util::picoseconds(RequestMessage.exposuretimeinpicoseconds()));
258 }
259 };
260
262 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetCoincidenceWindow, ThisServiceType, DynExpProto::NetworkTimeTagger::CoincidenceWindowMessage, DynExpProto::Common::VoidMessage>
263 {
264 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetCoincidenceWindow, ThisServiceType, DynExpProto::NetworkTimeTagger::CoincidenceWindowMessage, DynExpProto::Common::VoidMessage>;
265 using Base::RequestMessage;
266
267 public:
269 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetCoincidenceWindow) {}
270 virtual ~CallDataSetCoincidenceWindow() = default;
271
272 private:
273 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
274 {
275 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
276 auto Instrument = ModuleData->GetTimeTagger();
277
278 Instrument->SetCoincidenceWindow(Util::picoseconds(RequestMessage.coincidencewindowinpicoseconds()));
279 }
280 };
281
283 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetInputDelay, ThisServiceType, DynExpProto::NetworkTimeTagger::InputDelayMessage, DynExpProto::Common::VoidMessage>
284 {
285 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetInputDelay, ThisServiceType, DynExpProto::NetworkTimeTagger::InputDelayMessage, DynExpProto::Common::VoidMessage>;
286 using Base::RequestMessage;
287
288 public:
289 CallDataSetInputDelay(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
290 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetInputDelay) {}
291 virtual ~CallDataSetInputDelay() = default;
292
293 private:
294 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
295 {
296 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
297 auto Instrument = ModuleData->GetTimeTagger();
298
299 Instrument->SetDelay(Util::picoseconds(RequestMessage.delayinpicoseconds()));
300 }
301 };
302
304 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetHBTActive, ThisServiceType, DynExpProto::NetworkTimeTagger::HBTActiveMessage, DynExpProto::Common::VoidMessage>
305 {
306 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetHBTActive, ThisServiceType, DynExpProto::NetworkTimeTagger::HBTActiveMessage, DynExpProto::Common::VoidMessage>;
307 using Base::RequestMessage;
308
309 public:
310 CallDataSetHBTActive(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
311 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetHBTActive) {}
312 virtual ~CallDataSetHBTActive() = default;
313
314 private:
315 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
316 {
317 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
318 auto Instrument = ModuleData->GetTimeTagger();
319
320 Instrument->SetHBTActive(RequestMessage.enable());
321 }
322 };
323
325 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataConfigureHBT, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureHBTMessage, DynExpProto::Common::VoidMessage>
326 {
327 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataConfigureHBT, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureHBTMessage, DynExpProto::Common::VoidMessage>;
328 using Base::RequestMessage;
329
330 public:
331 CallDataConfigureHBT(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
332 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestConfigureHBT) {}
333 virtual ~CallDataConfigureHBT() = default;
334
335 private:
336 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
337 {
338 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
339 auto Instrument = ModuleData->GetTimeTagger();
340
341 Instrument->ConfigureHBT(Util::picoseconds(RequestMessage.binwidthinpicoseconds()), RequestMessage.bincount());
342 }
343 };
344
346 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataResetHBT, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
347 {
348 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataResetHBT, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
349
350 public:
351 CallDataResetHBT(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
352 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestResetHBT) {}
353 virtual ~CallDataResetHBT() = default;
354
355 private:
356 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
357 {
358 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
359 auto Instrument = ModuleData->GetTimeTagger();
360
361 Instrument->ResetHBT();
362 }
363 };
364
366 : public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHBTResults, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HBTResultsMessage>
367 {
368 using Base = gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHBTResults, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HBTResultsMessage>;
369 using Base::ResponseMessage;
370
371 public:
372 CallDataGetHBTResults(const gRPCModule<gRPCServices...>* const OwningModule) noexcept
373 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetHBTResults) {}
374 virtual ~CallDataGetHBTResults() = default;
375
376 private:
377 virtual void ProcessChildImpl(DynExp::ModuleInstance& Instance) override
378 {
379 auto StreamSizeMsg = std::make_unique<DynExpProto::NetworkTimeTagger::BufferInfoMessage>();
380 auto ModuleData = DynExp::dynamic_ModuleData_cast<NetworkTimeTaggerT>(Instance.ModuleDataGetter());
381 auto Instrument = ModuleData->GetTimeTagger();
382 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::TimeTagger>(Instrument->GetInstrumentData());
383
384 ResponseMessage.set_enabled(InstrData->GetHBTResults().Enabled);
385 ResponseMessage.set_eventcounts(Util::NumToT<google::protobuf::uint64>(InstrData->GetHBTResults().EventCounts));
386 ResponseMessage.set_integrationtimeinmicroseconds(Util::NumToT<google::protobuf::uint64>(InstrData->GetHBTResults().IntegrationTime.count()));
387
388 for (const auto& Sample : InstrData->GetHBTResults().ResultVector)
389 {
390 auto BasicSampleMsg = ResponseMessage.add_results();
391 BasicSampleMsg->set_value(Sample.Value);
392 BasicSampleMsg->set_time(Sample.Time);
393 }
394 }
395 };
396
397 private:
402
404
406 {
407 CallDataGetHardwareInfo::MakeCall(this, Instance);
408 CallDataGetBufferInfo::MakeCall(this, Instance);
409 CallDataGetStreamMode::MakeCall(this, Instance);
410 CallDataSetStreamMode::MakeCall(this, Instance);
411 CallDataClearBuffer::MakeCall(this, Instance);
412 CallDataConfigureInput::MakeCall(this, Instance);
413 CallDataSetExposureTime::MakeCall(this, Instance);
414 CallDataSetCoincidenceWindow::MakeCall(this, Instance);
415 CallDataSetInputDelay::MakeCall(this, Instance);
416 CallDataSetHBTActive::MakeCall(this, Instance);
417 CallDataConfigureHBT::MakeCall(this, Instance);
418 CallDataResetHBT::MakeCall(this, Instance);
419 CallDataGetHBTResults::MakeCall(this, Instance);
420
422 }
423
425
426 virtual void ValidateInstrType(const DynExpInstr::DataStreamInstrument* Instr) const override { DynExp::dynamic_Object_cast<typename ModuleDataType::InstrType>(Instr); }
427 };
428
433}
Implementation of a gRPC server module to provide remote access to a data stream instrument meta inst...
Implementation of the data stream meta instrument, which is a base class for all instruments reading/...
@ Counts
Read out summarized count rates in Hz.
Definition TimeTagger.h:135
@ Events
Read out the timestamps of all time-tagged events.
Definition TimeTagger.h:136
Meta instrument for a time tagging device to assign timestamps to (e.g. photon) detection events base...
Definition TimeTagger.h:255
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< NetworkDataStreamInstrumentData< gRPCServices... > >) override final
virtual ~NetworkTimeTaggerData()=default
virtual void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< NetworkTimeTaggerData >)
void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkDataStreamInstrumentParams< gRPCServices... > >) override final
NetworkTimeTaggerParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
virtual ~NetworkTimeTaggerParams()=default
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
virtual void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkTimeTaggerParams >)
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataClearBuffer(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataClearBuffer, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataConfigureHBT, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureHBTMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataConfigureHBT(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataConfigureInput, ThisServiceType, DynExpProto::NetworkTimeTagger::ConfigureInputMessage, DynExpProto::Common::VoidMessage > Base
CallDataConfigureInput(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetBufferInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::BufferInfoMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataGetBufferInfo(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetHBTResults, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HBTResultsMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataGetHBTResults(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
CallDataGetHardwareInfo(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetHardwareInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::HardwareInfoMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetStreamMode, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkTimeTagger::StreamModeMessage > Base
CallDataGetStreamMode(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataResetHBT, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
CallDataResetHBT(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataSetCoincidenceWindow(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetCoincidenceWindow, ThisServiceType, DynExpProto::NetworkTimeTagger::CoincidenceWindowMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetExposureTime, ThisServiceType, DynExpProto::NetworkTimeTagger::ExposureTimeMessage, DynExpProto::Common::VoidMessage > Base
CallDataSetExposureTime(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetHBTActive, ThisServiceType, DynExpProto::NetworkTimeTagger::HBTActiveMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataSetHBTActive(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetInputDelay, ThisServiceType, DynExpProto::NetworkTimeTagger::InputDelayMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataSetInputDelay(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetStreamMode, ThisServiceType, DynExpProto::NetworkTimeTagger::StreamModeMessage, DynExpProto::Common::VoidMessage > Base
CallDataSetStreamMode(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual std::string GetName() const override
Returns the name of this Object type.
virtual void ValidateInstrType(const DynExpInstr::DataStreamInstrument *Instr) const override
void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT< gRPCServices... > >, DynExp::ModuleInstance &Instance) const override final
void ResetImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT< gRPCServices... > >) override final
static constexpr auto Name() noexcept
virtual void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< NetworkTimeTaggerT >, DynExp::ModuleInstance &Instance) const
virtual ~NetworkTimeTaggerT()=default
DynExpProto::NetworkTimeTagger::NetworkTimeTagger ThisServiceType
NetworkTimeTaggerT(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
virtual void ResetImpl(DynExp::Object::dispatch_tag< NetworkTimeTaggerT >)
Module template for building gRPC servers listening on TCP sockets for network instruments to connect...
Definition gRPCModule.h:116
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Definition DynExpCore.h:127
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Definition Module.h:743
Refer to ParamsBase::dispatch_tag.
Definition Module.h:189
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
Definition Module.h:793
const ModuleBase::ModuleDataGetterType ModuleDataGetter
Getter for module's data. Refer to ModuleBase::ModuleDataGetterType.
Definition Module.h:825
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
Definition Object.h:2302
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Definition Object.h:2303
Refer to ParamsBase::dispatch_tag.
Definition Object.h:2018
Dummy parameter which is to be owned once by parameter classes that do not contain any other paramete...
Definition Object.h:522
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
Definition Object.h:1779
const DynExpCore & Core
Reference to DynExp's core.
Definition Object.h:1780
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Definition Object.h:349
Thrown when an operation timed out before it could be completed, especially used for locking shared d...
Definition Exception.h:261
DynExp's module namespace contains the implementation of DynExp modules which extend DynExp's core fu...
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
Definition Object.h:1807
size_t ItemIDType
ID type of objects/items managed by DynExp.
std::chrono::duration< double, std::pico > picoseconds
Extends std::chrono by a duration data type for picoseconds.
Definition Util.h:762
Accumulates include statements to provide a precompiled header.