1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//! RAII guard for a block in the **Staged** state.
//!
//! A [`CompleteBlock`] represents a block that has been assigned a
//! [`SequenceHash`](super::SequenceHash) but has not yet been registered in
//! the [`BlockRegistry`](crate::registry::BlockRegistry). It is produced by
//! [`MutableBlock::stage`](super::MutableBlock::stage) or
//! [`MutableBlock::complete`](super::MutableBlock::complete) and can be
//! either registered via
//! [`BlockManager::register_block`](crate::manager::BlockManager::register_block)
//! or rolled back to a [`MutableBlock`](super::MutableBlock) with
//! [`reset`](CompleteBlock::reset).
use ;
/// RAII guard for a block in the **Staged** state.
///
/// Wraps an internal `Block<T, Staged>` -- a block that carries a
/// [`SequenceHash`](super::SequenceHash) and is ready for registration.
///
/// # Obtaining a `CompleteBlock`
///
/// - [`MutableBlock::stage`](super::MutableBlock::stage) -- from a
/// pre-computed [`SequenceHash`](super::SequenceHash).
/// - [`MutableBlock::complete`](super::MutableBlock::complete) -- by
/// extracting the hash from a [`TokenBlock`](dynamo_tokens::TokenBlock).
///
/// # State transitions
///
/// - Pass to [`BlockManager::register_block`](crate::manager::BlockManager::register_block)
/// to move the block into the **Registered** state and receive an
/// [`ImmutableBlock`](super::ImmutableBlock).
/// - Call [`reset`](Self::reset) to undo the staging and get a
/// [`MutableBlock`](super::MutableBlock) back (metrics are `None` on this
/// path).
///
/// # Drop behaviour
///
/// If the `CompleteBlock` is dropped without being consumed, the underlying
/// block is reset to the **Reset** state and returned to the reset pool.