aerospike 2.24.0 → 2.26.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,36 +17,34 @@
17
17
  # License for the specific language governing permissions and limitations under
18
18
  # the License.
19
19
 
20
- require 'aerospike/utils/pool'
20
+ require "aerospike/utils/pool"
21
21
 
22
22
  module Aerospike
23
-
24
23
  private
25
24
 
26
25
  # Buffer class to ease the work around
27
26
  class Buffer #:nodoc:
28
-
29
27
  @@buf_pool = Pool.new
30
28
  @@buf_pool.create_proc = Proc.new { Buffer.new }
31
29
 
32
30
  attr_accessor :buf
33
31
 
34
- INT16 = 's>'
35
- UINT16 = 'n'
36
- UINT16LE = 'v'
37
- INT32 = 'l>'
38
- UINT32 = 'N'
39
- INT64 = 'q>'
40
- UINT64 = 'Q>'
41
- UINT64LE = 'Q'
42
- DOUBLE = 'G'
32
+ INT16 = "s>"
33
+ UINT16 = "n"
34
+ UINT16LE = "v"
35
+ INT32 = "l>"
36
+ UINT32 = "N"
37
+ INT64 = "q>"
38
+ UINT64 = "Q>"
39
+ UINT64LE = "Q"
40
+ DOUBLE = "G"
43
41
 
44
42
  DEFAULT_BUFFER_SIZE = 16 * 1024
45
43
  MAX_BUFFER_SIZE = 10 * 1024 * 1024
46
44
 
47
- def initialize(size=DEFAULT_BUFFER_SIZE, buf = nil)
45
+ def initialize(size = DEFAULT_BUFFER_SIZE, buf = nil)
48
46
  @buf = (buf ? buf : ("%0#{size}d" % 0))
49
- @buf.force_encoding('binary')
47
+ @buf.force_encoding("binary")
50
48
  @slice_end = @buf.bytesize
51
49
  end
52
50
 
@@ -61,6 +59,7 @@ module Aerospike
61
59
  def size
62
60
  @buf.bytesize
63
61
  end
62
+
64
63
  alias_method :length, :size
65
64
 
66
65
  def eat!(n)
@@ -135,7 +134,7 @@ module Aerospike
135
134
  8
136
135
  end
137
136
 
138
- def read(offset, len=nil)
137
+ def read(offset, len = nil)
139
138
  if len
140
139
  @buf[offset, len]
141
140
  else
@@ -144,37 +143,37 @@ module Aerospike
144
143
  end
145
144
 
146
145
  def read_int16(offset)
147
- vals = @buf[offset..offset+1]
146
+ vals = @buf[offset..offset + 1]
148
147
  vals.unpack(INT16)[0]
149
148
  end
150
149
 
151
150
  def read_uint16(offset)
152
- vals = @buf[offset..offset+1]
151
+ vals = @buf[offset..offset + 1]
153
152
  vals.unpack(UINT16)[0]
154
153
  end
155
154
 
156
155
  def read_int32(offset)
157
- vals = @buf[offset..offset+3]
156
+ vals = @buf[offset..offset + 3]
158
157
  vals.unpack(INT32)[0]
159
158
  end
160
159
 
161
160
  def read_uint32(offset)
162
- vals = @buf[offset..offset+3]
161
+ vals = @buf[offset..offset + 3]
163
162
  vals.unpack(UINT32)[0]
164
163
  end
165
164
 
166
165
  def read_int64(offset)
167
- vals = @buf[offset..offset+7]
166
+ vals = @buf[offset..offset + 7]
168
167
  vals.unpack(INT64)[0]
169
168
  end
170
169
 
171
170
  def read_uint64_little_endian(offset)
172
- vals = @buf[offset..offset+7]
171
+ vals = @buf[offset..offset + 7]
173
172
  vals.unpack(UINT64LE)[0]
174
173
  end
175
174
 
176
175
  def read_uint64(offset)
177
- vals = @buf[offset..offset+7]
176
+ vals = @buf[offset..offset + 7]
178
177
  vals.unpack(UINT64)[0]
179
178
  end
180
179
 
@@ -183,14 +182,14 @@ module Aerospike
183
182
  i = 0
184
183
  while i < len
185
184
  val <<= 8
186
- val |= @buf[offset+i].ord & 0xFF
185
+ val |= @buf[offset + i].ord & 0xFF
187
186
  i = i.succ
188
187
  end
189
188
  val
190
189
  end
191
190
 
192
191
  def read_double(offset)
193
- vals = @buf[offset..offset+7]
192
+ vals = @buf[offset..offset + 7]
194
193
  vals.unpack(DOUBLE)[0]
