diff options
Diffstat (limited to 'src/io/teestream.nim')
-rw-r--r-- | src/io/teestream.nim | 47 |
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 - ) |