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 "ds/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
21 {
22 uint8_t version = entry_format_v1;
24
25 static constexpr auto BITS_FOR_SIZE =
26 (sizeof(uint64_t) - sizeof(uint8_t) - sizeof(SerialisedEntryFlags)) *
27 CHAR_BIT;
28 uint64_t size : BITS_FOR_SIZE;
29
30 void set_size(uint64_t size_)
31 {
32 static constexpr size_t max_entry_size = 1UL << BITS_FOR_SIZE;
34 size_ < max_entry_size,
35 "Cannot serialise entry of size {} (max allowed size is {})",
36 size_,
37 max_entry_size);
38 size = size_;
39 }
40 };
41 static_assert(sizeof(SerialisedEntryHeader) == sizeof(uint64_t));
42
43 static constexpr size_t serialised_entry_header_size =
44 sizeof(SerialisedEntryHeader);
45}
#define CCF_ASSERT_FMT(expr,...)
Definition ccf_assert.h:10
Definition app_interface.h:19
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:21
uint64_t size
Definition serialised_entry_format.h:28
void set_size(uint64_t size_)
Definition serialised_entry_format.h:30
uint8_t version
Definition serialised_entry_format.h:22
SerialisedEntryFlags flags
Definition serialised_entry_format.h:23
static constexpr auto BITS_FOR_SIZE
Definition serialised_entry_format.h:25