| #pragma once |
| |
| #include <algorithm> |
| #include <vector> |
| |
| #include "Partition.h" |
| #include "RpcClient.h" |
| |
| ROCKETMQ_NAMESPACE_BEGIN |
| |
| namespace rmq = apache::rocketmq::v1; |
| |
| /** |
| * Thread Safety: This class is immutable and thus effectively thread safe. |
| */ |
| class TopicRouteData { |
| public: |
| TopicRouteData(std::vector<Partition> partitions, std::string debug_string) |
| : partitions_(std::move(partitions)), debug_string_(std::move(debug_string)) { |
| std::sort(partitions_.begin(), partitions_.end()); |
| } |
| |
| const std::vector<Partition>& partitions() const { |
| return partitions_; |
| } |
| |
| const std::string& debugString() const { |
| return debug_string_; |
| } |
| |
| bool operator==(const TopicRouteData& other) const { |
| return partitions_ == other.partitions_; |
| } |
| |
| bool operator!=(const TopicRouteData& other) const { |
| return !this->operator==(other); |
| } |
| |
| private: |
| std::vector<Partition> partitions_; |
| std::string debug_string_; |
| }; |
| |
| using TopicRouteDataPtr = std::shared_ptr<TopicRouteData>; |
| |
| ROCKETMQ_NAMESPACE_END |