Class: AMQP::Framing::String::Frame
- Inherits:
-
AMQ::Protocol::Frame
- Object
- AMQ::Protocol::Frame
- AMQP::Framing::String::Frame
- Defined in:
- lib/amqp/framing/string/frame.rb
Constant Summary collapse
- ENCODINGS_SUPPORTED =
defined? Encoding
- HEADER_SLICE =
(0..6).freeze
- DATA_SLICE =
(7..-1).freeze
- PAYLOAD_SLICE =
(0..-2).freeze
Class Method Summary collapse
Class Method Details
.decode(string) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/amqp/framing/string/frame.rb', line 14 def self.decode(string) header = string[HEADER_SLICE] type, channel, size = self.decode_header(header) data = string[DATA_SLICE] payload = data[PAYLOAD_SLICE] frame_end = data[-1, 1] frame_end.force_encoding(AMQ::Protocol::Frame::FINAL_OCTET.encoding) if ENCODINGS_SUPPORTED # 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 != AMQ::Protocol::Frame::FINAL_OCTET self.new(type, payload, channel) end |