#pragma once #include "boost/lockfree/queue.hpp" #include namespace ROSBridge { namespace Bridge { namespace lf = ::boost::lockfree; template class PackageBuffer { public: PackageBuffer(); void push(T t) { buffer.push(t); if (_pushCallback) _pushCallback(); } T pop() { T temp = buffer.pop(); if (_popCallback) _popCallback(); return temp; } void setPushCallback(std::function pushCallback) { _pushCallback = pushCallback; } void setPopCallback(std::function popCallback) { _popCallback = popCallback; } bool empty() const { return buffer.empty();} private: lf::queue buffer; std::function _popCallback; std::function _pushCallback; }; } // namespace Communicator } // namespace