Class: Borsh::Sizer

Inherits:
Object
  • Object
show all
Includes:
Writable
Defined in:
lib/borsh/sizer.rb

Overview

A byte counter for writing Borsh data.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Writable

#write_array, #write_bool, #write_enum, #write_f32, #write_f64, #write_i128, #write_i16, #write_i32, #write_i64, #write_i8, #write_map, #write_object, #write_option, #write_result, #write_set, #write_string, #write_struct, #write_u128, #write_u16, #write_u32, #write_u64, #write_u8, #write_unit, #write_vector

Constructor Details

#initialize {|buffer| ... } ⇒ void

Yields:

  • (buffer)

Yield Parameters:

Yield Returns:

  • (void)


26
27
28
29
# File 'lib/borsh/sizer.rb', line 26

def initialize(&block)
  self.reset!
  block.call(self) if block_given?
end

Instance Attribute Details

#bytesizeInteger (readonly) Also known as: size

Returns the buffer size in bytes.

Returns:

  • (Integer)


35
36
37
# File 'lib/borsh/sizer.rb', line 35

def bytesize
  @bytesize
end

Class Method Details

.open {|buffer| ... } ⇒ Integer

Yields:

  • (buffer)

Yield Parameters:

Yield Returns:

  • (void)

Returns:

  • (Integer)


15
16
17
18
19
# File 'lib/borsh/sizer.rb', line 15

def self.open(&block)
  buffer = self.new(&block)
  buffer.close
  buffer.bytesize
end

Instance Method Details

#closevoid

This method returns an undefined value.

Closes the buffer.



48
# File 'lib/borsh/sizer.rb', line 48

def close; @closed ||= true; end

#closed?Boolean

Returns ‘true` if the buffer is closed.

Returns:

  • (Boolean)


42
# File 'lib/borsh/sizer.rb', line 42

def closed?; @closed; end

#reset!Integer

Returns:

  • (Integer)


62
63
64
65
66
# File 'lib/borsh/sizer.rb', line 62

def reset!
  result = @bytesize
  @bytesize, @closed = 0, false
  result
end

#write(data) ⇒ Integer

Writes data to the buffer.

Parameters:

  • data (String, #to_s)

Returns:

  • (Integer)

Raises:

  • (IOError)


55
56
57
58
# File 'lib/borsh/sizer.rb', line 55

def write(data)
  raise IOError, "closed stream" if self.closed?
  @bytesize += data.to_s.bytesize
end