Skip to content
Prev Previous commit
Next Next commit
Make buffer access const, received buffers should be unmutable by def…
…ault
  • Loading branch information
mkrzewic authored and shahor02 committed Feb 6, 2017
commit 697223df58a1a1d835f8571e0aa165f8da0d8d8e
12 changes: 6 additions & 6 deletions DataFormats/Headers/include/Headers/DataHeader.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,9 +242,9 @@ struct BaseHeader
/// @brief access header in buffer
///
/// this is to guess if the buffer starting at b looks like a header
inline static const BaseHeader* get(byte* b, size_t /*len*/=0) {
return (*(reinterpret_cast<uint32_t*>(b))==sMagicString) ?
reinterpret_cast<BaseHeader*>(b) :
inline static const BaseHeader* get(const byte* b, size_t /*len*/=0) {
return (*(reinterpret_cast<const uint32_t*>(b))==sMagicString) ?
reinterpret_cast<const BaseHeader*>(b) :
nullptr;
}

Expand All @@ -264,7 +264,7 @@ struct BaseHeader
/// use like this:
/// HeaderType* h = get<HeaderType>(buffer)
template<typename HeaderType>
const HeaderType* get(byte* buffer, size_t /*len*/=0) {
const HeaderType* get(const byte* buffer, size_t /*len*/=0) {
const BaseHeader* current = BaseHeader::get(buffer);
if (!current) return nullptr;
if (current->description==HeaderType::sHeaderType)
Expand Down Expand Up @@ -304,8 +304,8 @@ struct Block {
size_t bufferSize;
Buffer buffer;

byte* data() {return buffer.get();}
size_t size() {return bufferSize;}
byte* data() const {return buffer.get();}
size_t size() const {return bufferSize;}

///The magic constructor: takes arbitrary number of arguments and serialized them
/// into the buffer.
Expand Down
11 changes: 5 additions & 6 deletions Utilities/O2device/include/O2device/O2device.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,11 @@ class O2device : public FairMQDevice
/// currently this is old school: buf,len pairs;
/// In the end I'd like to move to array_view
/// when this becomes available (either with C++17 or via GSL)
template<typename T>
bool ForEach(O2message& parts,
bool (T::* memberFunction)(byte* headerBuffer, size_t headerBufferSize,
byte* dataBuffer, size_t dataBufferSize)) {

if ((parts.Size()%2) != 0)
template <typename T>
bool ForEach(O2message& parts, bool (T::*memberFunction)(const byte* headerBuffer, size_t headerBufferSize,
const byte* dataBuffer, size_t dataBufferSize))
{
if ((parts.Size() % 2) != 0)
throw std::invalid_argument("number of parts in message not even (n%2 != 0)");

for (auto it = parts.fParts.begin(); it != parts.fParts.end(); ++it) {
Expand Down
4 changes: 2 additions & 2 deletions Utilities/fairMQmonitor/include/fairMQmonitor/FairMQmonitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ class FairMQmonitor : public AliceO2::Base::O2device
virtual void Run();
void InitTask();
bool HandleData(AliceO2::Base::O2message& parts, int index);
bool HandleO2frame(byte* headerBuffer, size_t headerBufferSize,
byte* dataBuffer, size_t dataBufferSize);
bool HandleO2frame(const byte* headerBuffer, size_t headerBufferSize,
const byte* dataBuffer, size_t dataBufferSize);

private:
AliceO2::Header::DataHeader mDataHeader;
Expand Down
4 changes: 2 additions & 2 deletions Utilities/fairMQmonitor/src/FairMQmonitor.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ void FairMQmonitor::Run()
}

//__________________________________________________________________________________________________
bool FairMQmonitor::HandleO2frame(byte* headerBuffer, size_t headerBufferSize,
byte* dataBuffer, size_t dataBufferSize)
bool FairMQmonitor::HandleO2frame(const byte* headerBuffer, size_t headerBufferSize,
const byte* dataBuffer, size_t dataBufferSize)
{

hexDump("headerBuffer", headerBuffer, headerBufferSize);
Expand Down