#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; }; struct DirectMessageThread::Iterator::Priv { optional current; vector> next; }; struct DirectMessageState { static DirectMessageState load(const Ref &); Ref store(const Storage &) const; vector> prev; optional peer; vector> ready {}; vector> sent {}; vector> received {}; vector> seen {}; }; }