This commit is contained in:
data-man
2018-05-25 06:50:39 +03:00
parent e206a8d952
commit 605b65487f

View File

@@ -88,16 +88,18 @@ proc readData*(s: Stream, buffer: pointer, bufLen: int): int =
proc readAll*(s: Stream): string =
## Reads all available data.
const bufferSize = 1000
const bufferSize = 1024
result = newString(bufferSize)
var r = 0
var buffer {.noinit.}: array[bufferSize, char]
while true:
let readBytes = readData(s, addr(result[r]), bufferSize)
if readBytes < bufferSize:
setLen(result, r+readBytes)
let readBytes = readData(s, addr(buffer[0]), bufferSize)
if readBytes == 0:
break
let prevLen = result.len
result.setLen(prevLen + readBytes)
copyMem(addr(result[prevLen]), addr(buffer[0]), readBytes)
if readBytes < bufferSize:
break
inc r, bufferSize
setLen(result, r+bufferSize)
proc peekData*(s: Stream, buffer: pointer, bufLen: int): int =
## low level proc that reads data into an untyped `buffer` of `bufLen` size