server.h 876 Bytes
Newer Older
1
#pragma once
2

3
#include "ros_bridge/include/com_private.h"
4 5
#include "ros_bridge/include/RosBridgeClient.h"

6 7
#include <unordered_map>

8 9
namespace ros_bridge {
namespace com_private {
10 11 12

class Server
{
13
    typedef std::unordered_map<std::string, std::string>  ServiceMap;
14
public:
15 16 17 18
    typedef std::function<JsonDocUPtr(JsonDocUPtr)> CallbackType;


    Server() = delete;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
19
    Server(RosbridgeWsClient &rbc);
20 21 22 23
    ~Server();

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

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

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

private:

    RosbridgeWsClient  &_rbc;
35 36
    ServiceMap         _serviceMap;
    std::shared_ptr<std::atomic_bool> _stopped;
37 38 39
};
} // namespace ComPrivate
} // namespace ROSBridge