change serialization API so that it takes a FairMQMessage reference

This commit is contained in:
winckler 2016-03-28 19:13:49 +02:00
parent 4c50409af5
commit 835c88c6d2
2 changed files with 9 additions and 5 deletions

View File

@ -98,19 +98,20 @@ class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
} }
//* //*
template<typename Serializer, typename MessageType, typename DataType, typename... Args> template<typename Serializer, typename DataType, typename... Args>
void Serialize(std::unique_ptr<FairMQMessage>& msg, DataType&& data, Args&&... args) const void Serialize(FairMQMessage& msg, DataType&& data, Args&&... args) const
{ {
Serializer().Serialize(msg,std::forward<DataType>(data),std::forward<Args>(args)...); Serializer().Serialize(msg,std::forward<DataType>(data),std::forward<Args>(args)...);
} }
template<typename Deserializer, typename DataType, typename... Args> template<typename Deserializer, typename DataType, typename... Args>
void Deserialize(std::unique_ptr<FairMQMessage>& msg, DataType&& data, Args&&... args) const void Deserialize(FairMQMessage& msg, DataType&& data, Args&&... args) const
{ {
Deserializer().Deserialize(msg,std::forward<DataType>(data),std::forward<Args>(args)...); Deserializer().Deserialize(msg,std::forward<DataType>(data),std::forward<Args>(args)...);
} }
// */
/*
// temporary overload to handle the case of a return ref to FairMQMessage // temporary overload to handle the case of a return ref to FairMQMessage
template<typename Serializer, typename MessageType, typename DataType> template<typename Serializer, typename MessageType, typename DataType>
void Serialize(MessageType&& msg, DataType&& data) const void Serialize(MessageType&& msg, DataType&& data) const
@ -124,7 +125,7 @@ class FairMQDevice : public FairMQStateMachine, public FairMQConfigurable
Deserializer().Deserialize(std::forward<MessageType>(msg), std::forward<DataType>(data)); Deserializer().Deserialize(std::forward<MessageType>(msg), std::forward<DataType>(data));
} }
// */
/// Shorthand method to receive `msg` on `chan` at index `i` /// Shorthand method to receive `msg` on `chan` at index `i`

View File

@ -81,6 +81,9 @@ class FairMQParts
/// @param index container index /// @param index container index
inline std::unique_ptr<FairMQMessage>& At(const int index) { return fParts.at(index); } inline std::unique_ptr<FairMQMessage>& At(const int index) { return fParts.at(index); }
inline FairMQMessage& At_ref(const int index) { return *(fParts.at(index)); }
template<typename Deserializer, typename DataType> template<typename Deserializer, typename DataType>
inline void At(DataType&& data, const int index) inline void At(DataType&& data, const int index)
{ {