Program Listing for File BroadcastServer.hpp
↰ Return to documentation for file (/tmp/ws/src/rmf_ros2/rmf_websocket/include/rmf_websocket/BroadcastServer.hpp
)
/*
* Copyright (C) 2022 Open Source Robotics Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#ifndef RMF_WEBSOCKET__BROADCAST_SERVER_HPP
#define RMF_WEBSOCKET__BROADCAST_SERVER_HPP
#include <nlohmann/json.hpp>
#include <optional>
#include <rmf_utils/impl_ptr.hpp>
namespace rmf_websocket {
//==============================================================================
class BroadcastServer
{
public:
enum class ApiMsgType
{
TaskStateUpdate,
TaskLogUpdate,
FleetStateUpdate,
FleetLogUpdate,
};
using ApiMessageCallback = std::function<void(const nlohmann::json&)>;
static std::shared_ptr<BroadcastServer> make(
const int port,
ApiMessageCallback callback,
std::optional<ApiMsgType> msg_selection = std::nullopt);
void start();
void stop();
static const std::string to_string(const ApiMsgType& type);
class Implementation;
private:
BroadcastServer();
rmf_utils::unique_impl_ptr<Implementation> _pimpl;
};
} // namespace rmf_websocket
#endif // RMF_WEBSOCKET__BROADCAST_SERVER_HPP