30 LocalPerson(std::shared_ptr<interface::Channel> channel,
32 std::unique_ptr<ChunkMessengerInterface> messenger,
33 int keepalive_interval_sec,
34 int keepalive_interval_gap_sec);
37 ChunkMessengerInterface* Messenger()
const override;
39 std::shared_ptr<interface::Publication>
Publish(
40 std::shared_ptr<LocalStream> stream,
43 const std::string& publication_id,
45 bool Unpublish(
const std::string& publication_id)
const override;
46 bool Unsubscribe(
const std::string& subscription_id)
const override;
48 void OnPublished(std::shared_ptr<interface::Publication> publication)
override;
49 void OnUnpublished(std::shared_ptr<interface::Publication> publication)
override;
50 void OnSubscribed(std::shared_ptr<interface::Subscription> subscription,
51 std::shared_ptr<interface::RemoteMember> publisher)
override;
52 void OnUnsubscribed(std::shared_ptr<interface::Subscription> subscription,
53 std::shared_ptr<interface::RemoteMember> publisher)
override;
54 void OnPublicationSubscribedByRemoteMember(
55 std::shared_ptr<interface::Subscription> subscription,
56 std::shared_ptr<interface::RemoteMember> subscriber)
override;
57 void OnPublicationUnsubscribedByRemoteMember(
58 std::shared_ptr<interface::Subscription> subscription,
59 std::shared_ptr<interface::RemoteMember> subscriber)
override;
60 void Dispose()
override;
64 std::vector<analytics::interface::AnalyticsClient::SubscriptionStats>
65 GetSubscriptionStatsForAnalytics()
const override;
68 void UpdateMemberTtl(
const std::string& channel_id,
int keepalive_interval_sec);
70 using SubscriptionId = std::string;
71 using SubscriptionPair = std::pair<std::weak_ptr<interface::Subscription>,
74 std::unique_ptr<ChunkMessengerInterface> messenger_;
75 std::mutex tmp_subscriptions_mtx_;
76 std::unordered_map<SubscriptionId, SubscriptionPair> tmp_subscriptions_;
77 int keepalive_interval_sec_;
78 int keepalive_interval_gap_sec_;
80 std::mutex stream_mtx_;
82 std::mutex is_disposed_mtx_;
83 std::condition_variable is_disposed_cv_;
85 std::unique_ptr<std::thread> ttl_timer_thread_;