class

Thrift::Transport::MemoryBufferTransport

Inherits Thrift::Transport::BaseTransport < IO < Reference < Object

MemoryBufferTransport Similar to IO::Memory except we don't increment pos on writes

Constants

DEFAULT_BUFFER = 1 << 12

Constructors

new(capacity : Int32 = DEFAULT_BUFFER)
Source

Instance methods

available
Source
close

Closes this IO.

IO defines this is a no-op method, but including types may override.

Source
flush

Flushes buffered data, if any.

IO defines this is a no-op method, but including types may override.

Source
open
Source
open?
Source
peek

Peeks into this IO, if possible.

It returns:

  • nil if this IO isn't peekable at this moment or at all
  • an empty slice if it is, but EOF was reached
  • a non-empty slice if some data can be peeked

The returned bytes are only valid data until a next call to any method that reads from this IO is invoked.

By default this method returns nil, but IO implementations that provide buffering or wrap other IOs should override this method.

Source
read(slice : Bytes)

Reads at most slice.size bytes from this IO into slice. Returns the number of bytes read, which is 0 if and only if there is no more data to read (so checking for 0 is the way to detect end of file).

io = IO::Memory.new "hello"
slice = Bytes.new(4)
io.read(slice) # => 4
slice          # => Bytes[104, 101, 108, 108]
io.read(slice) # => 1
slice          # => Bytes[111, 101, 108, 108]
io.read(slice) # => 0
Source
read_byte

Reads a single byte from this IO. Returns nil if there is no more data to read.

io = IO::Memory.new "a"
io.read_byte # => 97
io.read_byte # => nil
Source
reset_buffer
Source
to_s

Returns a nicely readable and concise string representation of this object, typically intended for users.

This method should usually not be overridden. It delegates to #to_s(IO) which can be overridden for custom implementations.

Also see #inspect.

Source
write(slice : Bytes) : Nil

Writes the contents of slice into this IO.

io = IO::Memory.new
slice = Bytes.new(4) { |i| ('a'.ord + i).to_u8 }
io.write(slice)
io.to_s # => "abcd"
Source