class Framer
Definitions
def read_frame(maximum_frame_size = MAXIMUM_ALLOWED_FRAME_SIZE)
Implementation
def read_frame(maximum_frame_size = MAXIMUM_ALLOWED_FRAME_SIZE)
# Read the header:
length, type, flags, stream_id = read_header
# Console.debug(self) {"read_frame: length=#{length} type=#{type} flags=#{flags} stream_id=#{stream_id} -> klass=#{@frames[type].inspect}"}
# Allocate the frame:
klass = @frames[type] || Frame
frame = klass.new(stream_id, flags, type, length)
# Read the payload:
frame.read(@stream, maximum_frame_size)
# Console.debug(self, name: "read") {frame.inspect}
return frame
end
def write_frame(frame)
Write a frame to the underlying IO. After writing one or more frames, you should call flush to ensure the frames are sent to the remote peer.
Signature
-
parameter
frame
Frame
the frame to write.
Implementation
def write_frame(frame)
# Console.debug(self, name: "write") {frame.inspect}
frame.write(@stream)
return frame
end