class Cql::Protocol::FrameEncoder

@private

Public Class Methods

new(protocol_version=1, compressor=nil) click to toggle source
# File lib/cql/protocol/frame_encoder.rb, line 7
def initialize(protocol_version=1, compressor=nil)
  @protocol_version = protocol_version
  @compressor = compressor
end

Public Instance Methods

change_stream_id(new_stream_id, buffer, offset=0) click to toggle source
# File lib/cql/protocol/frame_encoder.rb, line 27
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) click to toggle source
# File lib/cql/protocol/frame_encoder.rb, line 12
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 ||= CqlByteBuffer.new
  flags = request.trace? ? 2 : 0
  body = request.write(@protocol_version, CqlByteBuffer.new)
  if @compressor && request.compressable? && @compressor.compress?(body)
    flags |= 1
    body = @compressor.compress(body)
  end
  header = [@protocol_version, flags, stream_id, request.opcode, body.bytesize]
  buffer << header.pack(Formats::HEADER_FORMAT)
  buffer << body
  buffer
end