195
194
  end
196
195
 
@@ -199,39 +198,48 @@ module Aerospike
199
198
  end
200
199
 
201
200
  def to_s
202
- @buf[0..@slice_end-1]
201
+ @buf[0..@slice_end - 1]
203
202
  end
204
203
 
205
204
  def reset
206
- for i in 0..@buf.size-1
207
- @buf[i] = ' '
205
+ for i in 0..@buf.size - 1
206
+ @buf[i] = " "
208
207
  end
209
208
  end
210
209
 
211
- def dump(start=0, finish=nil)
210
+ def dump(start = 0, finish = nil)
211
+ buf ||= @buf.bytes
212
212
  finish ||= @slice_end - 1
213
213
  width = 16
214
214
 
215
- ascii = '|'
215
+ ascii = "|"
216
216
  counter = 0
217
217
 
218
- print '%06x ' % start
218
+ print "%08x " % start
219
219
  @buf.bytes[start...finish].each do |c|
220
220
  if counter >= start
221
- print '%02x ' % c
221
+ print "%02x " % c
222
222
  ascii << (c.between?(32, 126) ? c : ?.)
223
- if ascii.length >= width
224
- ascii << '|'
223
+ print " " if ascii.length == (width / 2 + 1)
224
+ if ascii.length > width
225
+ ascii << "|"
225
226
  puts ascii
226
- ascii = '|'
227
- print '%06x ' % (counter + 1)
227
+ ascii = "|"
228
+ print "%08x " % (counter + 1)
228
229
  end
229
230
  end
230
231
  counter += 1
231
232
  end
232
- puts
233
- end
234
233
 
234
+ # print the remainder in buffer
235
+ if ascii.length.positive?
236
+ fill_size = ((width - ascii.length + 1) * 3)
237
+ fill_size += 1 if ascii.length <= (width / 2)
238
+ filler = " " * fill_size
239
+ print filler
240
+ ascii << "|"
241
+ puts ascii
242
+ end
243
+ end
235
244
  end # buffer
236
-
237
245
  end # module
@@ -14,13 +14,11 @@
14
14
  # License for the specific language governing permissions and limitations under
15
15
  # the License.
16
16
 
17
- require 'msgpack'
18
- require 'aerospike/utils/pool'
17
+ require "msgpack"
18
+ require "aerospike/utils/pool"
19
19
 
20
20
  module Aerospike
21
-
22
21
  class Packer < MessagePack::Packer #:nodoc:
23
-
24
22
  AS_EXT_TYPE = -1
25
23
 
26
24
  @@pool = Pool.new
@@ -44,9 +42,12 @@ module Aerospike
44
42
  buffer << [val].pack("S>")
45
43
  end
46
44
 
45
+ def write_raw(buf)
46
+ buffer.write(buf)
47
+ end
48
+
47
49
  def bytes
48
- self.to_s.force_encoding('binary')
50
+ self.to_s.force_encoding("binary")
49
51
  end
50
52
  end
51
-
52
53
  end
@@ -17,12 +17,11 @@
17
17
  # License for the specific language governing permissions and limitations under
18
18
  # the License.
19
19
 
20
- require 'aerospike/aerospike_exception'
20
+ require "aerospike/aerospike_exception"
21
21
 
22
22
  module Aerospike
23
23
  # Polymorphic value classes used to efficiently serialize objects into the wire protocol.
24
24
  class Value #:nodoc:
25
-
26
25
  def self.of(value, allow_64bits = false)
27
26
  case value
28
27
  when Integer
@@ -83,12 +82,10 @@ module Aerospike
83
82
  raise Aerospike::Exceptions::Aerospike.new(Aerospike::ResultCode::TYPE_NOT_SUPPORTED, "Value type #{value.class} not supported as hash key.")
84
83
  end
85
84
  end
86
-
87
85
  end # Value
88
86
 
89
87
  # Empty value.
90
88
  class NullValue < Value #:nodoc:
91
-
92
89
  def initialize
93
90
  self
94
91
  end
@@ -102,7 +99,7 @@ module Aerospike
102
99
  end
103
100
 
104
101
  def to_s
105
- ''
102
+ ""
106
103
  end
107
104
 
108
105
  def estimate_size
@@ -118,13 +115,12 @@ module Aerospike
118
115
  end
119
116
 
120
117
  def to_bytes
121
- ''
118
+ ""
122
119
  end
123
120
  end
124
121
 
125
122
  NULL = NullValue.new.freeze
126
123
 
127
-
128
124
  # Infinity value.
129
125
  class InfinityValue < Value #:nodoc:
