Class: GorgonBunny::Framing::IO::Frame
- Inherits:
-
GorgonAMQ::Protocol::Frame
- Object
- GorgonAMQ::Protocol::Frame
- GorgonBunny::Framing::IO::Frame
- Defined in:
- lib/gorgon_bunny/lib/gorgon_bunny/framing.rb
Constant Summary
Constants inherited from GorgonAMQ::Protocol::Frame
GorgonAMQ::Protocol::Frame::CHANNEL_RANGE, GorgonAMQ::Protocol::Frame::CLASSES, GorgonAMQ::Protocol::Frame::FINAL_OCTET, GorgonAMQ::Protocol::Frame::TYPES, GorgonAMQ::Protocol::Frame::TYPES_OPTIONS, GorgonAMQ::Protocol::Frame::TYPES_REVERSE
Class Method Summary collapse
Methods inherited from GorgonAMQ::Protocol::Frame
#__new__, decode_header, encode, encode_to_array, encoded_payload, #final?, find_type, new
Class Method Details
.decode(io) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/framing.rb', line 38 def self.decode(io) header = io.read(7) type, channel, size = self.decode_header(header) data = io.read_fully(size + 1) payload, frame_end = data[PAYLOAD_SLICE], data[-1, 1] # 1) the size is miscalculated if payload.bytesize != size raise BadLengthError.new(size, payload.bytesize) end # 2) the size is OK, but the string doesn't end with FINAL_OCTET raise NoFinalOctetError.new if frame_end != GorgonAMQ::Protocol::Frame::FINAL_OCTET self.new(type, payload, channel) end |