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(); }