Add "intent" field to a snapshot.
[cumulus.git] / localdb.h
index 8a45e0e..69fb330 100644 (file)
--- a/localdb.h
+++ b/localdb.h
 
 class LocalDb {
 public:
-    void Open(const char *path);
+    void Open(const char *path, const char *snapshot_name,
+              const char *snapshot_scheme, double intent);
     void Close();
     void StoreObject(const ObjectReference& ref,
-                     const std::string &checksum, int64_t size);
+                     const std::string &checksum, int64_t size, double age);
+    ObjectReference FindObject(const std::string &checksum, int64_t size);
+    bool IsOldObject(const std::string &checksum, int64_t size, double *age,
+                     int *group);
+    bool IsAvailable(const ObjectReference &ref);
+    void UseObject(const ObjectReference& ref);
+
+    void SetSegmentChecksum(const std::string &segment, const std::string &path,
+                            const std::string &checksum);
+    bool GetSegmentChecksum(const std::string &segment,
+                            std::string *seg_path, std::string *seg_checksum);
 private:
     sqlite3 *db;
+    int64_t snapshotid;
+
+    sqlite3_stmt *Prepare(const char *sql);
+    void ReportError(int rc);
+    int64_t SegmentToId(const std::string &segment);
+    std::string IdToSegment(int64_t segmentid);
 };
 
 #endif // _LBS_LOCALDB_H