foundationdb/fdbserver/workloads/MemoryKeyValueStore.h

70 lines
2.0 KiB
C
Raw Normal View History

2017-05-26 04:48:44 +08:00
/*
* MemoryKeyValueStore.h
*
* This source file is part of the FoundationDB open source project
*
* Copyright 2013-2018 Apple Inc. and the FoundationDB project authors
*
2017-05-26 04:48:44 +08:00
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
2017-05-26 04:48:44 +08:00
* http://www.apache.org/licenses/LICENSE-2.0
*
2017-05-26 04:48:44 +08:00
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FDBSERVER_MEMORYKEYVALUESTORE_H
#define FDBSERVER_MEMORYKEYVALUESTORE_H
#pragma once
#include "fdbrpc/fdbrpc.h"
#include "fdbserver/workloads/workloads.actor.h"
2017-05-26 04:48:44 +08:00
#include <map>
// An in-memory key-value store designed to mirror the contents of the database after performing sequences of operations
2017-05-26 04:48:44 +08:00
class MemoryKeyValueStore {
public:
// Get the value associated with a key
2017-05-26 04:48:44 +08:00
Optional<Value> get(KeyRef key) const;
// Returns the key designated by a key selector
2017-05-26 04:48:44 +08:00
Key getKey(KeySelectorRef selector) const;
// Gets a range of key-value pairs, returning a maximum of <limit> results
2021-05-04 04:14:16 +08:00
RangeResult getRange(KeyRangeRef range, int limit, bool reverse) const;
2017-05-26 04:48:44 +08:00
// Stores a key-value pair in the database
2017-05-26 04:48:44 +08:00
void set(KeyRef key, ValueRef value);
// Removes a key from the database
2017-05-26 04:48:44 +08:00
void clear(KeyRef key);
// Removes a range of keys from the database
2017-05-26 04:48:44 +08:00
void clear(KeyRangeRef range);
// The number of keys in the database
2017-05-26 04:48:44 +08:00
uint64_t size() const;
// The first key in the database; returned by key selectors that choose a key off the front
2017-05-26 04:48:44 +08:00
Key startKey() const;
// The last key in the database; returned by key selectors that choose a key off the back
2017-05-26 04:48:44 +08:00
Key endKey() const;
// Debugging function that prints all key-value pairs
2017-05-26 04:48:44 +08:00
void printContents() const;
private:
// A map holding the key-value pairs
2017-05-26 04:48:44 +08:00
std::map<Key, Value> store;
};
#endif