12 #include "../Instruments/NetworkDataStreamInstrument.h"
15 #include "NetworkDataStreamInstrument.grpc.pb.h"
19 template <
typename... gRPCServices>
20 class NetworkDataStreamInstrumentT;
22 template <
typename... gRPCServices>
40 template <
typename... gRPCServices>
47 virtual const char*
GetParamClassTag() const noexcept
override {
return "NetworkDataStreamInstrumentParams"; }
50 "DataStreamInstrument",
"Data stream instrument",
"Data stream instrument to receive data from with this network module",
DynExpUI::Icons::Instrument };
57 template <
typename... gRPCServices>
71 template <
typename... gRPCServices>
80 constexpr
static auto Name() noexcept {
return "Network Data Stream Instrument"; }
86 virtual std::string
GetName()
const override {
return Name(); }
90 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamInfoMessage>
92 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamInfoMessage>;
93 using Base::ResponseMessage;
97 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetStreamInfo) {}
103 auto StreamSizeMsg = std::make_unique<DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>();
106 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
109 ResponseMessage.set_hardwareminvalue(InstrData->GetHardwareMinValue());
110 ResponseMessage.set_hardwaremaxvalue(InstrData->GetHardwareMaxValue());
111 ResponseMessage.set_isbasicsampletimeused(InstrData->GetSampleStream()->IsBasicSampleTimeUsed());
113 StreamSizeMsg->set_streamsizeread(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeRead()));
114 StreamSizeMsg->set_streamsizewrite(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeWrite()));
115 ResponseMessage.set_allocated_streamsizemsg(StreamSizeMsg.release());
120 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataRead, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::ReadMessage, DynExpProto::NetworkDataStreamInstrument::ReadResultMessage>
122 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataRead, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::ReadMessage, DynExpProto::NetworkDataStreamInstrument::ReadResultMessage>;
123 using Base::RequestMessage;
124 using Base::ResponseMessage;
128 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestRead) {}
134 auto StartSample = Util::NumToT<size_t>(RequestMessage.startsampleid());
137 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
138 auto SampleStream = InstrData->template GetCastSampleStream<DynExpInstr::CircularDataStreamBase>();
142 if (SampleStream->GetNumSamplesWritten() == StartSample)
144 ResponseMessage.set_lastsampleid(Util::NumToT<google::protobuf::uint64>(StartSample));
147 if (SampleStream->GetNumSamplesWritten() < StartSample)
150 auto Samples = SampleStream->ReadRecentBasicSamples(StartSample);
152 ResponseMessage.set_lastsampleid(Util::NumToT<google::protobuf::uint64>(SampleStream->GetNumSamplesWritten()));
153 for (
const auto& Sample : Samples)
155 auto BasicSampleMsg = ResponseMessage.add_samples();
156 BasicSampleMsg->set_value(Sample.Value);
157 BasicSampleMsg->set_time(Sample.Time);
163 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataWrite, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::WriteMessage, DynExpProto::NetworkDataStreamInstrument::WriteResultMessage>
165 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataWrite, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::WriteMessage, DynExpProto::NetworkDataStreamInstrument::WriteResultMessage>;
166 using Base::RequestMessage;
167 using Base::ResponseMessage;
171 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestWrite) {}
179 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
181 for (decltype(RequestMessage.samples_size()) i = 0; i < RequestMessage.samples_size(); ++i)
182 InstrData->GetSampleStream()->WriteBasicSample({ RequestMessage.samples(i).value(), RequestMessage.samples(i).time() });
185 ResponseMessage.set_lastsampleid(InstrData->GetSampleStream()->GetNumSamplesWritten());
190 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataClearData, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
192 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataClearData, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
196 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestClearData) {}
204 ModuleData->GetDataStreamInstrument()->Clear();
209 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataStart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
211 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataStart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
215 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestStart) {}
223 ModuleData->GetDataStreamInstrument()->Start();
228 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataStop, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
230 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataStop, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
234 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestStop) {}
242 ModuleData->GetDataStreamInstrument()->Stop();
247 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataRestart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
249 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataRestart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
253 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestRestart) {}
261 ModuleData->GetDataStreamInstrument()->Restart();
266 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>
268 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>;
269 using Base::ResponseMessage;
273 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestGetStreamSize) {}
281 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
283 ResponseMessage.set_streamsizeread(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeRead()));
284 ResponseMessage.set_streamsizewrite(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeWrite()));
289 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetStreamSize, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>
291 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetStreamSize, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>;
292 using Base::RequestMessage;
293 using Base::ResponseMessage;
297 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestSetStreamSize) {}
307 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
308 ResponseMessage.set_streamsizeread(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeRead()));
309 ResponseMessage.set_streamsizewrite(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeWrite()));
314 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataResetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>
316 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataResetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage>;
317 using Base::ResponseMessage;
321 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestResetStreamSize) {}
331 auto InstrData = DynExp::dynamic_InstrumentData_cast<DynExpInstr::DataStreamInstrument>(
Instrument->GetInstrumentData());
332 ResponseMessage.set_streamsizeread(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeRead()));
333 ResponseMessage.set_streamsizewrite(Util::NumToT<google::protobuf::uint64>(InstrData->GetSampleStream()->GetStreamSizeWrite()));
338 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataHasFinished, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage>
340 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataHasFinished, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage>;
341 using Base::ResponseMessage;
345 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestHasFinished) {}
353 auto Finished =
ModuleData->GetDataStreamInstrument()->HasFinished();
355 ResponseMessage.set_value(Finished);
360 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataIsRunning, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage>
362 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataIsRunning, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage>;
363 using Base::ResponseMessage;
367 : Base::TypedCallDataBase(OwningModule, &ThisServiceType::AsyncService::RequestIsRunning) {}
377 ResponseMessage.set_value(
Running);
391 CallDataGetStreamInfo::MakeCall(
this, Instance);
392 CallDataRead::MakeCall(
this, Instance);
393 CallDataWrite::MakeCall(
this, Instance);
394 CallDataClearData::MakeCall(
this, Instance);
395 CallDataStart::MakeCall(
this, Instance);
396 CallDataStop::MakeCall(
this, Instance);
397 CallDataRestart::MakeCall(
this, Instance);
398 CallDataGetStreamSize::MakeCall(
this, Instance);
399 CallDataSetStreamSize::MakeCall(
this, Instance);
400 CallDataResetStreamSize::MakeCall(
this, Instance);
401 CallDataHasFinished::MakeCall(
this, Instance);
402 CallDataIsRunning::MakeCall(
this, Instance);
411 auto ModuleParams = DynExp::dynamic_Params_cast<NetworkDataStreamInstrumentT>(Instance->
ParamsGetter());
414 Instance->
LockObject(ModuleParams->DataStreamInstrument,
ModuleData->GetDataStreamInstrument());
423 +
") because an instrument assigned to this gRPC data stream server does not match the expected type.",
Util::ErrorType::Error);
Implementation of the data stream meta instrument, which is a base class for all instruments reading/...
virtual void SetStreamSize(size_t BufferSizeInSamples, DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const
Enqueues a task to set the size of the instrument's sample stream. The default implementation just ca...
virtual void ResetStreamSize(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const
Enqueues a task to reset the size of the instrument's sample stream to its default value.
virtual ~NetworkDataStreamInstrumentConfigurator()=default
NetworkDataStreamInstrumentConfigurator()=default
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...
virtual void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< NetworkDataStreamInstrumentData >)
auto & GetDataStreamInstrument() noexcept
NetworkDataStreamInstrumentData()
DynExp::LinkedObjectWrapperContainer< DynExpInstr::DataStreamInstrument > DataStreamInstrument
void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< gRPCModuleData< gRPCServices... >>) override final
virtual ~NetworkDataStreamInstrumentData()=default
NetworkDataStreamInstrumentParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
DynExp::ParamsBase::Param< DynExp::ObjectLink< DynExpInstr::DataStreamInstrument > > DataStreamInstrument
virtual ~NetworkDataStreamInstrumentParams()=default
void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< gRPCModuleParams< gRPCServices... >>) override final
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< NetworkDataStreamInstrumentParams >)
CallDataClearData(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataClearData()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataClearData, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetStreamInfo, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamInfoMessage > Base
CallDataGetStreamInfo(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataGetStreamInfo()=default
CallDataGetStreamSize(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage > Base
virtual ~CallDataGetStreamSize()=default
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataHasFinished(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataHasFinished()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataHasFinished, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataIsRunning(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataIsRunning, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::OptionalBoolMessage > Base
virtual ~CallDataIsRunning()=default
virtual ~CallDataRead()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataRead, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::ReadMessage, DynExpProto::NetworkDataStreamInstrument::ReadResultMessage > Base
CallDataRead(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataResetStreamSize()=default
CallDataResetStreamSize(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataResetStreamSize, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage > Base
CallDataRestart(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataRestart()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataRestart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetStreamSize, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage, DynExpProto::NetworkDataStreamInstrument::StreamSizeMessage > Base
CallDataSetStreamSize(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataSetStreamSize()=default
CallDataStart(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataStart, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataStart()=default
CallDataStop(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataStop, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
virtual ~CallDataStop()=default
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataWrite(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataWrite()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataWrite, ThisServiceType, DynExpProto::NetworkDataStreamInstrument::WriteMessage, DynExpProto::NetworkDataStreamInstrument::WriteResultMessage > Base
virtual void OnExitChild(DynExp::ModuleInstance *Instance) const override
Allows derived classes to unlock instruments they are controlling (e.g. with calls to DynExp::Runnabl...
virtual void ValidateInstrType(const DynExpInstr::DataStreamInstrument *Instr) const
void ResetImpl(DynExp::Object::dispatch_tag< gRPCModule< gRPCServices... >>) override final
virtual ~NetworkDataStreamInstrumentT()=default
virtual void ResetImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT >)
DynExpProto::NetworkDataStreamInstrument::NetworkDataStreamInstrument ThisServiceType
NetworkDataStreamInstrumentT(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
virtual std::string GetName() const override
Returns the name of this Object type.
virtual void OnInitChild(DynExp::ModuleInstance *Instance) const override
Allows derived classes to lock instruments they are controlling (e.g. with calls to DynExp::RunnableI...
constexpr static auto Name() noexcept
virtual void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< gRPCModule< gRPCServices... >>, DynExp::ModuleInstance &Instance) const override
virtual void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT >, DynExp::ModuleInstance &Instance) const
Configurator class for gRPCModule.
Data class for gRPCModule.
Parameter class for gRPCModule.
Module template for building gRPC servers listening on TCP sockets for network instruments to connect...
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Base class for modules. Modules implement programs on their own (e.g. measurement protocols or server...
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Configurator class for ModuleBase.
Data structure to contain data which is synchronized in between different threads....
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
const ModuleBase::ModuleDataGetterType ModuleDataGetter
Getter for module's data. Refer to ModuleBase::ModuleDataGetterType.
Parameter class for ModuleBase.
std::string GetCategoryAndName() const
Builds a string from an Object's category and name to allow the user to identify an Object's type.
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
auto GetObjectName(const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) const
Returns the name of this Object instance.
Refer to ParamsBase::dispatch_tag.
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
const DynExpCore & Core
Reference to DynExp's core.
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
const Object::ParamsGetterType ParamsGetter
Invoke to obtain the parameters (derived from ParamsBase) of Owner.
void UnlockObject(LinkedObjectWrapperContainer< ObjectT > &ObjectWrapperContainer)
Unlocks an Object instance stored in the LinkedObjectWrapperContainer ObjectWrapperContainer....
void LockObject(const ParamsBase::Param< ObjectLink< ObjectT >> &LinkParam, LinkedObjectWrapperContainer< ObjectT > &ObjectWrapperContainer, std::chrono::milliseconds Timeout=ObjectLinkBase::LockObjectTimeoutDefault)
Locks an Object instance referenced by a parameter LinkParam of type ParamsBase::Param< ObjectLink< O...
std::atomic< bool > Running
Indicates whether the RunnableObject instance is running.
void Log(const std::string &Message, const ErrorType Type=ErrorType::Info, const size_t Line=0, const std::string &Function="", const std::string &File="", const int ErrorCode=0, const std::stacktrace &Trace={}) noexcept
Logs an event from information specified manually.
Thrown when an attempt was made to convert two incompatible types into each other.
Defines a module template for building gRPC servers for network instruments to connect to.
constexpr DynExpProto::Common::UnitType ToPrototUnitType(DataStreamInstrumentData::UnitType Unit)
DynExp's module namespace contains the implementation of DynExp modules which extend DynExp's core fu...
NetworkDataStreamInstrumentT< DynExpProto::NetworkDataStreamInstrument::NetworkDataStreamInstrument > NetworkDataStreamInstrument
Explicit instantiation of derivable class NetworkDataStreamInstrumentT to create the network data str...
constexpr auto Instrument
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
size_t ItemIDType
ID type of objects/items managed by DynExp.
EventLogger & EventLog()
This function holds a static EventLogger instance and returns a reference to it. DynExp uses only one...
Accumulates include statements to provide a precompiled header.