From 84b605bd54808e2645a40d02ffd54c0e5380a426 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Fri, 27 Aug 2021 11:03:21 -0600 Subject: [PATCH] add block stream abstraction --- dagger/chunkedblockstream.nim | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 dagger/chunkedblockstream.nim diff --git a/dagger/chunkedblockstream.nim b/dagger/chunkedblockstream.nim new file mode 100644 index 00000000..49b6b6f5 --- /dev/null +++ b/dagger/chunkedblockstream.nim @@ -0,0 +1,28 @@ +## Nim-Dagger +## Copyright (c) 2021 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. + +{.push raises: [Defect].} + +import pkg/questionable +import pkg/questionable/results + +import ./blockstream +import ./chunker + +type + ChunkedBlockStreamRef* = ref object of BlockStreamRef + chunker*: Chunker + +method nextBlock*(c: ChunkedBlockStreamRef): ?!Block = + let data: seq[byte] = c.chunker.getBytes() + if data.len > 0: + return success Block.new(data) + +proc new*(T: type ChunkedBlockStreamRef, chunker: Chunker): T = + T(chunker: chunker)