class Cassandra::Protocol::V4::Encoder

Constants

HEADER_FORMAT

Public Class Methods

new(compressor, protocol_version) click to toggle source
   # File lib/cassandra/protocol/v4.rb
26 def initialize(compressor, protocol_version)
27   @compressor       = compressor
28   @protocol_version = protocol_version
29 end

Public Instance Methods

encode(buffer, request, stream_id) click to toggle source
   # File lib/cassandra/protocol/v4.rb
31 def encode(buffer, request, stream_id)
32   flags  = 0
33   flags |= 0x02 if request.trace?
34   flags |= 0x10 if @protocol_version == Cassandra::Protocol::Versions::BETA_VERSION
35 
36   body = CqlByteBuffer.new
37 
38   if request.payload?
39     flags |= 0x04
40     body.append_bytes_map(request.payload)
41   end
42 
43   request.write(body, @protocol_version, self)
44 
45   if @compressor && request.compressable? && @compressor.compress?(body)
46     flags |= 1
47     body   = @compressor.compress(body)
48   end
49 
50   header = [@protocol_version, flags, stream_id, request.opcode, body.bytesize]
51   buffer << header.pack(HEADER_FORMAT)
52   buffer << body
53 
54   buffer
55 end
write_parameters(buffer, params, types, names = EMPTY_LIST) click to toggle source
   # File lib/cassandra/protocol/v4.rb
57 def write_parameters(buffer, params, types, names = EMPTY_LIST)
58   Coder.write_values_v4(buffer, params, types, names)
59 end