summary refs log tree commit diff
path: root/src/Cache_p.h
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2020-07-05 05:29:07 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2020-07-05 05:31:15 +0200
commitc79205c26a77df9086bd6294ae6285a7346e6656 (patch)
tree5bc4b79387cffaa2f5d08d80353e5843573c62c8 /src/Cache_p.h
parentPersist event order (diff)
downloadnheko-c79205c26a77df9086bd6294ae6285a7346e6656.tar.xz
Use new timeline cache structure
Diffstat (limited to 'src/Cache_p.h')
-rw-r--r--src/Cache_p.h24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/Cache_p.h b/src/Cache_p.h
index 5f01f736..37486ca0 100644
--- a/src/Cache_p.h
+++ b/src/Cache_p.h
@@ -18,6 +18,7 @@
 
 #pragma once
 
+#include <limits>
 #include <optional>
 
 #include <QDateTime>
@@ -38,9 +39,6 @@
 #include "CacheCryptoStructs.h"
 #include "CacheStructs.h"
 
-int
-numeric_key_comparison(const MDB_val *a, const MDB_val *b);
-
 class Cache : public QObject
 {
         Q_OBJECT
@@ -250,7 +248,16 @@ private:
                                   const std::string &room_id,
                                   const mtx::responses::Timeline &res);
 
-        mtx::responses::Timeline getTimelineMessages(lmdb::txn &txn, const std::string &room_id);
+        struct Messages
+        {
+                mtx::responses::Timeline timeline;
+                uint64_t next_index;
+                bool end_of_cache = false;
+        };
+        Messages getTimelineMessages(lmdb::txn &txn,
+                                     const std::string &room_id,
+                                     int64_t index = std::numeric_limits<int64_t>::max(),
+                                     bool forward  = false);
 
         //! Remove a room from the cache.
         // void removeLeftRoom(lmdb::txn &txn, const std::string &room_id);
@@ -402,15 +409,6 @@ private:
                 return lmdb::dbi::open(txn, "pending_receipts", MDB_CREATE);
         }
 
-        lmdb::dbi getMessagesDb(lmdb::txn &txn, const std::string &room_id)
-        {
-                auto db =
-                  lmdb::dbi::open(txn, std::string(room_id + "/messages").c_str(), MDB_CREATE);
-                lmdb::dbi_set_compare(txn, db, numeric_key_comparison);
-
-                return db;
-        }
-
         lmdb::dbi getEventsDb(lmdb::txn &txn, const std::string &room_id)
         {
                 return lmdb::dbi::open(txn, std::string(room_id + "/events").c_str(), MDB_CREATE);