#pragma once #include #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 DirectMessageData load(const Ref &); Ref store(const Storage &) const; vector> prev; optional from; optional time; optional 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; }; }