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
/*
*
* Hedera Rust SDK
*
* Copyright (C) 2022 - 2023 Hedera Hashgraph, LLC
*
* 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
*/
// todo(sr): Not happy with this doc.
/// What type of freeze should be executed?
#[derive(Default, Debug, Hash, PartialEq, Eq, Clone, Copy)]
pub enum FreezeType {
/// An (invalid) default value for this enum, to ensure the client explicitly sets
/// the intended type of freeze transaction.
#[default]
Unknown = 0,
/// Freezes the network at the specified time. The start_time field must be provided and
/// must reference a future time. Any values specified for the update_file and file_hash
/// fields will be ignored. This transaction does not perform any network changes or
/// upgrades and requires manual intervention to restart the network.
FreezeOnly = 1,
/// A non-freezing operation that initiates network wide preparation in advance of a
/// scheduled freeze upgrade. The update_file and file_hash fields must be provided and
/// valid. The start_time field may be omitted and any value present will be ignored.
PrepareUpgrade = 2,
/// Freezes the network at the specified time and performs the previously prepared
/// automatic upgrade across the entire network.
FreezeUpgrade = 3,
/// Aborts a pending network freeze operation.
FreezeAbort = 4,
/// Performs an immediate upgrade on auxilary services and containers providing
/// telemetry/metrics. Does not impact network operations.
TelemetryUpgrade = 5,
}
impl From<i32> for FreezeType {
fn from(value: i32) -> Self {
match value {
1 => Self::FreezeOnly,
2 => Self::PrepareUpgrade,
3 => Self::FreezeUpgrade,
4 => Self::FreezeAbort,
5 => Self::TelemetryUpgrade,
..=0 | 6.. => Self::Unknown,
}
}
}