130
126
  def initialize
@@ -156,7 +152,7 @@ module Aerospike
156
152
  end
157
153
 
158
154
  def to_bytes
159
- ''
155
+ ""
160
156
  end
161
157
 
162
158
  def to_msgpack_ext
@@ -197,7 +193,7 @@ module Aerospike
197
193
  end
198
194
 
199
195
  def to_bytes
200
- ''
196
+ ""
201
197
  end
202
198
 
203
199
  def to_msgpack_ext
@@ -209,10 +205,9 @@ module Aerospike
209
205
 
210
206
  # Byte array value.
211
207
  class BytesValue < Value #:nodoc:
212
-
213
208
  def initialize(value)
214
209
  @bytes = value
215
- @bytes.force_encoding('binary')
210
+ @bytes.force_encoding("binary")
216
211
 
217
212
  self
218
213
  end
@@ -244,16 +239,14 @@ module Aerospike
244
239
  def pack(packer)
245
240
  packer.write(Aerospike::ParticleType::BLOB.chr + @bytes)
246
241
  end
247
-
248
242
  end # BytesValue
249
243
 
250
244
  #######################################
251
245
 
252
246
  # value string.
253
247
  class StringValue < Value #:nodoc:
254
-
255
248
  def initialize(val)
256
- @value = val || ''
249
+ @value = val || ""
257
250
  self
258
251
  end
259
252
 
@@ -289,14 +282,12 @@ module Aerospike
289
282
  def to_sym
290
283
  @value.to_sym
291
284
  end
292
-
293
285
  end # StringValue
294
286
 
295
287
  #######################################
296
288
 
297
289
  # Integer value.
298
290
  class IntegerValue < Value #:nodoc:
299
-
300
291
  def initialize(val)
301
292
  @value = val || 0
302
293
  self
@@ -326,20 +317,18 @@ module Aerospike
326
317
  def to_bytes
327
318
  # Convert integer to big endian unsigned 64 bits.
328
319
  # @see http://ruby-doc.org/core-2.3.0/Array.html#method-i-pack
329
- [@value].pack('Q>')
320
+ [@value].pack("Q>")
330
321
  end
331
322
 
332
323
  def to_s
333
324
  @value.to_s
334
325
  end
335
-
336
326
  end # IntegerValue
337
327
 
338
328
  #######################################
339
329
 
340
330
  # Float value.
341
331
  class FloatValue < Value #:nodoc:
342
-
343
332
  def initialize(val)
344
333
  @value = val || 0.0
345
334
  self
@@ -367,13 +356,12 @@ module Aerospike
367
356
  end
368
357
 
369
358
  def to_bytes
370
- [@value].pack('G')
359
+ [@value].pack("G")
371
360
  end
372
361
 
373
362
  def to_s
374
363
  @value.to_s
375
364
  end
376
-
377
365
  end # FloatValue
378
366
 
379
367
  #######################################
@@ -381,7 +369,6 @@ module Aerospike
381
369
  # List value.
382
370
  # Supported by Aerospike 3 servers only.
383
371
  class ListValue < Value #:nodoc:
384
-
385
372
  def initialize(list)
386
373
  @list = list || []
387
374
  end
@@ -415,7 +402,7 @@ module Aerospike
415
402
  end
416
403
 
417
404
  def to_s
418
- @list.map{|v| v.to_s}.to_s
405
+ @list.map { |v| v.to_s }.to_s
419
406
  end
420
407
 
421
408
  private
@@ -430,15 +417,13 @@ module Aerospike
430
417
 
431
418
  @bytes
432
419
  end
433
-
434
420
  end
435
421
 
436
422
  # #######################################/
437
423
 
438
424
  # Map value.
439
- # Supported by Aerospike 3 servers only.
425
+ # Supported by Aerospike 3+ servers only.
440
426
  class MapValue < Value #:nodoc:
441
-
442
427
  def initialize(vmap)
443
428
  @vmap = vmap || {}
444
429
  end
@@ -475,7 +460,7 @@ module Aerospike
475
460
  end
476
461
 
477
462
  def to_s
478
- @vmap.map{|k, v| "#{k.to_s} => #{v.to_s}" }.to_s
463
+ @vmap.map { |k, v| "#{k.to_s} => #{v.to_s}" }.to_s
479
464
  end
480
465
 
481
466
  private
@@ -490,7 +475,6 @@ module Aerospike
490
475
 
491
476
  @bytes
492
477
  end
493
-
494
478
  end
495
479
 
496
480
  # #######################################/
@@ -498,7 +482,6 @@ module Aerospike
498
482
  # GeoJSON value.
