Class: Thrift::BufferedTransport

### Home Classes Methods

### In Files

- lib/thrift/transport/buffered_transport.rb

### Parent

Thrift::BaseTransport

### Methods

- ::new
- #close
- #flush
- #open
- #open?
- #read
- #read_byte
- #read_into_buffer
- #write

### Files

- CHANGELOG
- README
- Makefile

### Class/Module Index

Quicksearch

- Thrift
- Thrift::ApplicationException
- Thrift::BaseProtocol
- Thrift::BaseProtocolFactory
- Thrift::BaseServer
- Thrift::BaseServerTransport
- Thrift::BaseTransport
- Thrift::BaseTransportFactory
- Thrift::BinaryProtocol
- Thrift::BinaryProtocolAcceleratedFactory
- Thrift::BinaryProtocolFactory
- Thrift::BufferedTransport
- Thrift::BufferedTransportFactory
- Thrift::Client
- Thrift::CompactProtocol
- Thrift::CompactProtocol::CompactTypes
- Thrift::CompactProtocolFactory
- Thrift::Deserializer
- Thrift::Exception
- Thrift::FramedTransport
- Thrift::FramedTransportFactory
- Thrift::HTTPClientTransport
- Thrift::IOStreamTransport
- Thrift::MemoryBufferTransport
- Thrift::MessageTypes
- Thrift::MongrelHTTPServer
- Thrift::MongrelHTTPServer::Handler
- Thrift::NonblockingServer
- Thrift::Processor
- Thrift::ProtocolException
- Thrift::Serializer
- Thrift::ServerSocket
- Thrift::SimpleServer
- Thrift::Socket
- Thrift::Struct
- Thrift::Struct_Union
- Thrift::ThreadPoolServer
- Thrift::ThreadedServer
- Thrift::TransportException
- Thrift::TransportUtils
- Thrift::TypeError
- Thrift::Types
- Thrift::UNIXServerSocket
- Thrift::UNIXSocket
- Thrift::Union
- Fixnum

No matching classes.

# Thrift::BufferedTransport

### Constants

DEFAULT_BUFFER

### Public Class Methods

new(transport) click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 24
    def initialize(transport)
      @transport = transport
      @wbuf = ''
      @rbuf = ''
      @index = 0
    end

### Public Instance Methods

close() click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 39
    def close
      flush
      @transport.close
    end

flush() click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 92
    def flush
      if @wbuf != ''
        @transport.write(@wbuf)
        @wbuf = ''
      end

      @transport.flush
    end

open() click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 35
    def open
      @transport.open
    end

open?() click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 31
    def open?
      return @transport.open?
    end

read(sz) click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 44
    def read(sz)
      @index += sz
      ret = @rbuf.slice(@index - sz, sz) || ''

      if ret.length == 0
        @rbuf = @transport.read([sz, DEFAULT_BUFFER].max)
        @index = sz
        ret = @rbuf.slice(0, sz) || ''
      end

      ret
    end

read_byte() click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 57
    def read_byte
      # If the read buffer is exhausted, try to read up to DEFAULT_BUFFER more bytes into it.
      if @index >= @rbuf.size
        @rbuf = @transport.read(DEFAULT_BUFFER)
        @index = 0
      end

      # The read buffer has some data now, read a single byte. Using get_string_byte() avoids
      # allocating a temp string of size 1 unnecessarily.
      @index += 1
      return ::Thrift::TransportUtils.get_string_byte(@rbuf, @index - 1)
    end

read_into_buffer(buffer, size) click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 70
    def read_into_buffer(buffer, size)
      i = 0
      while i < size
        # If the read buffer is exhausted, try to read up to DEFAULT_BUFFER more bytes into it.
        if @index >= @rbuf.size
          @rbuf = @transport.read(DEFAULT_BUFFER)
          @index = 0
        end

        # The read buffer has some data now, so copy bytes over to the output buffer.
        byte = ::Thrift::TransportUtils.get_string_byte(@rbuf, @index)
        ::Thrift::TransportUtils.set_string_byte(buffer, i, byte)
        @index += 1
        i += 1
      end
      i
    end

write(buf) click to toggle source

    # File lib/thrift/transport/buffered_transport.rb, line 88
    def write(buf)
      @wbuf << buf
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.