3 #ifndef VISR_PML_DOUBLE_BUFFERING_PROTOCOL_HPP_INCLUDED 4 #define VISR_PML_DOUBLE_BUFFERING_PROTOCOL_HPP_INCLUDED 37 template<
class DataType >
class Input;
39 template<
class DataType >
class Output;
63 static constexpr
char const *
staticName() {
return sProtocolName; }
104 void swapBuffers(
bool copyValue );
117 std::unique_ptr<ParameterConfigBase>
const mConfig;
120 std::vector<InputBase*> mInputs;
125 std::unique_ptr<ParameterBase> mBackData;
126 std::unique_ptr<ParameterBase> mFrontData;
128 static constexpr
const char * sProtocolName =
"DoubleBuffering";
133 VISR_PML_LIBRARY_SYMBOL
142 virtual ~InputBase();
146 bool changed()
const;
159 void markChanged() { mChanged =
true; }
165 template<
class MessageType>
166 class DoubleBufferingProtocol::Input:
public InputBase
170 using InputBase::changed;
172 using InputBase::resetChanged;
174 MessageType
const &
data()
const 176 return static_cast<MessageType const&
>(InputBase::data());
190 VISR_PML_LIBRARY_SYMBOL
198 virtual ~OutputBase();
213 void swapBuffers(
bool copyValue =
false );
221 template<
class MessageType>
225 using OutputBase::swapBuffers;
229 return static_cast<MessageType&
>(mProtocol->frontData());
238 #endif // VISR_PML_DOUBLE_BUFFERING_PROTOCOL_HPP_INCLUDED
static constexpr CommunicationProtocolType staticType()
Definition: double_buffering_protocol.hpp:58
Definition: double_buffering_protocol.hpp:39
uint64_t ParameterType
Definition: parameter_type.hpp:13
virtual CommunicationProtocolType protocolType() const override
Definition: double_buffering_protocol.hpp:75
std::uint64_t CommunicationProtocolType
Definition: communication_protocol_type.hpp:14
#define DEFINE_COMMUNICATION_PROTOCOL(CommunicationProtocolClassType, CommunicationProtocolId, CommunicationProtocolName)
Definition: communication_protocol_type.hpp:44
MessageType & data()
Definition: double_buffering_protocol.hpp:227
Definition: options.cpp:10
Definition: parameter_config_base.hpp:22
DoubleBufferingProtocol const * getProtocol() const override
Definition: double_buffering_protocol.hpp:154
constexpr CommunicationProtocolType communicationProtocolTypeFromString(char const *typeString)
Definition: communication_protocol_type.hpp:16
Definition: communication_protocol_base.hpp:21
DoubleBufferingProtocol * getProtocol() override
Definition: double_buffering_protocol.hpp:152
Definition: double_buffering_protocol.hpp:30
static constexpr char const * staticName()
Definition: double_buffering_protocol.hpp:63
Definition: parameter_base.hpp:18
Definition: communication_protocol_base.hpp:131