ROSCommunicator.h 643 Bytes
Newer Older
1 2
#pragma once

3
#include "ros_bridge/rapidjson/include/rapidjson/document.h"
4

5 6
#include <memory>
#include <tuple>
7

8 9 10 11 12 13
#include "boost/lockfree/queue.hpp"
#include "ros_bridge/include/

namespace ROSBridge {
namespace lf = ::boost::lockfree;
class Communicator
14
{
15 16
    typedef std::unique_ptr<rapidjson::Document> UniqueJsonPtr;
    typedef std::tuple<UniqueJsonPtr, std::string> MsgTopicHashPair;
17
public:
18
  explicit Communicator() {}
19

20 21 22 23
    void send(UniqueJsonPtr &msg);
    void start();
    void stop();
    virtual UniqueJsonPtr receive() = 0;
24

25 26 27
private:
    lf::queue<MsgTopicPair> _transmittBuffer;
    lf::queue<MsgTopicPair> _receiveBuffer;
28
};
29
}