blob: 9ceac7521c0a4e10103797644b1c704655f4c5ce [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_LEDGER_BIN_STORAGE_PUBLIC_JOURNAL_H_
#define SRC_LEDGER_BIN_STORAGE_PUBLIC_JOURNAL_H_
#include <lib/fit/function.h>
#include "peridot/lib/convert/convert.h"
#include "src/ledger/bin/storage/public/commit.h"
#include "src/ledger/bin/storage/public/types.h"
#include "src/lib/fxl/macros.h"
namespace storage {
// A |Journal| represents a commit in progress.
class Journal {
public:
Journal() {}
virtual ~Journal() {}
// Adds an entry with the given |key| and |object_identifier| to this
// |Journal|.
virtual void Put(convert::ExtendedStringView key,
ObjectIdentifier object_identifier,
KeyPriority priority) = 0;
// Deletes the entry with the given |key| from this |Journal|.
virtual void Delete(convert::ExtendedStringView key) = 0;
// Deletes all entries from this Journal, as well as any entries already
// present on the page. This doesn't prevent subsequent calls to update the
// contents of this Journal (|Put|, |Delete| or |Clear|).
virtual void Clear() = 0;
private:
FXL_DISALLOW_COPY_AND_ASSIGN(Journal);
};
} // namespace storage
#endif // SRC_LEDGER_BIN_STORAGE_PUBLIC_JOURNAL_H_