CCF
Loading...
Searching...
No Matches
serialised_entry_format.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/ccf_assert.h"
6
7#include <stdint.h>
8
9namespace ccf::kv
10{
11 static constexpr auto entry_format_v1 = 1;
12 using SerialisedEntryFlags = uint8_t;
13
19
20 // 6 bytes are used for the size of the serialised entry
21 static const size_t max_entry_size = 1UL << 48;
22
24 {
25 uint8_t version = entry_format_v1;
27
28 uint64_t size
29 : (sizeof(uint64_t) - sizeof(uint8_t) - sizeof(SerialisedEntryFlags)) *
30 CHAR_BIT;
31
32 void set_size(uint64_t size_)
33 {
35 size_ < max_entry_size,
36 "Cannot serialise entry of size {} (max allowed size is {})",
37 size_,
38 max_entry_size);
39 size = size_;
40 }
41 };
42 static_assert(sizeof(SerialisedEntryHeader) == sizeof(uint64_t));
43
44 static constexpr size_t serialised_entry_header_size =
46}
#define CCF_ASSERT_FMT(expr,...)
Definition ccf_assert.h:10
Definition app_interface.h:20
uint8_t SerialisedEntryFlags
Definition serialised_entry_format.h:12
EntryFlags
Definition serialised_entry_format.h:15
@ FORCE_LEDGER_CHUNK_BEFORE
Definition serialised_entry_format.h:17
@ FORCE_LEDGER_CHUNK_AFTER
Definition serialised_entry_format.h:16
Definition serialised_entry_format.h:24
uint64_t size
Definition serialised_entry_format.h:30
void set_size(uint64_t size_)
Definition serialised_entry_format.h:32
uint8_t version
Definition serialised_entry_format.h:25
SerialisedEntryFlags flags
Definition serialised_entry_format.h:26