class Cql::Protocol::ExecuteRequest

Constants

TYPE_CONVERTER

Attributes

consistency[R]
id[R]
metadata[R]
page_size[R]
paging_state[R]
request_metadata[R]
serial_consistency[R]
values[R]

Public Class Methods

encode_values(buffer, metadata, values) click to toggle source
# File lib/cql/protocol/requests/execute_request.rb, line 73
def self.encode_values(buffer, metadata, values)
  buffer.append_short(metadata.size)
  metadata.each_with_index do |(_, _, _, type), index|
    TYPE_CONVERTER.to_bytes(buffer, type, values[index])
  end
  buffer
end
new(id, metadata, values, request_metadata, consistency, serial_consistency=nil, page_size=nil, paging_state=nil, trace=false) click to toggle source
Calls superclass method Cql::Protocol::Request::new
# File lib/cql/protocol/requests/execute_request.rb, line 8
def initialize(id, metadata, values, request_metadata, consistency, serial_consistency=nil, page_size=nil, paging_state=nil, trace=false)
  raise ArgumentError, "Metadata for #{metadata.size} columns, but #{values.size} values given" if metadata.size != values.size
  raise ArgumentError, %(No such consistency: #{consistency.inspect}) if consistency.nil? || !CONSISTENCIES.include?(consistency)
  raise ArgumentError, %(No such consistency: #{serial_consistency.inspect}) unless serial_consistency.nil? || CONSISTENCIES.include?(serial_consistency)
  raise ArgumentError, %(Paging state given but no page size) if paging_state && !page_size
  super(10, trace)
  @id = id
  @metadata = metadata
  @values = values
  @request_metadata = request_metadata
  @consistency = consistency
  @serial_consistency = serial_consistency
  @page_size = page_size
  @paging_state = paging_state
  @encoded_values = self.class.encode_values(CqlByteBuffer.new, @metadata, @values)
end

Public Instance Methods

==(rq)
Alias for: eql?
eql?(rq) click to toggle source
# File lib/cql/protocol/requests/execute_request.rb, line 54
def eql?(rq)
  self.class === rq && rq.id == self.id && rq.metadata == self.metadata && rq.values == self.values && rq.consistency == self.consistency && rq.serial_consistency == self.serial_consistency && rq.page_size == self.page_size && rq.paging_state == self.paging_state
end
Also aliased as: ==
hash() click to toggle source
# File lib/cql/protocol/requests/execute_request.rb, line 59
def hash
  @h ||= begin
    h = 0
    h = ((h & 33554431) * 31) ^ @id.hash
    h = ((h & 33554431) * 31) ^ @metadata.hash
    h = ((h & 33554431) * 31) ^ @values.hash
    h = ((h & 33554431) * 31) ^ @consistency.hash
    h = ((h & 33554431) * 31) ^ @serial_consistency.hash
    h = ((h & 33554431) * 31) ^ @page_size.hash
    h = ((h & 33554431) * 31) ^ @paging_state.hash
    h
  end
end
to_s() click to toggle source
# File lib/cql/protocol/requests/execute_request.rb, line 49
def to_s
  id = @id.each_byte.map { |x| x.to_s(16) }.join('')
  %(EXECUTE #{id} #@values #{@consistency.to_s.upcase})
end
write(protocol_version, buffer) click to toggle source
# File lib/cql/protocol/requests/execute_request.rb, line 25
def write(protocol_version, buffer)
  buffer.append_short_bytes(@id)
  if protocol_version > 1
    buffer.append_consistency(@consistency)
    flags  = 0
    flags |= 0x01 if @values.size > 0
    flags |= 0x02 unless @request_metadata
    flags |= 0x04 if @page_size
    flags |= 0x08 if @paging_state
    flags |= 0x10 if @serial_consistency
    buffer.append(flags.chr)
    if @values.size > 0
      buffer.append(@encoded_values)
    end
    buffer.append_int(@page_size) if @page_size
    buffer.append_bytes(@paging_state) if @paging_state
    buffer.append_consistency(@serial_consistency) if @serial_consistency
  else
    buffer.append(@encoded_values)
    buffer.append_consistency(@consistency)
  end
  buffer
end