aerospike 2.24.0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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