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