Files
herolib/lib/data/resp/resp_buffer_string_reader.v
2024-12-25 09:23:31 +01:00

32 lines
679 B
V

module resp
import io
pub struct StringReader {
text string
mut:
place int
}
fn imin(a int, b int) int {
return if a < b { a } else { b }
}
fn (mut s StringReader) read(mut buf []u8) !int {
// console.print_header(' consumer buff len $buf.len ($s.place | ${imin(s.place + buf.len, s.text.len)} | $s.text.len)')
if s.place >= s.text.len {
// console.print_debug('NONE')
return -1
}
nrread := copy(mut buf, s.text[s.place..imin(s.place + buf.len, s.text.len)].bytes())
s.place += nrread
return nrread
}
pub fn buffered_string_reader(s string) &io.BufferedReader {
mut s2 := StringReader{
text: s + ' '
}
return io.new_buffered_reader(reader: s2, cap: 256)
}