class Avro::IO::BinaryEncoder

Write leaf values

Attributes

writer[R]

Public Class Methods

new(writer) click to toggle source
    # File lib/avro/io.rb
153 def initialize(writer)
154   @writer = writer
155 end

Public Instance Methods

write(datum) click to toggle source

Write an arbritary datum.

    # File lib/avro/io.rb
217 def write(datum)
218   writer.write(datum)
219 end
write_boolean(datum) click to toggle source

a boolean is written as a single byte whose value is either 0 (false) or 1 (true).

    # File lib/avro/io.rb
164 def write_boolean(datum)
165   on_disk = datum ? 1.chr : 0.chr
166   writer.write(on_disk)
167 end
write_bytes(datum) click to toggle source

Bytes are encoded as a long followed by that many bytes of data.

    # File lib/avro/io.rb
204 def write_bytes(datum)
205   write_long(datum.bytesize)
206   @writer.write(datum)
207 end
write_double(datum) click to toggle source

A double is written as 8 bytes. The double is converted into a 64-bit integer using a method equivalent to Java’s doubleToLongBits and then encoded in little-endian format.

    # File lib/avro/io.rb
199 def write_double(datum)
200   @writer.write([datum].pack('E'))
201 end
write_float(datum) click to toggle source

A float is written as 4 bytes. The float is converted into a 32-bit integer using a method equivalent to Java’s floatToIntBits and then encoded in little-endian format.

    # File lib/avro/io.rb
191 def write_float(datum)
192   @writer.write([datum].pack('e'))
193 end
write_int(n) click to toggle source

int and long values are written using variable-length, zig-zag coding.

    # File lib/avro/io.rb
171 def write_int(n)
172   write_long(n)
173 end
write_long(n) click to toggle source

int and long values are written using variable-length, zig-zag coding.

    # File lib/avro/io.rb
177 def write_long(n)
178   foo = n
179   n = (n << 1) ^ (n >> 63)
180   while (n & ~0x7F) != 0
181     @writer.write(((n & 0x7f) | 0x80).chr)
182     n >>= 7
183   end
184   @writer.write(n.chr)
185 end
write_null(datum) click to toggle source

null is written as zero bytes

    # File lib/avro/io.rb
158 def write_null(datum)
159   nil
160 end
write_string(datum) click to toggle source

A string is encoded as a long followed by that many bytes of UTF-8 encoded character data

    # File lib/avro/io.rb
211 def write_string(datum)
212   datum = datum.encode('utf-8') if datum.respond_to? :encode
213   write_bytes(datum)
214 end