499
483
  # Supported by Aerospike server version 3.7 and later.
500
484
  class GeoJSONValue < Value #:nodoc:
501
-
502
485
  def initialize(json)
503
486
  @json = json
504
487
  @bytes = json.to_json
@@ -535,7 +518,6 @@ module Aerospike
535
518
  def to_s
536
519
  @json
537
520
  end
538
-
539
521
  end
540
522
 
541
523
  # #######################################/
@@ -543,14 +525,19 @@ module Aerospike
543
525
  # HLLValue value. Encapsulates a HyperLogLog value.
544
526
  # Supported by Aerospike server version 4.9 and later.
545
527
  class HLLValue < Value #:nodoc:
528
+ attr_reader :bytes
546
529
 
547
530
  def initialize(value)
548
531
  @bytes = value
549
- @bytes.force_encoding('binary')
532
+ @bytes.force_encoding("binary")
550
533
 
551
534
  self
552
535
  end
553
536
 
537
+ def ==(other)
538
+ @bytes.to_s == other.to_s
539
+ end
540
+
554
541
  def type
555
542
  Aerospike::ParticleType::HLL
556
543
  end
@@ -578,7 +565,6 @@ module Aerospike
578
565
  def pack(packer)
579
566
  packer.write(Aerospike::ParticleType::BLOB.chr + @bytes)
580
567
  end
581
-
582
568
  end
583
569
 
584
570
  #######################################
@@ -594,63 +580,49 @@ module Aerospike
594
580
  protected
595
581
 
596
582
  def self.bytes_to_particle(type, buf, offset, length) # :nodoc:
597
-
598
583
  case type
599
584
  when Aerospike::ParticleType::STRING
600
585
  bytes = buf.read(offset, length)
601
586
  bytes.force_encoding(Aerospike.encoding)
602
-
603
587
  when Aerospike::ParticleType::INTEGER
604
588
  buf.read_int64(offset)
605
-
606
589
  when Aerospike::ParticleType::DOUBLE
607
590
  buf.read_double(offset)
608
-
609
591
  when Aerospike::ParticleType::BOOL
610
592
  buf.read_bool(offset, length)
611
-
612
593
  when Aerospike::ParticleType::BLOB
613
- buf.read(offset,length)
614
-
594
+ buf.read(offset, length)
615
595
  when Aerospike::ParticleType::LIST
616
596
  Unpacker.use do |unpacker|
617
597
  data = buf.read(offset, length)
618
598
  unpacker.unpack(data)
619
599
  end
620
-
621
600
  when Aerospike::ParticleType::MAP
622
601
  Unpacker.use do |unpacker|
623
602
  data = buf.read(offset, length)
624
603
  unpacker.unpack(data)
625
604
  end
626
-
627
605
  when Aerospike::ParticleType::GEOJSON
628
606
  # ignore the flags for now
629
607
  ncells = buf.read_int16(offset + 1)
630
608
  hdrsz = 1 + 2 + (ncells * 8)
631
609
  Aerospike::GeoJSON.new(buf.read(offset + hdrsz, length - hdrsz))
632
-
633
610
  when Aerospike::ParticleType::HLL
634
- bytes = buf.read(offset,length)
611
+ bytes = buf.read(offset, length)
635
612
  Aerospike::HLLValue.new(bytes)
636
-
637
613
  else
638
614
  nil
639
615
  end
640
616
  end
641
617
 
642
618
  def self.bytes_to_key_value(type, buf, offset, len) # :nodoc:
643
-
644
619
  case type
645
620
  when Aerospike::ParticleType::STRING
646
621
  StringValue.new(buf.read(offset, len))
647
-
648
622
  when Aerospike::ParticleType::INTEGER
649
623
  IntegerValue.new(buf.read_var_int64(offset, len))
650
-
651
624
  when Aerospike::ParticleType::BLOB
652
- BytesValue.new(buf.read(offset,len))
653
-
625
+ BytesValue.new(buf.read(offset, len))
654
626
  else
655
627
  nil
656
628
  end
@@ -663,7 +635,6 @@ module Aerospike
663
635
  # Boolean value.
664
636
  # Supported by Aerospike server 5.6+ only.
665
637
  class BoolValue < Value #:nodoc:
666
-
667
638
  def initialize(val)
668
639
  @value = val || false
669
640
  self
@@ -698,6 +669,5 @@ module Aerospike
698
669
  def to_s
699
670
  @value.to_s
700
671
  end
701
-
702
672
  end # BoolValue
703
673
  end # module
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Aerospike
3
- VERSION = "2.24.0"
3
+ VERSION = "2.26.0"
4
4
  end