summaryrefslogtreecommitdiff
path: root/include/erebos/message.h
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2023-05-06 17:09:32 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2023-05-06 18:54:24 +0200
commit25a1ba71e3cf4250489291f688423963aa603498 (patch)
treefb1e23060b810237316f4cde6524c0b1a66d5d0e /include/erebos/message.h
parent07f61b1ad6363cd471b7dab3f94c3160636fd6a0 (diff)
Server and services configuration using separate objects
Diffstat (limited to 'include/erebos/message.h')
-rw-r--r--include/erebos/message.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/include/erebos/message.h b/include/erebos/message.h
index 70a11bc..436c0ed 100644
--- a/include/erebos/message.h
+++ b/include/erebos/message.h
@@ -74,21 +74,30 @@ private:
class DirectMessageService : public Service
{
public:
- DirectMessageService();
+ using ThreadWatcher = std::function<void(const DirectMessageThread &, ssize_t, ssize_t)>;
+
+ class Config
+ {
+ public:
+ Config & onUpdate(ThreadWatcher);
+
+ private:
+ friend class DirectMessageService;
+ vector<ThreadWatcher> watchers;
+ };
+
+ DirectMessageService(Config &&, const Server &);
virtual ~DirectMessageService();
UUID uuid() const override;
void handle(Context &) override;
- typedef std::function<void(const DirectMessageThread &, ssize_t, ssize_t)> ThreadWatcher;
- void onUpdate(ThreadWatcher);
DirectMessageThread thread(const Identity &);
DirectMessage send(const Identity &, const Peer &, const std::string &);
private:
- struct Priv;
- unique_ptr<Priv> p;
+ const Config config;
};
}