Program Listing for File Database.hpp
↰ Return to documentation for file (/tmp/ws/src/rmf_traffic/rmf_traffic/include/rmf_traffic/schedule/Database.hpp
)
/*
* Copyright (C) 2019 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__SCHEDULE__DATABASE_HPP
#define RMF_TRAFFIC__SCHEDULE__DATABASE_HPP
#include <rmf_traffic/schedule/Inconsistencies.hpp>
#include <rmf_traffic/schedule/Viewer.hpp>
#include <rmf_traffic/schedule/Patch.hpp>
#include <rmf_traffic/schedule/Writer.hpp>
#include <rmf_traffic/schedule/Snapshot.hpp>
#include <rmf_utils/macros.hpp>
namespace rmf_traffic {
namespace schedule {
//==============================================================================
class Database : public ItineraryViewer, public Writer, public Snappable
{
public:
//============================================================================
// Writer API
//============================================================================
// Documentation inherited from Writer
void set(
ParticipantId participant,
PlanId plan,
const Itinerary& itinerary,
StorageId storage_base,
ItineraryVersion version) final;
// Documentation inherited from Writer
void extend(
ParticipantId participant,
const Itinerary& routes,
ItineraryVersion version) final;
// Documentation inherited from Writer
void delay(
ParticipantId participant,
Duration delay,
ItineraryVersion version) final;
// Documentation inherited from Writer
void reached(
ParticipantId participant,
PlanId plan,
const std::vector<CheckpointId>& reached_checkpoints,
ProgressVersion version) final;
// Documentation inherited from Writer
void clear(
ParticipantId participant,
ItineraryVersion version) final;
// Documentation inherited from Writer
Registration register_participant(
ParticipantDescription participant_info) final;
// Documentation inherited
void update_description(
ParticipantId participant,
ParticipantDescription desc) final;
void unregister_participant(
ParticipantId participant) final;
//============================================================================
// Viewer API
//============================================================================
// Documentation inherited from Viewer
View query(const Query& parameters) const final;
// Documentation inherited from Viewer
View query(
const Query::Spacetime& spacetime,
const Query::Participants& participants) const final;
// Documentation inherited from Viewer
const std::unordered_set<ParticipantId>& participant_ids() const final;
// Documentation inherited from Viewer
std::shared_ptr<const ParticipantDescription> get_participant(
std::size_t participant_id) const final;
// Documentation inherited from Viewer
Version latest_version() const;
//============================================================================
// ItineraryViewer API
//============================================================================
// Documentation inherited from ItineraryViewer
std::optional<ItineraryView> get_itinerary(
std::size_t participant_id) const final;
// Documentation inherited from ItineraryViewer
std::optional<PlanId> get_current_plan_id(
std::size_t participant_id) const final;
// Documentation inherited from ItineraryViewer
const std::vector<CheckpointId>* get_current_progress(
ParticipantId participant_id) const final;
// Documentation inherited from ItineraryViewer
ProgressVersion get_current_progress_version(
ParticipantId participant_id) const final;
// Documentation inherited from ItineraryViewer
DependencySubscription watch_dependency(
Dependency dependency,
std::function<void()> on_reached,
std::function<void()> on_deprecated) const final;
//============================================================================
// Snappable API
//============================================================================
// Documentation inherited from Snappable
std::shared_ptr<const Snapshot> snapshot() const final;
//============================================================================
// Database API
//============================================================================
Database();
const Inconsistencies& inconsistencies() const;
Patch changes(
const Query& parameters,
std::optional<Version> after) const;
View query(
const Query& parameters,
Version after) const;
void set_maximum_cumulative_delay(rmf_traffic::Duration maximum_delay);
std::optional<rmf_traffic::Duration> get_cumulative_delay(
ParticipantId participant) const;
Version cull(Time time);
void set_current_time(Time time);
//
// TODO(MXG): This function needs unit testing
ItineraryVersion itinerary_version(ParticipantId participant) const;
PlanId latest_plan_id(ParticipantId participant) const;
StorageId next_storage_base(ParticipantId participant) const;
class Implementation;
class Debug;
private:
rmf_utils::unique_impl_ptr<Implementation> _pimpl;
};
} // namespace schedule
} // namespace rmf_traffic
#endif // RMF_TRAFFIC__SCHEDULE__DATABASE_HPP