aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/erasure/codec.h
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2022-12-02 11:31:25 +0300
committerqrort <qrort@yandex-team.com>2022-12-02 11:31:25 +0300
commitb1f4ffc9c8abff3ba58dc1ec9a9f92d2f0de6806 (patch)
tree2a23209faf0fea5586a6d4b9cee60d1b318d29fe /library/cpp/erasure/codec.h
parent559174a9144de40d6bb3997ea4073c82289b4974 (diff)
downloadydb-b1f4ffc9c8abff3ba58dc1ec9a9f92d2f0de6806.tar.gz
remove kikimr/driver DEPENDS
Diffstat (limited to 'library/cpp/erasure/codec.h')
-rw-r--r--library/cpp/erasure/codec.h80
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
-