2022-05-19 19:56:03 +00:00
|
|
|
## Nim-Codex
|
2022-04-06 00:34:29 +00:00
|
|
|
## Copyright (c) 2022 Status Research & Development GmbH
|
|
|
|
## Licensed under either of
|
|
|
|
## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
|
|
|
|
## * MIT license ([LICENSE-MIT](LICENSE-MIT))
|
|
|
|
## at your option.
|
|
|
|
## This file may not be copied, modified, or distributed except according to
|
|
|
|
## those terms.
|
|
|
|
|
|
|
|
import std/tables
|
|
|
|
import pkg/libp2p
|
|
|
|
import pkg/questionable
|
|
|
|
|
|
|
|
const
|
|
|
|
DagPBCodec* = multiCodec("dag-pb")
|
|
|
|
|
|
|
|
type
|
|
|
|
ManifestCoderType*[codec: static MultiCodec] = object
|
|
|
|
DagPBCoder* = ManifestCoderType[multiCodec("dag-pb")]
|
|
|
|
|
|
|
|
const
|
|
|
|
ManifestContainers* = {
|
|
|
|
$DagPBCodec: DagPBCoder()
|
|
|
|
}.toTable
|
|
|
|
|
|
|
|
type
|
|
|
|
Manifest* = ref object of RootObj
|
|
|
|
rootHash*: ?Cid # root (tree) hash of the contained data set
|
|
|
|
blockSize*: int # size of each contained block (might not be needed if blocks are len-prefixed)
|
|
|
|
blocks*: seq[Cid] # block Cid
|
|
|
|
version*: CidVersion # Cid version
|
|
|
|
hcodec*: MultiCodec # Multihash codec
|
|
|
|
codec*: MultiCodec # Data set codec
|
|
|
|
case protected*: bool # Protected datasets have erasure coded info
|
|
|
|
of true:
|
|
|
|
K*: int # Number of blocks to encode
|
|
|
|
M*: int # Number of resulting parity blocks
|
|
|
|
originalCid*: Cid # The original Cid of the dataset being erasure coded
|
|
|
|
originalLen*: int # The length of the original manifest
|
|
|
|
else:
|
|
|
|
discard
|