From 29ade9784fe65ecd686b5e8e18d84e6acc30b37a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 14 Mar 2020 22:43:44 +0100 Subject: Direct message service --- src/message.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/message.h (limited to 'src/message.h') diff --git a/src/message.h b/src/message.h new file mode 100644 index 0000000..48487ba --- /dev/null +++ b/src/message.h @@ -0,0 +1,57 @@ +#pragma once + +#include +#include +#include + +#include +#include + +namespace chrono = std::chrono; +using chrono::system_clock; +using std::mutex; +using std::optional; +using std::string; +using std::vector; + +namespace erebos { + +struct DirectMessageData +{ + static optional load(const Ref &); + Ref store(const Storage &) const; + + vector> prev; + Identity from; + ZonedTime time; + string text; +}; + +struct DirectMessage::Priv +{ + Stored data; +}; + +struct DirectMessageThread::Priv +{ + const Identity peer; + const vector> head; + + static DirectMessageThread getThreadLocked(const Identity & peer); + static DirectMessageThread updateThreadLocked(const Identity & peer, + vector> && head); +}; + +struct DirectMessageThread::Iterator::Priv +{ + optional current; + vector> next; +}; + +struct DirectMessageService::Priv +{ + static vector watchers; + static mutex watcherLock; +}; + +} -- cgit v1.2.3