Class: Ignite::Request
- Inherits:
-
Object
- Object
- Ignite::Request
- Defined in:
- lib/ignite/request.rb
Constant Summary collapse
- MIN_LONG =
-2**63
-9223372036854775808 # -2**63
- MAX_LONG =
2**63-1
9223372036854775807
Instance Method Summary collapse
- #bool(value) ⇒ Object
- #byte(value) ⇒ Object
- #data_object(value) ⇒ Object
- #double(value) ⇒ Object
- #float(value) ⇒ Object
-
#initialize(op_code) ⇒ Request
constructor
A new instance of Request.
- #int(value) ⇒ Object
- #long(value) ⇒ Object
- #short(value) ⇒ Object
- #string(value) ⇒ Object
- #to_bytes ⇒ Object
Constructor Details
#initialize(op_code) ⇒ Request
Returns a new instance of Request.
6 7 8 9 10 11 12 13 14 |
# File 'lib/ignite/request.rb', line 6 def initialize(op_code) @buffer = String.new int 0 # length placeholder if op_code != OP_HANDSHAKE short op_code long rand(MIN_LONG..MAX_LONG) # request id end end |
Instance Method Details
#bool(value) ⇒ Object
22 23 24 |
# File 'lib/ignite/request.rb', line 22 def bool(value) byte(value ? 1 : 0) end |
#byte(value) ⇒ Object
26 27 28 |
# File 'lib/ignite/request.rb', line 26 def byte(value) [value].pack("C", buffer: @buffer) end |
#data_object(value) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/ignite/request.rb', line 56 def data_object(value) case value when Integer byte 4 long value when Float byte 6 double value when TrueClass, FalseClass byte 8 bool value when String string value when Date byte 11 time = value.to_time long(time.to_i * 1000 + (time.nsec / 1000000)) when Time byte 33 long(value.to_i * 1000 + (value.nsec / 1000000)) int value.nsec % 1000000 when NilClass byte 101 else raise "Unknown type: #{value.class.name}" end end |
#double(value) ⇒ Object
46 47 48 |
# File 'lib/ignite/request.rb', line 46 def double(value) [value].pack("E", buffer: @buffer) end |
#float(value) ⇒ Object
42 43 44 |
# File 'lib/ignite/request.rb', line 42 def float(value) [value].pack("e", buffer: @buffer) end |
#int(value) ⇒ Object
34 35 36 |
# File 'lib/ignite/request.rb', line 34 def int(value) [value].pack("i!<", buffer: @buffer) end |
#long(value) ⇒ Object
38 39 40 |
# File 'lib/ignite/request.rb', line 38 def long(value) [value].pack("l!<", buffer: @buffer) end |
#short(value) ⇒ Object
30 31 32 |
# File 'lib/ignite/request.rb', line 30 def short(value) [value].pack("s!<", buffer: @buffer) end |
#string(value) ⇒ Object
50 51 52 53 54 |
# File 'lib/ignite/request.rb', line 50 def string(value) byte 9 int value.bytesize @buffer << value end |
#to_bytes ⇒ Object
16 17 18 19 20 |
# File 'lib/ignite/request.rb', line 16 def to_bytes # update length @buffer[0..3] = [@buffer.bytesize - 4].pack("i!<") @buffer end |