From e91d2f96157afadfdb1c8efc8199507291334c13 Mon Sep 17 00:00:00 2001 From: VolodymyrBg Date: Wed, 5 Mar 2025 19:53:27 +0200 Subject: [PATCH] Create historymode.go --- eth/ethconfig/historymode.go | 66 ++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 eth/ethconfig/historymode.go diff --git a/eth/ethconfig/historymode.go b/eth/ethconfig/historymode.go new file mode 100644 index 0000000000..4bc40e04fd --- /dev/null +++ b/eth/ethconfig/historymode.go @@ -0,0 +1,66 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package ethconfig + +import "fmt" + +// HistoryMode represents the blockchain history mode for pruning. +type HistoryMode uint32 + +const ( + AllHistory HistoryMode = iota // Keep all history + PrunedHistory // Prune history beyond StateHistory and TransactionHistory +) + +func (mode HistoryMode) IsValid() bool { + return mode == AllHistory || mode == PrunedHistory +} + +// String implements the stringer interface. +func (mode HistoryMode) String() string { + switch mode { + case AllHistory: + return "full" + case PrunedHistory: + return "pruned" + default: + return "unknown" + } +} + +func (mode HistoryMode) MarshalText() ([]byte, error) { + switch mode { + case AllHistory: + return []byte("full"), nil + case PrunedHistory: + return []byte("pruned"), nil + default: + return nil, fmt.Errorf("unknown history mode %d", mode) + } +} + +func (mode *HistoryMode) UnmarshalText(text []byte) error { + switch string(text) { + case "full": + *mode = AllHistory + case "pruned": + *mode = PrunedHistory + default: + return fmt.Errorf(`unknown history mode %q, want "full" or "pruned"`, text) + } + return nil +}