Program Listing for File ParticipantDescription.hpp
↰ Return to documentation for file (include/rmf_traffic/schedule/ParticipantDescription.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__SCHEDULE__PARTICIPANTDESCRIPTION_HPP
#define RMF_TRAFFIC__SCHEDULE__PARTICIPANTDESCRIPTION_HPP
#include <string>
#include <unordered_map>
#include <rmf_traffic/Profile.hpp>
#include <rmf_utils/impl_ptr.hpp>
namespace rmf_traffic {
namespace schedule {
//==============================================================================
using ParticipantId = uint64_t;
//==============================================================================
class ParticipantDescription
{
public:
//
// TODO(MXG): Should this be replaced with a boolean? Do we anticipate the
// possibility of other categories of responsiveness that cannot be
// encapsulated by the simple Responsive category?
enum class Rx : uint16_t
{
Invalid = 0,
Unresponsive,
Responsive,
};
ParticipantDescription(
std::string name,
std::string owner,
Rx responsiveness,
Profile profile);
bool operator==(const ParticipantDescription& rhs) const;
bool operator!=(const ParticipantDescription& rhs) const;
ParticipantDescription& name(std::string value);
const std::string& name() const;
ParticipantDescription& owner(std::string value);
const std::string& owner() const;
ParticipantDescription& responsiveness(Rx value);
Rx responsiveness() const;
ParticipantDescription& profile(Profile new_profile);
const Profile& profile() const;
private:
class Implementation;
rmf_utils::impl_ptr<Implementation> _pimpl;
};
//==============================================================================
using ParticipantDescriptionsMap = std::unordered_map<
ParticipantId,
ParticipantDescription>;
} // namespace rmf_traffic
} // namespace schedule
#endif // RMF_TRAFFIC__SCHEDULE__PARTICIPANTDESCRIPTION_HPP