Program Listing for File Moderator.hpp
↰ Return to documentation for file (/tmp/ws/src/rmf_traffic/rmf_traffic/include/rmf_traffic/blockade/Moderator.hpp
)
/*
* Copyright (C) 2020 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_TRAFFIC__BLOCKADE__MODERATOR_HPP
#define RMF_TRAFFIC__BLOCKADE__MODERATOR_HPP
#include <rmf_utils/impl_ptr.hpp>
#include <rmf_traffic/blockade/Writer.hpp>
namespace rmf_traffic {
namespace blockade {
//==============================================================================
class Moderator : public Writer
{
public:
//============================================================================
// Writer API
//============================================================================
// Documentation inherited
void set(
ParticipantId participant_id,
ReservationId reservation_id,
const Reservation& reservation) final;
// Documentation inherited
void ready(
ParticipantId participant_id,
ReservationId reservation_id,
CheckpointId checkpoint) final;
// Documentation inherited
void release(
ParticipantId participant_id,
ReservationId reservation_id,
CheckpointId checkpoint) final;
// Documentation inherited
void reached(
ParticipantId participant_id,
ReservationId reservation_id,
CheckpointId checkpoint) final;
// Documentation inherited
void cancel(
ParticipantId participant_id,
ReservationId reservation_id) final;
// Documentation inherited
void cancel(ParticipantId participant_id) final;
//============================================================================
// Moderator API
//============================================================================
Moderator(
std::function<void(std::string)> info_logger = nullptr,
std::function<void(std::string)> debug_logger = nullptr,
double min_conflict_angle = 5.0* M_PI/180.0);
double minimum_conflict_angle() const;
Moderator& minimum_conflict_angle(double new_value);
Moderator& info_logger(std::function<void(std::string)> info);
Moderator& debug_logger(std::function<void(std::string)> debug);
class Assignments
{
public:
std::size_t version() const;
const std::unordered_map<ParticipantId, ReservedRange>& ranges() const;
class Implementation;
private:
Assignments();
rmf_utils::impl_ptr<Implementation> _pimpl;
};
const Assignments& assignments() const;
const std::unordered_map<ParticipantId, Status>& statuses() const;
bool has_gridlock() const;
class Implementation;
private:
rmf_utils::impl_ptr<Implementation> _pimpl;
};
} // namespace blockade
} // namespace rmf_traffic
#endif // RMF_TRAFFIC__BLOCKADE__MODERATOR_HPP