blob: b1b3a29616e5b5ce7f9fb6f8aa13554681419a33 (
plain) (
tree)
|
|
import io/dynstream
type
DynFileStream* = ref object of DynStream
file*: File
method recvData*(s: DynFileStream; buffer: pointer; len: int): int =
let n = s.file.readBuffer(buffer, len)
if n == 0:
if unlikely(s.isend):
raise newException(EOFError, "eof")
s.isend = true
return n
method sendData*(s: DynFileStream; buffer: pointer; len: int): int =
return s.file.writeBuffer(buffer, len)
method seek*(s: DynFileStream; off: int) =
s.file.setFilePos(int64(off))
method sclose*(s: DynFileStream) =
s.file.close()
method sflush*(s: DynFileStream) =
s.file.flushFile()
proc newDynFileStream*(file: File): DynFileStream =
return DynFileStream(file: file, blocking: true)
proc newDynFileStream*(path: string): DynFileStream =
var file: File
if file.open(path):
return newDynFileStream(path)
return nil
|