about summary refs log tree commit diff stats
path: root/src/io/teestream.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/io/teestream.nim')
-rw-r--r--src/io/teestream.nim47
1 files changed, 0 insertions, 47 deletions
diff --git a/src/io/teestream.nim b/src/io/teestream.nim
deleted file mode 100644
index f70d8c4f..00000000
--- a/src/io/teestream.nim
+++ /dev/null
@@ -1,47 +0,0 @@
-# TeeStream: write to another stream when reading from one stream.
-# See MultiStream for a push version.
-
-import std/streams
-
-type TeeStream = ref object of Stream
-  source: Stream
-  dest: Stream
-  closedest: bool
-
-proc tsClose(s: Stream) =
-  let s = cast[TeeStream](s)
-  s.source.close()
-  if s.closedest:
-    s.dest.close()
-
-proc tsReadData(s: Stream, buffer: pointer, bufLen: int): int =
-  let s = cast[TeeStream](s)
-  result = s.source.readData(buffer, bufLen)
-  s.dest.writeData(buffer, result)
-
-proc tsReadDataStr(s: Stream, buffer: var string, slice: Slice[int]): int =
-  let s = cast[TeeStream](s)
-  result = s.source.readDataStr(buffer, slice)
-  if result <= 0: return
-  s.dest.writeData(addr buffer[0], result)
-
-proc tsAtEnd(s: Stream): bool =
-  let s = cast[TeeStream](s)
-  return s.source.atEnd
-
-proc newTeeStream*(source, dest: Stream, closedest = true): TeeStream =
-  return TeeStream(
-    source: source,
-    dest: dest,
-    closedest: closedest,
-    closeImpl: tsClose,
-    readDataImpl:
-      cast[proc(s: Stream, buffer: pointer, len: int): int
-      {.nimcall, raises: [Defect, IOError, OSError], tags: [ReadIOEffect], gcsafe.}
-      ](tsReadData),
-    readDataStrImpl:
-      cast[proc(s: Stream, buffer: var string, slice: Slice[int]): int
-      {.nimcall, raises: [Defect, IOError, OSError], tags: [ReadIOEffect], gcsafe.}
-      ](tsReadDataStr),
-    atEndImpl: tsAtEnd
-  )