Class Negotiation¶
Defined in File Negotiation.hpp
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
class
rmf_traffic_ros2::schedule::Negotiation¶ A ROS2 interface for negotiating solutions to schedule conflicts.
Public Types
-
using
TableViewPtr= rmf_traffic::schedule::Negotiation::Table::ViewerPtr¶
-
using
ResponderPtr= rmf_traffic::schedule::Negotiator::ResponderPtr¶
-
using
StatusUpdateCallback= std::function<void(uint64_t conflict_version, TableViewPtr table_view)>¶
-
using
StatusConclusionCallback= std::function<void(uint64_t conflict_version, bool success)>¶
Public Functions
Constructor
- Parameters
[in] worker: If a worker is provided, the Negotiation will be performed asynchronously. If it is not provided, then the Negotiators must be single-threaded, and their respond() functions must block until finished.
-
Negotiation &
timeout_duration(rmf_traffic::Duration duration)¶ Set the timeout duration for negotiators. If a negotiator does not respond within this time limit, then the negotiation will automatically be forfeited. This is important to prevent negotiations from getting hung forever.
-
rmf_traffic::Duration
timeout_duration() const¶ Get the current timeout duration setting.
-
void
on_status_update(StatusUpdateCallback cb)¶ Register a callback with this Negotiation manager that triggers on negotiation status updates.
- Parameters
[in] cb: The callback function to be called upon status updates.
-
void
on_conclusion(StatusConclusionCallback cb)¶ Register a callback with this Negotiation manager that triggers on negotiation status conclusions.
- Parameters
[in] cb: The callback function to be called upon status conclusions.
-
TableViewPtr
table_view(uint64_t conflict_version, const std::vector<rmf_traffic::schedule::ParticipantId> &sequence) const¶ Get a Negotiation::TableView that provides a view into what participants are proposing.
This function does not care about table versioning.
- Return
A TableView into what participants are proposing.
- Parameters
[in] conflict_version: The conflict version of the negotiation[in] sequence: The sequence of participant ids. Follows convention of other sequences (ie. The last ParticipantId is the owner of the table)
-
void
set_retained_history_count(uint count)¶ Set the number of negotiations to retain.
- Parameters
[in] count: The number of negotiations to retain
-
std::shared_ptr<void>
register_negotiator(rmf_traffic::schedule::ParticipantId for_participant, std::unique_ptr<rmf_traffic::schedule::Negotiator> negotiator)¶ Register a negotiator with this Negotiation manager.
- Return
a handle that should be kept by the caller. When this handle expires, this negotiator will be automatically unregistered.
- Parameters
[in] for_participant: The ID of the participant that this negotiator will work for[in] negotiator: The negotiator interface to use for this participant
-
std::shared_ptr<void>
register_negotiator(rmf_traffic::schedule::ParticipantId for_participant, std::unique_ptr<rmf_traffic::schedule::Negotiator> negotiator, std::function<void()> on_negotiation_failure)¶ Register a negotiator with this Negotiation manager.
- Return
a handle that should be kept by the caller. When this handle expires, this negotiator will be automatically unregistered.
- Parameters
[in] for_participant: The ID of the participant that this negotiator will work for[in] negotiator: The negotiator interface to use for this participant[in] on_negotiation_failure: A callback that will be triggered if a negotiation for this participant fails
-
std::shared_ptr<void>
register_negotiator(rmf_traffic::schedule::ParticipantId for_participant, std::function<void(TableViewPtr view, ResponderPtr responder)> respond, std::function<void()> on_negotiation_failure = nullptr)¶ Register a negotiator with this Negotiation manager using a lambda.
- Return
a handle that should be kept by the caller. When this handle expires, this negotiator will be automatically unregistered.
- Parameters
[in] for_participant: The ID of the participant that this negotiator will work for[in] respond: The callback that will be used as the negotiator’s response[in] on_negotiation_failure: A callback that will be triggered if a negotiation for this participant fails
-
class
Worker¶ The Worker class can be used to make the Negotiation asynchronous.
-
using