mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 08:41:16 +00:00
- Extend the multipart API to allow sending vectors of messages or helper thin wrapper FairMQParts. See example in examples/MQ/8-multipart. - NewMessage() can be used in devices instead of fTransportFactory->CreateMessage(). Possible arguments remain unchanged (no args, size or data+size). - Send()/Receive() methods can be used in devices instead of fChannels.at("chan").at(i).Send()/Receive(): Send(msg, "chan", i = 0), Receive(msg, "chan", i = 0). - Use the new methods in MQ examples and tests. - No breaking changes, but FAIRMQ_INTERFACE_VERSION is incremented to 3 to allow to check for new methods.
53 lines
1.9 KiB
C++
53 lines
1.9 KiB
C++
/********************************************************************************
|
|
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
|
* *
|
|
* This software is distributed under the terms of the *
|
|
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
|
* copied verbatim in the file "LICENSE" *
|
|
********************************************************************************/
|
|
|
|
#ifndef FAIRMQPARTS_H_
|
|
#define FAIRMQPARTS_H_
|
|
|
|
#include <vector>
|
|
#include <memory> // unique_ptr
|
|
|
|
#include "FairMQTransportFactory.h"
|
|
#include "FairMQMessage.h"
|
|
|
|
class FairMQParts
|
|
{
|
|
public:
|
|
/// Default constructor
|
|
FairMQParts() {};
|
|
/// Copy Constructor
|
|
FairMQParts(const FairMQParts&) = delete;
|
|
/// Assignment operator
|
|
FairMQParts& operator=(const FairMQParts&) = delete;
|
|
/// Default destructor
|
|
~FairMQParts() {};
|
|
|
|
/// Adds part (FairMQMessage) to the container
|
|
/// @param msg message pointer (for example created with NewMessage() method of FairMQDevice)
|
|
inline void AddPart(FairMQMessage* msg)
|
|
{
|
|
fParts.push_back(std::unique_ptr<FairMQMessage>(msg));
|
|
}
|
|
|
|
/// Get reference to part in the container at index (without bounds check)
|
|
/// @param index container index
|
|
inline FairMQMessage& operator[](const int index) { return *(fParts[index]); }
|
|
|
|
/// Get reference to part in the container at index (with bounds check)
|
|
/// @param index container index
|
|
inline FairMQMessage& At(const int index) { return *(fParts.at(index)); }
|
|
|
|
/// Get number of parts in the container
|
|
/// @return number of parts in the container
|
|
inline int Size() const { return fParts.size(); }
|
|
|
|
std::vector<std::unique_ptr<FairMQMessage>> fParts;
|
|
};
|
|
|
|
#endif /* FAIRMQPARTS_H_ */
|