about summary refs log tree commit diff
path: root/tvix/nar-bridge/pkg/importer/counting_writer.go
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-10-03T11·23+0300
committerflokli <flokli@flokli.de>2023-10-05T06·17+0000
commit49b427d7736b11ba05892126f63557146a642a67 (patch)
tree174ff692e03753938318e6c73b9bd021fb62716d /tvix/nar-bridge/pkg/importer/counting_writer.go
parentf92b0ef9336552c46d63a4b497603e691bfbf39b (diff)
refactor(tvix/nar-bridge): combine writers/readers r/6695
We can drop most of Hasher if we use a MultiWriter writing to the hash
function and a minimal CountingWriter.

This should make things a bit more understandable.

Change-Id: I37ee72d9a5c73f253aecc1ad761cb723389b89fc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9529
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nar-bridge/pkg/importer/counting_writer.go')
-rw-r--r--tvix/nar-bridge/pkg/importer/counting_writer.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/tvix/nar-bridge/pkg/importer/counting_writer.go b/tvix/nar-bridge/pkg/importer/counting_writer.go
new file mode 100644
index 000000000000..d003a4b11bfd
--- /dev/null
+++ b/tvix/nar-bridge/pkg/importer/counting_writer.go
@@ -0,0 +1,21 @@
+package importer
+
+import (
+	"io"
+)
+
+// CountingWriter implements io.Writer.
+var _ io.Writer = &CountingWriter{}
+
+type CountingWriter struct {
+	bytesWritten uint64
+}
+
+func (cw *CountingWriter) Write(p []byte) (n int, err error) {
+	cw.bytesWritten += uint64(len(p))
+	return len(p), nil
+}
+
+func (cw *CountingWriter) BytesWritten() uint64 {
+	return cw.bytesWritten
+}