From 0e9e9c4d233a331e10dfb2db889fe437d0911ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 16 Feb 2020 20:18:32 +0100 Subject: Peer list in public API --- src/network.h | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/network.h') diff --git a/src/network.h b/src/network.h index e07e020..07b5363 100644 --- a/src/network.h +++ b/src/network.h @@ -23,6 +23,8 @@ using std::variant; using std::vector; using std::weak_ptr; +using std::enable_shared_from_this; + namespace chrono = std::chrono; using chrono::steady_clock; @@ -49,11 +51,31 @@ struct Server::Peer Storage tempStorage; PartialStorage partStorage; + shared_ptr lpeer = nullptr; + void send(const struct TransportHeader &, const vector &) const; void updateIdentity(struct ReplyBuilder &); void updateChannel(struct ReplyBuilder &); }; +struct Peer::Priv : enable_shared_from_this +{ + weak_ptr speer; + weak_ptr list; + size_t listIndex; + + void notifyWatchers(); +}; + +struct PeerList::Priv : enable_shared_from_this +{ + mutex dataMutex; + vector> peers; + vector> watchers; + + void push(const shared_ptr &); +}; + struct TransportHeader { enum class Type { @@ -118,7 +140,9 @@ struct Server::Priv thread threadListen; thread threadAnnounce; - vector> peers; + vector> peers; + PeerList plist; + vector outgoing; vector> waiting; -- cgit v1.2.3