CCF
Loading...
Searching...
No Matches
unit_value.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ccf/kv/get_name.h"
6#include "ccf/kv/hooks.h"
8#include "ccf/kv/untyped.h"
9
10namespace ccf::kv
11{
20 template <typename Unit = ccf::kv::serialisers::ZeroBlitUnitCreator>
21 class UnitValue : public GetName
22 {
23 public:
27
28 using Write = std::optional<ccf::kv::serialisers::SerialisedEntry>;
31
32 using GetName::GetName;
33
35 {
36 return Unit::get();
37 }
38
39 private:
40 static Write deserialise_write(const ccf::kv::untyped::Write& w)
41 {
42 const auto it = w.find(Unit::get());
43 if (it == w.end() || !it->second.has_value())
44 {
45 return std::nullopt;
46 }
47
48 return Unit::get();
49 }
50
51 public:
53 {
54 return [hook](Version v, const ccf::kv::untyped::Write& w) {
55 hook(v, deserialise_write(w));
56 };
57 }
58
60 {
61 return [hook](Version v, const ccf::kv::untyped::Write& w) {
62 return hook(v, deserialise_write(w));
63 };
64 }
65 };
66}
Definition unit_value_handle.h:15
Definition unit_value_handle.h:88
Definition unit_value.h:22
std::optional< ccf::kv::serialisers::SerialisedEntry > Write
Definition unit_value.h:28
static ccf::kv::untyped::MapHook wrap_map_hook(const MapHook &hook)
Definition unit_value.h:59
ccf::kv::CommitHook< Write > CommitHook
Definition unit_value.h:30
static ccf::kv::untyped::CommitHook wrap_commit_hook(const CommitHook &hook)
Definition unit_value.h:52
static ccf::kv::serialisers::SerialisedEntry create_unit()
Definition unit_value.h:34
ccf::kv::MapHook< Write > MapHook
Definition unit_value.h:29
Definition unit_value_handle.h:51
ccf::ByteVector SerialisedEntry
Definition serialised_entry.h:8
ccf::kv::CommitHook< Write > CommitHook
Definition untyped.h:18
std::map< ccf::kv::serialisers::SerialisedEntry, std::optional< ccf::kv::serialisers::SerialisedEntry > > Write
Definition untyped.h:16
ccf::kv::MapHook< Write > MapHook
Definition untyped.h:19
Definition app_interface.h:18
std::function< void(Version, const TWrites &)> CommitHook
Signature for transaction commit handlers.
Definition hooks.h:26
uint64_t Version
Definition version.h:10
std::function< std::unique_ptr< ConsensusHook >(Version, const TWrites &)> MapHook
Definition hooks.h:30
Definition get_name.h:10
GetName(std::string s)
Definition get_name.h:15