Class: Tair::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/tair/request.rb

Defined Under Namespace

Classes: Header, PacketCodeNotImplemented

Constant Summary collapse

TAIR_PACKET_FLAG =
0x6d426454
MAX_INT32 =
0x7FFFFFFF

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#namespaceObject

Returns the value of attribute namespace.



5
6
7
# File 'lib/tair/request.rb', line 5

def namespace
  @namespace
end

Instance Method Details

#bodyObject



15
16
17
18
# File 'lib/tair/request.rb', line 15

def body
  # implement in sub classes
  BinData::Record.new
end

#encodeObject



7
8
9
10
11
12
# File 'lib/tair/request.rb', line 7

def encode
  body   = self.body
  header = self.header
  header.body_len = body.do_num_bytes
  header.to_binary_s << body.to_binary_s
end

#headerObject



21
22
23
# File 'lib/tair/request.rb', line 21

def header
  @header ||= Header.new(req_id: req_id, packet_code: packet_code)
end

#inspectObject



60
61
62
# File 'lib/tair/request.rb', line 60

def inspect
  "[#{self.class.name}] #{encode.each_codepoint.to_a.map {|x| x.to_s(16) }.join(" ") }"
end

#packet_codeObject



26
27
28
29
30
31
32
# File 'lib/tair/request.rb', line 26

def packet_code
  if self.class.const_defined? :PACKET_CODE
    return self.class.const_get :PACKET_CODE
  end

  raise PacketCodeNotImplemented.new('you should implement packet code in sub classes')
end

#req_idObject



45
46
47
# File 'lib/tair/request.rb', line 45

def req_id
  @req_id ||= _gen_req_id
end