class Thrift::MemoryBufferTransport

Constants

GARBAGE_BUFFER_SIZE

Public Class Methods

new(buffer = nil) click to toggle source

If you pass a string to this, you should dup that string unless you want it to be modified by read and write

   # File lib/thrift/transport/memory_buffer_transport.rb
30 def initialize(buffer = nil)
31   @buf = buffer || ''
32   @index = 0
33 end

Public Instance Methods

available() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
55 def available
56   @buf.length - @index
57 end
close() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
42 def close
43 end
flush() click to toggle source
    # File lib/thrift/transport/memory_buffer_transport.rb
106 def flush
107 end
inspect_buffer() click to toggle source
    # File lib/thrift/transport/memory_buffer_transport.rb
109 def inspect_buffer
110   out = []
111   for idx in 0...(@buf.size)
112     # if idx != 0
113     #   out << " "
114     # end
115   
116     if idx == @index
117       out << ">"
118     end
119   
120     out << @buf[idx].ord.to_s(16)
121   end
122   out.join(" ")
123 end
open() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
39 def open
40 end
open?() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
35 def open?
36   return true
37 end
peek() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
45 def peek
46   @index < @buf.size
47 end
read(len) click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
59 def read(len)
60   data = @buf.slice(@index, len)
61   @index += len
62   @index = @buf.size if @index > @buf.size
63   if @index >= GARBAGE_BUFFER_SIZE
64     @buf = @buf.slice(@index..-1)
65     @index = 0
66   end
67   if data.size < len
68     raise EOFError, "Not enough bytes remain in buffer"
69   end
70   data
71 end
read_byte() click to toggle source
   # File lib/thrift/transport/memory_buffer_transport.rb
73 def read_byte
74   raise EOFError.new("Not enough bytes remain in buffer") if @index >= @buf.size
75   val = ::Thrift::TransportUtils.get_string_byte(@buf, @index)
76   @index += 1
77   if @index >= GARBAGE_BUFFER_SIZE
78     @buf = @buf.slice(@index..-1)
79     @index = 0
80   end
81   val
82 end
read_into_buffer(buffer, size) click to toggle source
    # File lib/thrift/transport/memory_buffer_transport.rb
 84 def read_into_buffer(buffer, size)
 85   i = 0
 86   while i < size
 87     raise EOFError.new("Not enough bytes remain in buffer") if @index >= @buf.size
 88 
 89     # The read buffer has some data now, so copy bytes over to the output buffer.
 90     byte = ::Thrift::TransportUtils.get_string_byte(@buf, @index)
 91     ::Thrift::TransportUtils.set_string_byte(buffer, i, byte)
 92     @index += 1
 93     i += 1
 94   end
 95   if @index >= GARBAGE_BUFFER_SIZE
 96     @buf = @buf.slice(@index..-1)
 97     @index = 0
 98   end
 99   i
100 end
reset_buffer(new_buf = '') click to toggle source

this method does not use the passed object directly but copies it

   # File lib/thrift/transport/memory_buffer_transport.rb
50 def reset_buffer(new_buf = '')
51   @buf.replace new_buf
52   @index = 0
53 end
write(wbuf) click to toggle source
    # File lib/thrift/transport/memory_buffer_transport.rb
102 def write(wbuf)
103   @buf << wbuf
104 end