module IO::Buffered

Overview

The IO::Buffered mixin enhances the IO module with input/output buffering.

The buffering behaviour can be turned on/off with the #sync= method.

Additionally, several methods, like #gets, are implemented in a more efficient way.

Included Modules

Direct including types

Defined in:

io/buffered.cr

Constant Summary

BUFFER_SIZE = 8192

Instance Method Summary

Instance methods inherited from module IO

<<(obj) : self <<, close close, closed? closed?, each_byte
each_byte(&block) : Nil
each_byte
, each_char(&block) : Nil
each_char
each_char
, each_line(*args, **options, &block) : Nil
each_line(*args, **options)
each_line
, encoding : String encoding, flush flush, gets(limit : Int, chomp = false) : String?
gets(delimiter : Char, chomp = false) : String?
gets(delimiter : String, chomp = false) : String?
gets(chomp = true) : String?
gets(delimiter : Char, limit : Int, chomp = false) : String?
gets
, gets_to_end : String gets_to_end, peek : Bytes? peek, print(*objects : _) : Nil
print(obj) : Nil
print
, printf(format_string, args : Array | Tuple) : Nil
printf(format_string, *args) : Nil
printf
, puts(*objects : _) : Nil
puts : Nil
puts(obj) : Nil
puts(string : String) : Nil
puts
, read(slice : Bytes) read, read_byte : UInt8? read_byte, read_bytes(type, format : IO::ByteFormat = IO::ByteFormat::SystemEndian) read_bytes, read_char : Char? read_char, read_fully(slice : Bytes) read_fully, read_fully?(slice : Bytes) read_fully?, read_line(*args, **options) : String? read_line, read_string(bytesize : Int) : String read_string, read_utf8(slice : Bytes) read_utf8, read_utf8_byte read_utf8_byte, rewind rewind, set_encoding(encoding : String, invalid : Symbol? = nil) set_encoding, skip(bytes_count : Int) : Nil skip, skip_to_end : Nil skip_to_end, tty? : Bool tty?, write(slice : Bytes) : Nil write, write_byte(byte : UInt8) write_byte, write_bytes(object, format : IO::ByteFormat = IO::ByteFormat::SystemEndian) write_bytes, write_utf8(slice : Bytes) write_utf8

Class methods inherited from module IO

copy(src, dst, limit : Int)
copy(src, dst)
copy
, pipe(read_blocking = false, write_blocking = false)
pipe(read_blocking = false, write_blocking = false, &block)
pipe

Instance Method Detail

def close : Nil #

Flushes and closes the underlying IO.


View source
def flush #

Flushes any buffered data and the underlying IO. Returns self.


View source
def flush_on_newline=(flush_on_newline) #

Turns on/off flushing the underlying IO when a newline is written.


View source
def flush_on_newline? #

Determines if this IO flushes automatically when a newline is written.


View source
def peek : Bytes? #

Returns the bytes hold in the read buffer.

This method only performs a read to return peek data if the current buffer is empty: otherwise no read is performed and whatever is in the buffer is returned.


View source
def read(slice : Bytes) #

Buffered implementation of IO#read(slice).


View source
def rewind #

Rewinds the underlying IO. Returns self.


View source
def sync=(sync) #

Turns on/off IO buffering. When sync is set to true, no buffering will be done (that is, writing to this IO is immediately synced to the underlying IO).


View source
def sync? #

Determines if this IO does buffering. If true, no buffering is done.


View source
abstract def unbuffered_close #

Closes the wrapped IO.


View source
abstract def unbuffered_flush #

Flushes the wrapped IO.


View source
abstract def unbuffered_read(slice : Bytes) #

Reads at most slice.size bytes from the wrapped IO into slice. Returns the number of bytes read.


View source
abstract def unbuffered_rewind #

Rewinds the wrapped IO.


View source
abstract def unbuffered_write(slice : Bytes) #

Writes at most slice.size bytes from slice into the wrapped IO. Returns the number of bytes written.


View source
def write(slice : Bytes) #

Buffered implementation of IO#write(slice).


View source