10 #define FAIRMQPARTS_H_ 12 #include "FairMQTransportFactory.h" 13 #include "FairMQMessage.h" 23 using container = std::vector<std::unique_ptr<FairMQMessage>>;
35 template <
typename... Ts>
44 fParts.push_back(std::unique_ptr<FairMQMessage>(msg));
50 void AddPart(std::unique_ptr<FairMQMessage>&& msg)
52 fParts.push_back(std::move(msg));
56 template <
typename... Ts>
57 void AddPart(std::unique_ptr<FairMQMessage>&& first, Ts&&... remaining)
60 AddPart(std::forward<Ts>(remaining)...);
66 container parts = std::move(other.fParts);
67 for (
auto& part : parts) {
68 fParts.push_back(std::move(part));
78 std::unique_ptr<FairMQMessage>&
At(
const int index) {
return fParts.at(index); }
81 FairMQMessage& AtRef(
const int index) {
return *(fParts.at(index)); }
85 int Size()
const {
return fParts.size(); }
90 using iterator = container::iterator;
91 using const_iterator = container::const_iterator;
92 auto begin() -> decltype(fParts.begin()) {
return fParts.begin(); }
93 auto end() -> decltype(fParts.end()) {
return fParts.end(); }
94 auto cbegin() -> decltype(fParts.cbegin()) {
return fParts.cbegin(); }
95 auto cend() -> decltype(fParts.cend()) {
return fParts.cend(); }
~FairMQParts()
Default destructor.
Definition: FairMQParts.h:38
void AddPart(std::unique_ptr< FairMQMessage > &&first, Ts &&... remaining)
Add variable list of parts to the container (move)
Definition: FairMQParts.h:57
FairMQMessage & operator[](const int index)
Definition: FairMQParts.h:74
void AddPart(FairMQParts &&other)
Add content of another object by move.
Definition: FairMQParts.h:64
void AddPart(FairMQMessage *msg)
Definition: FairMQParts.h:42
FairMQParts & operator=(const FairMQParts &)=delete
Assignment operator.
std::unique_ptr< FairMQMessage > & At(const int index)
Definition: FairMQParts.h:78
void AddPart(std::unique_ptr< FairMQMessage > &&msg)
Definition: FairMQParts.h:50
int Size() const
Definition: FairMQParts.h:85
FairMQParts(Ts &&... messages)
Constructor from argument pack of std::unique_ptr<FairMQMessage> rvalues.
Definition: FairMQParts.h:36
FairMQParts is a lightweight convenience wrapper around a vector of unique pointers to FairMQMessage...
Definition: FairMQParts.h:20
FairMQParts()
Default constructor.
Definition: FairMQParts.h:27
Definition: FairMQMessage.h:20