server.h 1 KB
Newer Older
1
#pragma once
2

3
#include "ros_bridge/include/com_private.h"
4 5 6 7
#include "ros_bridge/include/RosBridgeClient.h"
#include "ros_bridge/include/TypeFactory.h"
#include "ros_bridge/include/CasePacker.h"

8 9
#include <unordered_map>

10 11
namespace ros_bridge {
namespace com_private {
12 13 14

class Server
{
15
    typedef std::unordered_map<std::string, std::string>  ServiceMap;
16
public:
17 18 19 20 21 22 23 24 25
    typedef std::function<JsonDocUPtr(JsonDocUPtr)> CallbackType;


    Server() = delete;
    Server(CasePacker &casePacker, RosbridgeWsClient &rbc);
    ~Server();

    //! @brief Starts the subscriber.
    void start();
26

27 28 29 30 31 32 33 34 35 36 37
    //! @brief Resets the subscriber.
    void reset();

    void advertiseService(const std::string& service,
                          const std::string& type,
                          const CallbackType& userCallback);

private:

    RosbridgeWsClient  &_rbc;
    CasePacker         &_casePacker;
38 39
    ServiceMap         _serviceMap;
    std::shared_ptr<std::atomic_bool> _stopped;
40 41 42
};
} // namespace ComPrivate
} // namespace ROSBridge