Class: Vertx::Buffer
- Inherits:
-
Object
- Object
- Vertx::Buffer
- Defined in:
- lib/vertx/buffer.rb
Overview
A Buffer represents a sequence of zero or more bytes that can be written to or read from, and which expands as necessary to accomodate any bytes written to it.
Buffers are used in many places in vert.x, for example to read/write data to/from NetSocket, AsyncFile, WebSocket, HttpClientRequest, HttpClientResponse, HttpServerRequest, HttpServerResponse etc.
There are two ways to write data to a Buffer: The first method involves methods that take the form set_XXX. These methods write data into the buffer starting at the specified position. The position does not have to be inside data that has already been written to the buffer; the buffer will automatically expand to encompass the position plus any data that needs to be written. All positions are measured in bytes and start with zero.
The second method involves methods that take the form append-XXX; these methods append data at the end of the buffer. Methods exist to both set and append all primitive types, String and other instances of Buffer.
Data can be read from a buffer by invoking methods which take the form get_XXX. These methods take a parameter representing the position in the Buffer from where to read data.
Class Method Summary collapse
-
.create(initial_size_hint = 0) ⇒ Object
Creates a new empty buffer.
-
.create_from_str(str, enc = "UTF-8") ⇒ Object
Create a new Buffer from a String.
Instance Method Summary collapse
- #_to_java_buffer ⇒ Object
-
#append_buffer(buff) ⇒ Buffer
Appends another buffer to the end of this buffer.
-
#append_fixnum(num, bytes) ⇒ Buffer
Appends a FixNum to the end of this buffer.
-
#append_float(num, bytes) ⇒ Buffer
Appends a Float to the end of this buffer.
-
#append_str(str, enc = "UTF-8") ⇒ Buffer
Appends a string to the end of this buffer.
-
#copy ⇒ Buffer
Get a copy of the entire buffer.
-
#get_buffer(pos, end_pos) ⇒ Buffer
Return bytes in the buffer as a Buffer.
-
#get_byte(pos) ⇒ FixNum
Get the byte at position pos in the buffer.
-
#get_fixnum(pos, bytes) ⇒ FixNum
Get the FixNum represented by a sequence of bytes starting at position pos in the buffer.
-
#get_float(pos, bytes) ⇒ Float
Get the Float represented by a sequence of bytes starting at position pos in the buffer.
-
#get_string(pos, end_pos, enc = 'UTF-8') ⇒ String
Return bytes from the buffer interpreted as a String.
-
#initialize(j_buffer) ⇒ Buffer
constructor
A new instance of Buffer.
-
#length ⇒ FixNum
The length of this buffer, in bytes.
-
#set_buffer(pos, buff) ⇒ Buffer
Sets bytes in this buffer to the bytes of the specified buffer.
-
#set_fixnum(pos, num, bytes) ⇒ Buffer
Sets bytes in the buffer to a representation of a FixNum.
-
#set_float(pos, num, bytes) ⇒ Buffer
Sets bytes in the buffer to a representation of a Float.
-
#set_string(pos, str, enc = 'UTF-8') ⇒ Buffer
Set bytes in the buffer to the string encoding in the specified encoding.
-
#to_s(enc = "UTF-8") ⇒ String
Return a String representation of the buffer.
Constructor Details
#initialize(j_buffer) ⇒ Buffer
Returns a new instance of Buffer.
40 41 42 |
# File 'lib/vertx/buffer.rb', line 40 def initialize(j_buffer) @buffer = j_buffer end |
Class Method Details
.create(initial_size_hint = 0) ⇒ Object
Creates a new empty buffer. The #length of the buffer immediately after creation will be zero. to initially allocate to the buffer to prevent excessive automatic re-allocations as data is written to it.
47 48 49 |
# File 'lib/vertx/buffer.rb', line 47 def Buffer.create(initial_size_hint = 0) Buffer.new(org.vertx.java.core.buffer.Buffer.new(initial_size_hint)) end |
Instance Method Details
#_to_java_buffer ⇒ Object
246 247 248 |
# File 'lib/vertx/buffer.rb', line 246 def _to_java_buffer @buffer end |
#append_buffer(buff) ⇒ Buffer
Appends another buffer to the end of this buffer. The buffer will expand as necessary to accomodate any bytes written.
128 129 130 131 |
# File 'lib/vertx/buffer.rb', line 128 def append_buffer(buff) @buffer.appendBuffer(buff._to_java_buffer) self end |
#append_fixnum(num, bytes) ⇒ Buffer
Appends a FixNum to the end of this buffer. The buffer will expand as necessary to accomodate any bytes written.
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/vertx/buffer.rb', line 137 def append_fixnum(num, bytes) case bytes when 1 @buffer.appendByte(num) when 2 @buffer.appendShort(num) when 4 @buffer.appendInt(num) when 8 @buffer.appendLong(num) else raise "bytes must be 1, 2, 4, or 8" end self end |
#append_float(num, bytes) ⇒ Buffer
Appends a Float to the end of this buffer. The buffer will expand as necessary to accomodate any bytes written.
157 158 159 160 161 162 163 164 165 166 |
# File 'lib/vertx/buffer.rb', line 157 def append_float(num, bytes) case bytes when 4 @buffer.appendFloat(num) when 8 @buffer.appendDouble(num) else raise "bytes must be 4 or 8" end end |
#append_str(str, enc = "UTF-8") ⇒ Buffer
Appends a string to the end of this buffer. The buffer will expand as necessary to accomodate any bytes written.
172 173 174 175 |
# File 'lib/vertx/buffer.rb', line 172 def append_str(str, enc = "UTF-8") @buffer.appendString(str, enc) self end |
#copy ⇒ Buffer
Get a copy of the entire buffer.
241 242 243 |
# File 'lib/vertx/buffer.rb', line 241 def copy Buffer.new(@buffer.copy()) end |
#get_buffer(pos, end_pos) ⇒ Buffer
Return bytes in the buffer as a Buffer
119 120 121 122 |
# File 'lib/vertx/buffer.rb', line 119 def get_buffer(pos, end_pos) j_buff = @buffer.getBuffer(pos, end_pos) Buffer.new(j_buff) end |
#get_byte(pos) ⇒ FixNum
Get the byte at position pos in the buffer.
68 69 70 |
# File 'lib/vertx/buffer.rb', line 68 def get_byte(pos) @buffer.getByte(pos) end |
#get_fixnum(pos, bytes) ⇒ FixNum
Get the FixNum represented by a sequence of bytes starting at position pos in the buffer.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/vertx/buffer.rb', line 76 def get_fixnum(pos, bytes) case bytes when 1 @buffer.getByte(pos) when 2 @buffer.getShort(pos) when 4 @buffer.getInt(pos) when 8 @buffer.getLong(pos) else raise "bytes must be 1, 2, 4, or 8" end end |
#get_float(pos, bytes) ⇒ Float
Get the Float represented by a sequence of bytes starting at position pos in the buffer.
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/vertx/buffer.rb', line 95 def get_float(pos, bytes) case bytes when 4 @buffer.getFloat(pos) when 8 @buffer.getDouble(pos) else raise "bytes must be 4 or 8" end end |
#get_string(pos, end_pos, enc = 'UTF-8') ⇒ String
Return bytes from the buffer interpreted as a String
111 112 113 |
# File 'lib/vertx/buffer.rb', line 111 def get_string(pos, end_pos, enc = 'UTF-8') @buffer.getString(pos, end_pos, enc) end |
#length ⇒ FixNum
Returns the length of this buffer, in bytes.
235 236 237 |
# File 'lib/vertx/buffer.rb', line 235 def length @buffer.length end |
#set_buffer(pos, buff) ⇒ Buffer
Sets bytes in this buffer to the bytes of the specified buffer. The buffer will expand as necessary to accomodate any bytes written.
219 220 221 222 |
# File 'lib/vertx/buffer.rb', line 219 def set_buffer(pos, buff) @buffer.setBytes(pos, buff._to_java_buffer) self end |
#set_fixnum(pos, num, bytes) ⇒ Buffer
Sets bytes in the buffer to a representation of a FixNum. The buffer will expand as necessary to accomodate any bytes written.
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/vertx/buffer.rb', line 182 def set_fixnum(pos, num, bytes) case bytes when 1 @buffer.setByte(pos, num) when 2 @buffer.setShort(pos, num) when 4 @buffer.setInt(pos, num) when 8 @buffer.setLong(pos, num) else raise "bytes must be 1, 2, 4, or 8" end self end |
#set_float(pos, num, bytes) ⇒ Buffer
Sets bytes in the buffer to a representation of a Float. The buffer will expand as necessary to accomodate any bytes written.
203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/vertx/buffer.rb', line 203 def set_float(pos, num, bytes) case bytes when 4 @buffer.setFloat(pos, num) when 8 @buffer.setDouble(pos, num) else raise "bytes must be 4 or 8" end self end |
#set_string(pos, str, enc = 'UTF-8') ⇒ Buffer
Set bytes in the buffer to the string encoding in the specified encoding
229 230 231 232 |
# File 'lib/vertx/buffer.rb', line 229 def set_string(pos, str, enc = 'UTF-8') @buffer.setString(pos, str, enc) self end |
#to_s(enc = "UTF-8") ⇒ String
Return a String representation of the buffer.
61 62 63 |
# File 'lib/vertx/buffer.rb', line 61 def to_s(enc = "UTF-8") @buffer.toString(enc) end |