Class: Cql::Protocol::FrameEncoder
- Inherits:
-
Object
- Object
- Cql::Protocol::FrameEncoder
- Defined in:
- lib/cql/protocol/frame_encoder.rb
Instance Method Summary collapse
- #change_stream_id(new_stream_id, buffer, offset = 0) ⇒ Object
- #encode_frame(request, stream_id = 0, buffer = nil) ⇒ Object
-
#initialize(compressor = nil) ⇒ FrameEncoder
constructor
A new instance of FrameEncoder.
Constructor Details
#initialize(compressor = nil) ⇒ FrameEncoder
Returns a new instance of FrameEncoder.
6 7 8 |
# File 'lib/cql/protocol/frame_encoder.rb', line 6 def initialize(compressor=nil) @compressor = compressor end |
Instance Method Details
#change_stream_id(new_stream_id, buffer, offset = 0) ⇒ Object
26 27 28 |
# File 'lib/cql/protocol/frame_encoder.rb', line 26 def change_stream_id(new_stream_id, buffer, offset=0) buffer.update(offset + 2, new_stream_id.chr) end |
#encode_frame(request, stream_id = 0, buffer = nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cql/protocol/frame_encoder.rb', line 10 def encode_frame(request, stream_id=0, buffer=nil) raise InvalidStreamIdError, 'The stream ID must be between 0 and 127' unless 0 <= stream_id && stream_id < 128 buffer ||= ByteBuffer.new offset = buffer.bytesize flags = request.trace? ? 2 : 0 body = request.write(ByteBuffer.new) if @compressor && request.compressable? && @compressor.compress?(body) flags |= 1 body = @compressor.compress(body) end header = [1, flags, stream_id, request.opcode, body.bytesize] buffer << header.pack(Formats::HEADER_FORMAT) buffer << body buffer end |