aboutsummaryrefslogtreecommitdiffstats
path: root/src/InputZeroMQReader.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2018-03-06 22:53:36 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2018-03-06 22:53:36 +0100
commit56dfbcd73529ee6dc42a17a139c9ceaccf1def3d (patch)
tree47580fcfa894fca04805f670ec6acf30a08a6f5d /src/InputZeroMQReader.cpp
parent5bea9241b246cfc4b9abef3d265a96d52a377c37 (diff)
downloaddabmod-56dfbcd73529ee6dc42a17a139c9ceaccf1def3d.tar.gz
dabmod-56dfbcd73529ee6dc42a17a139c9ceaccf1def3d.tar.bz2
dabmod-56dfbcd73529ee6dc42a17a139c9ceaccf1def3d.zip
Avoid copies in ThreadsafeQueue and Buffer
Diffstat (limited to 'src/InputZeroMQReader.cpp')
-rw-r--r--src/InputZeroMQReader.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/InputZeroMQReader.cpp b/src/InputZeroMQReader.cpp
index 1bb325f..e1e1c6d 100644
--- a/src/InputZeroMQReader.cpp
+++ b/src/InputZeroMQReader.cpp
@@ -36,7 +36,6 @@
#include <cstdio>
#include <stdint.h>
#include "zmq.hpp"
-#include <boost/thread/thread.hpp>
#include "InputReader.h"
#include "PcDebug.h"
#include "Utils.h"
@@ -88,7 +87,7 @@ int InputZeroMQReader::Open(const string& uri, size_t max_queued_frames)
m_max_queued_frames = max_queued_frames;
- m_recv_thread = boost::thread(&InputZeroMQReader::RecvProcess, this);
+ m_recv_thread = std::thread(&InputZeroMQReader::RecvProcess, this);
return 0;
}
@@ -99,7 +98,7 @@ int InputZeroMQReader::GetNextFrame(void* buffer)
return 0;
}
- shared_ptr<vector<uint8_t> > incoming;
+ vector<uint8_t> incoming;
/* Do some prebuffering because reads will happen in bursts
* (4 ETI frames in TM1) and we should make sure that
@@ -122,11 +121,11 @@ int InputZeroMQReader::GetNextFrame(void* buffer)
const size_t framesize = 6144;
- if (incoming->empty()) {
+ if (incoming.empty()) {
return 0;
}
- else if (incoming->size() == framesize) {
- memcpy(buffer, &incoming->front(), framesize);
+ else if (incoming.size() == framesize) {
+ memcpy(buffer, &incoming.front(), framesize);
}
else {
throw logic_error("ZMQ ETI not 6144");
@@ -184,7 +183,7 @@ void InputZeroMQReader::RecvProcess()
const int num_events = zmq::poll(items, 1, zmq_timeout_ms);
if (num_events == 0) {
// timeout is signalled by an empty buffer
- auto buf = make_shared<vector<uint8_t> >();
+ vector<uint8_t> buf;
m_in_messages.push(buf);
continue;
}
@@ -228,7 +227,7 @@ void InputZeroMQReader::RecvProcess()
throw runtime_error(ss.str());
}
else {
- auto buf = make_shared<vector<uint8_t> >(6144, 0x55);
+ vector<uint8_t> buf(6144, 0x55);
const int framesize = dab_msg->buflen[i];
@@ -236,13 +235,13 @@ void InputZeroMQReader::RecvProcess()
throw runtime_error("ZeroMQ packet too small");
}
- memcpy(&buf->front(),
+ memcpy(&buf.front(),
((uint8_t*)incoming.data()) + offset,
framesize);
offset += framesize;
- queue_size = m_in_messages.push(buf);
+ queue_size = m_in_messages.push(move(buf));
etiLog.log(trace, "ZMQ,push %zu", queue_size);
}
}