class Avro::IO::BinaryEncoder

Write leaf values

Attributes

writer[R]

Public Class Methods

new(writer) click to toggle source
    # File lib/avro/io.rb
171 def initialize(writer)
172   @writer = writer
173 end

Public Instance Methods

write(datum) click to toggle source

Write an arbritary datum.

    # File lib/avro/io.rb
234 def write(datum)
235   writer.write(datum)
236 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
182 def write_boolean(datum)
183   on_disk = datum ? 1.chr : 0.chr
184   writer.write(on_disk)
185 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
221 def write_bytes(datum)
222   write_long(datum.bytesize)
223   @writer.write(datum)
224 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 doubleToRawLongBits and then encoded in little-endian format.

    # File lib/avro/io.rb
216 def write_double(datum)
217   @writer.write([datum].pack('E'))
218 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 floatToRawIntBits and then encoded in little-endian format.

    # File lib/avro/io.rb
208 def write_float(datum)
209   @writer.write([datum].pack('e'))
210 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
189 def write_int(n)
190   write_long(n)
191 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
195 def write_long(n)
196   n = (n << 1) ^ (n >> 63)
197   while (n & ~0x7F) != 0
198     @writer.write(((n & 0x7f) | 0x80).chr)
199     n >>= 7
200   end
201   @writer.write(n.chr)
202 end
write_null(_datum) click to toggle source

null is written as zero bytes

    # File lib/avro/io.rb
176 def write_null(_datum)
177   nil
178 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
228 def write_string(datum)
229   datum = datum.encode('utf-8') if datum.respond_to? :encode
230   write_bytes(datum)
231 end