3 #ifndef VISR_PML_MESSAGE_QUEUE_PROTOCOL_HPP_INCLUDED 4 #define VISR_PML_MESSAGE_QUEUE_PROTOCOL_HPP_INCLUDED 38 template<
class DataType >
class Input;
40 template<
class DataType >
class Output;
44 static constexpr
const char *
staticName() {
return sProtocolName; }
68 std::size_t numberOfElements()
const;
70 void enqueue( std::unique_ptr<ParameterBase>& val );
83 void popNextElement();
94 using QueueType = std::deque<std::unique_ptr<ParameterBase> >;
102 std::unique_ptr<ParameterConfigBase>
const mParameterConfig;
107 static constexpr
const char * sProtocolName =
"MessageQueue";
120 : mProtocol( nullptr )
134 return mProtocol->empty();
139 return mProtocol->numberOfElements();
144 return mProtocol->nextElement();
149 mProtocol->popNextElement();
159 mProtocol = protocol;
163 bool isConnected()
const override 165 return mProtocol !=
nullptr;
172 template<
typename MessageType>
178 return static_cast<MessageType
const &
>( InputBase::front() );
192 : mProtocol( nullptr )
206 return mProtocol->empty();
211 return mProtocol->numberOfElements();
214 void enqueue( std::unique_ptr<ParameterBase> && val )
217 mProtocol->enqueue( val );
222 mProtocol = protocol;
225 bool isConnected()
const override 227 return mProtocol !=
nullptr;
234 template<
class MessageType>
240 OutputBase::enqueue( std::unique_ptr<ParameterBase>(
new MessageType( val ) ) );
245 OutputBase::enqueue( std::unique_ptr<MessageType>(
new MessageType( val )) );
254 #endif // VISR_PML_MESSAGE_QUEUE_PROTOCOL_HPP_INCLUDED
static constexpr const char * staticName()
Definition: message_queue_protocol.hpp:44
std::size_t size() const
Definition: message_queue_protocol.hpp:209
uint64_t ParameterType
Definition: parameter_type.hpp:13
void enqueue(MessageType &&val)
Definition: message_queue_protocol.hpp:243
static constexpr CommunicationProtocolType staticType()
Definition: message_queue_protocol.hpp:42
Definition: message_queue_protocol.hpp:40
MessageQueueProtocol const * getProtocol() const override
Definition: message_queue_protocol.hpp:202
Definition: message_queue_protocol.hpp:185
void setProtocolInstance(MessageQueueProtocol *protocol)
Definition: message_queue_protocol.hpp:220
std::uint64_t CommunicationProtocolType
Definition: communication_protocol_type.hpp:14
void enqueue(MessageType const &val)
Definition: message_queue_protocol.hpp:238
#define DEFINE_COMMUNICATION_PROTOCOL(CommunicationProtocolClassType, CommunicationProtocolId, CommunicationProtocolName)
Definition: communication_protocol_type.hpp:44
bool empty() const
Definition: message_queue_protocol.hpp:204
Definition: options.cpp:10
OutputBase()
Definition: message_queue_protocol.hpp:191
Definition: parameter_config_base.hpp:22
MessageQueueProtocol * getProtocol() override
Definition: message_queue_protocol.hpp:200
constexpr CommunicationProtocolType communicationProtocolTypeFromString(char const *typeString)
Definition: communication_protocol_type.hpp:16
Definition: communication_protocol_base.hpp:21
void enqueue(std::unique_ptr< ParameterBase > &&val)
Definition: message_queue_protocol.hpp:214
Definition: parameter_base.hpp:18
Definition: message_queue_protocol.hpp:31
Definition: communication_protocol_base.hpp:131