bson 4.0.2 → 4.0.3
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -3
- data/ext/bson/native-endian.h +31 -0
- data/ext/bson/native.c +5 -12
- data/lib/bson/version.rb +1 -1
- data/spec/bson/object_id_spec.rb +9 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d8b033ffe340fc96c7b66aaf19781431ffad898
|
4
|
+
data.tar.gz: 823b569f7937714f262af069499e076a97b5fac2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8051d1c09e24966136c6c3f58331457cc036b515de444709008592b60a7b4ec1e35d35b97337e9118c8cf2aacd283138ffbd8626eaec868f73b339d90297fe02
|
7
|
+
data.tar.gz: fa54d2417b7ed10d5a266f5cc568fa096e546745e269329a4deb302c89feee49839349c298a983930424c354d26ae5db077cea6a275a779f2a761ca807aa114b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
��ɯ�s�c��،�"��c�% Mc��N)4ӨZ��|�O�`m��ϫ�܅�� M��*�#:�o�ޱ�ڢVW�(���c��"p����&7�g��v^n�rM� ��r���>��-��]b�$c�u\mp�=iW�*�=C�?.����5��K
|
1
|
+
��99��{
|
2
|
+
������}��0����z��4t%�/���� �QE��Zt`R�����L�wzl��bk<M��n����ª�6�pH�D�[A�Ϋ�iV2_K��̎3PXNn%�f��GB0�Ih�W ���U���I�H=�,�좲յG{m�c���%��5A��"9�dpe�fȭ���2n9ڷ�^EN�4�������7�����z9n�pW����c2��В'��O��ٔt��ߌ��?��4������*Fh
|
data/ext/bson/native-endian.h
CHANGED
@@ -44,10 +44,14 @@
|
|
44
44
|
#endif
|
45
45
|
|
46
46
|
#if defined(__sun)
|
47
|
+
# define BSON_UINT16_SWAP_LE_BE(v) __bson_uint16_swap_slow((uint16_t)v)
|
47
48
|
# define BSON_UINT32_SWAP_LE_BE(v) __bson_uint32_swap_slow((uint32_t)v)
|
48
49
|
# define BSON_UINT64_SWAP_LE_BE(v) __bson_uint64_swap_slow((uint64_t)v)
|
49
50
|
#elif defined(__clang__) && defined(__clang_major__) && defined(__clang_minor__) && \
|
50
51
|
(__clang_major__ >= 3) && (__clang_minor__ >= 1)
|
52
|
+
# if __has_builtin(__builtin_bswap16)
|
53
|
+
# define BSON_UINT16_SWAP_LE_BE(v) __builtin_bswap16(v)
|
54
|
+
# endif
|
51
55
|
# if __has_builtin(__builtin_bswap32)
|
52
56
|
# define BSON_UINT32_SWAP_LE_BE(v) __builtin_bswap32(v)
|
53
57
|
# endif
|
@@ -61,6 +65,10 @@
|
|
61
65
|
# endif
|
62
66
|
#endif
|
63
67
|
|
68
|
+
#ifndef BSON_UINT16_SWAP_LE_BE
|
69
|
+
# define BSON_UINT16_SWAP_LE_BE(v) __bson_uint16_swap_slow((uint16_t)v)
|
70
|
+
#endif
|
71
|
+
|
64
72
|
#ifndef BSON_UINT32_SWAP_LE_BE
|
65
73
|
# define BSON_UINT32_SWAP_LE_BE(v) __bson_uint32_swap_slow((uint32_t)v)
|
66
74
|
#endif
|
@@ -70,6 +78,7 @@
|
|
70
78
|
#endif
|
71
79
|
|
72
80
|
#if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN
|
81
|
+
# define BSON_UINT16_TO_BE(v) BSON_UINT16_SWAP_LE_BE(v)
|
73
82
|
# define BSON_UINT32_FROM_LE(v) ((uint32_t)v)
|
74
83
|
# define BSON_UINT32_TO_LE(v) ((uint32_t)v)
|
75
84
|
# define BSON_UINT32_FROM_BE(v) BSON_UINT32_SWAP_LE_BE(v)
|
@@ -81,6 +90,7 @@
|
|
81
90
|
# define BSON_DOUBLE_FROM_LE(v) ((double)v)
|
82
91
|
# define BSON_DOUBLE_TO_LE(v) ((double)v)
|
83
92
|
#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN
|
93
|
+
# define BSON_UINT16_TO_BE(v) ((uint16_t)v)
|
84
94
|
# define BSON_UINT32_FROM_LE(v) BSON_UINT32_SWAP_LE_BE(v)
|
85
95
|
# define BSON_UINT32_TO_LE(v) BSON_UINT32_SWAP_LE_BE(v)
|
86
96
|
# define BSON_UINT32_FROM_BE(v) ((uint32_t)v)
|
@@ -95,6 +105,27 @@
|
|
95
105
|
# error "The endianness of target architecture is unknown."
|
96
106
|
#endif
|
97
107
|
|
108
|
+
/*
|
109
|
+
*--------------------------------------------------------------------------
|
110
|
+
*
|
111
|
+
* __bson_uint16_swap_slow --
|
112
|
+
*
|
113
|
+
* Fallback endianness conversion for 16-bit integers.
|
114
|
+
*
|
115
|
+
* Returns:
|
116
|
+
* The endian swapped version.
|
117
|
+
*
|
118
|
+
* Side effects:
|
119
|
+
* None.
|
120
|
+
*
|
121
|
+
*--------------------------------------------------------------------------
|
122
|
+
*/
|
123
|
+
static uint16_t __bson_uint16_swap_slow(uint16_t v)
|
124
|
+
{
|
125
|
+
return ((v & 0x00FF) << 8) |
|
126
|
+
((v & 0xFF00) >> 8);
|
127
|
+
}
|
128
|
+
|
98
129
|
/*
|
99
130
|
*--------------------------------------------------------------------------
|
100
131
|
*
|
data/ext/bson/native.c
CHANGED
@@ -93,7 +93,7 @@ static char rb_bson_machine_id_hash[HOST_NAME_HASH_MAX];
|
|
93
93
|
/**
|
94
94
|
* The counter for incrementing object ids.
|
95
95
|
*/
|
96
|
-
static
|
96
|
+
static uint32_t rb_bson_object_id_counter;
|
97
97
|
|
98
98
|
/**
|
99
99
|
* Initialize the native extension.
|
@@ -536,28 +536,21 @@ VALUE rb_bson_object_id_generator_next(int argc, VALUE* args, VALUE self)
|
|
536
536
|
char bytes[12];
|
537
537
|
uint32_t t;
|
538
538
|
uint32_t c;
|
539
|
-
|
539
|
+
uint16_t pid = BSON_UINT16_TO_BE(getpid());
|
540
540
|
|
541
541
|
if (argc == 0 || (argc == 1 && *args == Qnil)) {
|
542
|
-
t =
|
542
|
+
t = BSON_UINT32_TO_BE((int) time(NULL));
|
543
543
|
}
|
544
544
|
else {
|
545
|
-
t =
|
545
|
+
t = BSON_UINT32_TO_BE(NUM2ULONG(rb_funcall(*args, rb_intern("to_i"), 0)));
|
546
546
|
}
|
547
547
|
|
548
|
-
c =
|
548
|
+
c = BSON_UINT32_TO_BE(rb_bson_object_id_counter << 8);
|
549
549
|
|
550
|
-
# if BSON_BYTE_ORDER == BSON_LITTLE_ENDIAN
|
551
550
|
memcpy(&bytes, &t, 4);
|
552
551
|
memcpy(&bytes[4], rb_bson_machine_id_hash, 3);
|
553
552
|
memcpy(&bytes[7], &pid, 2);
|
554
553
|
memcpy(&bytes[9], (unsigned char*) &c, 3);
|
555
|
-
#elif BSON_BYTE_ORDER == BSON_BIG_ENDIAN
|
556
|
-
memcpy(&bytes, ((unsigned char*) &t) + 4, 4);
|
557
|
-
memcpy(&bytes[4], rb_bson_machine_id_hash, 3);
|
558
|
-
memcpy(&bytes[7], &pid, 2);
|
559
|
-
memcpy(&bytes[9], ((unsigned char*) &c) + 4, 3);
|
560
|
-
#endif
|
561
554
|
rb_bson_object_id_counter++;
|
562
555
|
return rb_str_new(bytes, 12);
|
563
556
|
}
|
data/lib/bson/version.rb
CHANGED
data/spec/bson/object_id_spec.rb
CHANGED
@@ -383,6 +383,15 @@ describe BSON::ObjectId do
|
|
383
383
|
end
|
384
384
|
end
|
385
385
|
|
386
|
+
describe "#initialize" do
|
387
|
+
|
388
|
+
it "does not generate duplicate ids" do
|
389
|
+
100000.times do
|
390
|
+
expect(BSON::ObjectId.new).to_not eq(BSON::ObjectId.new)
|
391
|
+
end
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
386
395
|
describe "#inspect" do
|
387
396
|
|
388
397
|
let(:object_id) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Brock
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
XZOS48LlWh15EG4yZo/gRzqNAW2LUIkYA5eMS2Kp6r+KV8IBUO/LaHdrXbdilpa8
|
35
35
|
BRsuCo7UZDbFVRns04HLyjVvkj+K/ywIcdKdS0csz5M=
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2016-02-
|
37
|
+
date: 2016-02-28 00:00:00.000000000 Z
|
38
38
|
dependencies: []
|
39
39
|
description: A full featured BSON specification implementation, in Ruby
|
40
40
|
email:
|
metadata.gz.sig
CHANGED
Binary file
|