diff options
author | qrort <qrort@yandex-team.com> | 2022-12-02 11:31:25 +0300 |
---|---|---|
committer | qrort <qrort@yandex-team.com> | 2022-12-02 11:31:25 +0300 |
commit | b1f4ffc9c8abff3ba58dc1ec9a9f92d2f0de6806 (patch) | |
tree | 2a23209faf0fea5586a6d4b9cee60d1b318d29fe /library/cpp/erasure/codec.h | |
parent | 559174a9144de40d6bb3997ea4073c82289b4974 (diff) | |
download | ydb-b1f4ffc9c8abff3ba58dc1ec9a9f92d2f0de6806.tar.gz |
remove kikimr/driver DEPENDS
Diffstat (limited to 'library/cpp/erasure/codec.h')
-rw-r--r-- | library/cpp/erasure/codec.h | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/library/cpp/erasure/codec.h b/library/cpp/erasure/codec.h deleted file mode 100644 index c03d25e9c87..00000000000 --- a/library/cpp/erasure/codec.h +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once - -#include "public.h" - -#include <optional> -#include <vector> - -namespace NErasure { - -//! Describes a generic way to generate parity blocks from data blocks and -//! to recover (repair) missing blocks. -/*! - * Given N data blocks (numbered from 0 to N - 1) one can call #Encode to generate - * another M parity blocks (numbered from N to N + M - 1). - * - * If some of the resulting N + M blocks ever become missing one can attempt to - * repair the missing blocks by calling #Decode. - * - * Here N and M are fixed (codec-specific) parameters. - * Call #GetDataPartCount and #GetParityPartCount to figure out the - * the values for N and M, respectively. - * - */ -template <class TBlobType> -struct ICodec { - //! Computes a sequence of parity blocks for given data blocks. - /*! - * The size of #blocks must be equal to #GetDataPartCount. - * The size of the returned array is equal to #GetParityPartCount. - */ - virtual std::vector<TBlobType> Encode(const std::vector<TBlobType>& blocks) const = 0; - - //! Decodes (repairs) missing blocks. - /*! - * #erasedIndices must contain the set of erased blocks indices. - * #blocks must contain known blocks (in the order specified by #GetRepairIndices). - * \returns The repaired blocks. - */ - virtual std::vector<TBlobType> Decode( - const std::vector<TBlobType>& blocks, - const TPartIndexList& erasedIndices) const = 0; - - //! Given a set of missing block indices, returns |true| if missing blocks can be repaired. - //! Due to performance reasons the elements of #erasedIndices must unique and sorted. - virtual bool CanRepair(const TPartIndexList& erasedIndices) const = 0; - - //! Rapid version that works with set instead of list. - virtual bool CanRepair(const TPartIndexSet& erasedIndices) const = 0; - - //! Given a set of missing block indices, checks if missing blocks can be repaired. - /*! - * \returns - * If repair is not possible, returns |std::nullopt|. - * Otherwise returns the indices of blocks (both data and parity) to be passed to #Decode - * (in this very order). Not all known blocks may be needed for repair. - */ - virtual std::optional<TPartIndexList> GetRepairIndices(const TPartIndexList& erasedIndices) const = 0; - - //! Returns the number of data blocks this codec can handle. - virtual int GetDataPartCount() const = 0; - - //! Returns the number of parity blocks this codec can handle. - virtual int GetParityPartCount() const = 0; - - //! Returns the maximum number of blocks that can always be repaired when missing. - virtual int GetGuaranteedRepairablePartCount() const = 0; - - //! Every block passed to this codec must have size divisible by the result of #GetWordSize. - virtual int GetWordSize() const = 0; - - // Extension methods - - //! Returns the sum of #GetDataPartCount and #GetParityPartCount. - int GetTotalPartCount() const { - return GetDataPartCount() + GetParityPartCount(); - } -}; - -} // namespace NErasure - |