1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
|
module MessagePack
#
# MessagePack::Packer is a class to serialize objects.
#
class Packer
#
# Creates a MessagePack::Packer instance.
# See Buffer#initialize for supported options.
#
# @overload initialize(options={})
# @param options [Hash]
#
# @overload initialize(io, options={})
# @param io [IO]
# @param options [Hash]
# This packer writes serialized objects into the IO when the internal buffer is filled.
# _io_ must respond to write(string) or append(string) method.
#
# Supported options:
#
# * *:compatibility_mode* serialize in older versions way, without str8 and bin types
#
# See also Buffer#initialize for other options.
#
def initialize(*args)
end
#
# Register a new ext type to serialize it. This method should be called with one of
# method name or block, which returns bytes(ASCII-8BIT String) representation of
# object to be serialized.
#
# @overload register_type(type, klass, &block)
# @param type [Fixnum] type id (0-127) user defined type id for specified Class
# @param klass [Class] Class to be serialized with specified type id
# @yieldparam object [Object] object to be serialized
#
# @overload register_type(type, klass, method_name)
# @param type [Fixnum] type id (0-127) user defined type id for specified Class
# @param klass [Class] Class to be serialized with specified type id
# @param method_name [Symbol] method which returns bytes of serialized representation
#
# @return nil
#
def register_type(type, klass, method_name, &block)
end
#
# Returns a list of registered types, ordered by type id.
# Each element is a Hash object includes keys :type, :class and :packer.
#
# @return Array
#
def registered_types
end
#
# Returns true/false which indicate specified class or type id is registered or not.
#
# @param klass_or_type [Class or Fixnum] Class or type id (0-127) to be checked
# @return true or false
#
def type_registered?(klass_or_type)
end
#
# Internal buffer
#
# @return MessagePack::Buffer
#
attr_reader :buffer
#
# Serializes an object into internal buffer, and flushes to io if necessary.
#
# If it could not serialize the object, it raises
# NoMethodError: undefined method `to_msgpack' for #<the_object>.
#
# @param obj [Object] object to serialize
# @return [Packer] self
#
def write(obj)
end
alias pack write
#
# Serializes a nil object. Same as write(nil).
#
def write_nil
end
#
# Serializes a string object as binary data. Same as write("string".encode(Encoding::BINARY)).
#
def write_bin(obj)
end
#
# Write a header of an array whose size is _n_.
# For example, write_array_header(1).write(true) is same as write([ true ]).
#
# @return [Packer] self
#
def write_array_header(n)
end
#
# Write a header of an map whose size is _n_.
# For example, write_map_header(1).write('key').write(true) is same as write('key'=>true).
#
# @return [Packer] self
#
def write_map_header(n)
end
#
# Write a header of a binary string whose size is _n_. Useful if you want to append large binary data without loading it into memory at once.
# For example,
# MessagePack::Packer.new(io).write_bin_header(12).flush
# io.write('chunk1')
# io.write('chunk2')
# is the same as
# write('chunk1chunk2'.encode(Encoding::BINARY)).
#
# @return [Packer] self
#
def write_bin_header(n)
end
#
# Serializes _value_ as 32-bit single precision float into internal buffer.
# _value_ will be approximated with the nearest possible single precision float, thus
# being potentially lossy. However, the serialized string will only take up 5 bytes
# instead of 9 bytes compared to directly serializing a 64-bit double precision Ruby Float.
#
# @param value [Numeric]
# @return [Packer] self
#
def write_float32(value)
end
#
# Flushes data in the internal buffer to the internal IO. Same as _buffer.flush.
# If internal IO is not set, it does nothing.
#
# @return [Packer] self
#
def flush
end
#
# Makes the internal buffer empty. Same as _buffer.clear_.
#
# @return nil
#
def reset
end
alias clear reset
#
# Returns size of the internal buffer. Same as buffer.size.
#
# @return [Integer]
#
def size
end
#
# Returns _true_ if the internal buffer is empty. Same as buffer.empty?.
# This method is slightly faster than _size_.
#
# @return [Boolean]
#
def empty?
end
#
# Returns all data in the buffer as a string, and reset the buffer.
#
# @return [String]
#
def full_pack
end
#
# Returns all data in the buffer as a string. Same as buffer.to_str.
#
# Does not empty the buffer, in most case _full_pack_ is prefered.
#
# @return [String]
#
def to_str
end
alias to_s to_str
#
# Returns content of the internal buffer as an array of strings. Same as buffer.to_a.
# This method is faster than _to_str_.
#
# @return [Array] array of strings
#
def to_a
end
#
# Writes all of data in the internal buffer into the given IO. Same as buffer.write_to(io).
# This method consumes and removes data from the internal buffer.
# _io_ must respond to write(data) method.
#
# @param io [IO]
# @return [Integer] byte size of written data
#
def write_to(io)
end
end
end
|