summaryrefslogtreecommitdiff
path: root/include/erebos/network.h
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2020-02-16 20:18:32 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2020-02-16 20:18:32 +0100
commit0e9e9c4d233a331e10dfb2db889fe437d0911ba2 (patch)
tree450b78801436d007efd5eaaf2b52f3e7dfe95a96 /include/erebos/network.h
parent69e4c826a34eb84c36bb07338a9a292a520f5970 (diff)
Peer list in public API
Diffstat (limited to 'include/erebos/network.h')
-rw-r--r--include/erebos/network.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/erebos/network.h b/include/erebos/network.h
index 47c7e7a..90c85a6 100644
--- a/include/erebos/network.h
+++ b/include/erebos/network.h
@@ -2,6 +2,8 @@
#include <erebos/identity.h>
+#include <functional>
+
namespace erebos {
class Server
@@ -10,10 +12,44 @@ public:
Server(const Identity &);
~Server();
+ class PeerList & peerList() const;
+
struct Peer;
private:
struct Priv;
const std::shared_ptr<Priv> p;
};
+class Peer
+{
+public:
+ struct Priv;
+ Peer(const std::shared_ptr<Priv> & p);
+ ~Peer();
+
+ std::string name() const;
+ std::optional<Identity> identity() const;
+
+private:
+ std::shared_ptr<Priv> p;
};
+
+class PeerList
+{
+public:
+ struct Priv;
+ PeerList();
+ PeerList(const std::shared_ptr<Priv> & p);
+ ~PeerList();
+
+ size_t size() const;
+ Peer at(size_t n) const;
+
+ void onUpdate(std::function<void(size_t, const Peer *)>);
+
+private:
+ friend Server;
+ const std::shared_ptr<Priv> p;
+};
+
+}