LogDevice API
ConfigSubscriptionHandle.h
1 
8 #pragma once
9 
10 #include <functional>
11 #include <list>
12 #include <memory>
13 #include <mutex>
14 #include <utility>
15 
16 namespace facebook { namespace logdevice {
17 
18 namespace configuration {
19 class UpdateableConfigBase;
20 enum class SubscriptionStatus;
21 using subscription_id_t = uint64_t;
22 } // namespace configuration
23 
32  public:
37  ConfigSubscriptionHandle() noexcept = default;
38 
45  ConfigSubscriptionHandle(configuration::UpdateableConfigBase* owner,
46  configuration::subscription_id_t sub_id) noexcept;
47 
52  ~ConfigSubscriptionHandle() noexcept;
53 
58 
63  operator=(ConfigSubscriptionHandle&& other) noexcept;
64 
69  void unsubscribe() noexcept;
70 
74  void swap(ConfigSubscriptionHandle& other) noexcept {
75  using std::swap;
76  swap(owner_, other.owner_);
77  swap(sub_id_, other.sub_id_);
78  }
79 
80  private:
81  std::weak_ptr<configuration::UpdateableConfigBase> owner_;
82  configuration::subscription_id_t sub_id_;
83 };
84 
85 }} // namespace facebook::logdevice
86 
87 namespace std {
88 inline void
91  left.swap(right);
92 }
93 } // namespace std
Definition: ConfigSubscriptionHandle.h:87
Definition: AsyncReader.h:16
void swap(ConfigSubscriptionHandle &other) noexcept
Definition: ConfigSubscriptionHandle.h:74
Definition: ConfigSubscriptionHandle.h:31