aerospike_native 0.0.4 → 0.0.5
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
- data/ext/aerospike_native/aerospike_native.c +2 -1
- data/ext/aerospike_native/client.c +229 -29
- data/ext/aerospike_native/key.c +9 -0
- data/ext/aerospike_native/key.h +1 -0
- data/ext/aerospike_native/operation.c +26 -0
- data/ext/aerospike_native/record.c +33 -0
- data/ext/aerospike_native/record.h +10 -0
- data/lib/aerospike_native/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55fd092a56f2b28d9fff6ab918d7aae3f19324e3
|
4
|
+
data.tar.gz: 687914c31d0f71e661d0453434136ef1b75f33ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e0b41edd06ad7599ed15866119471672f080358dab8346c94fe3bdabe5dad75eac914aa8026c0c406255582780565242f8aabb275eb3e6c27856ce0ac1e24f3
|
7
|
+
data.tar.gz: 15595c8b755ba4d88ef78342d4d277060c93f8c5ae78fc37b09087332f194f1e85f1649b54e4259f59da30ee278db79c5c3ce7188fbc5c22a1daa8d56cb13f68
|
@@ -1,8 +1,8 @@
|
|
1
|
-
//#include <iostream>
|
2
1
|
#include "aerospike_native.h"
|
3
2
|
#include "client.h"
|
4
3
|
#include "key.h"
|
5
4
|
#include "operation.h"
|
5
|
+
#include "record.h"
|
6
6
|
|
7
7
|
VALUE AerospikeNativeClass;
|
8
8
|
|
@@ -11,5 +11,6 @@ void Init_aerospike_native()
|
|
11
11
|
AerospikeNativeClass = rb_define_module("AerospikeNative");
|
12
12
|
define_client();
|
13
13
|
define_native_key();
|
14
|
+
define_record();
|
14
15
|
define_operation();
|
15
16
|
}
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#include "client.h"
|
2
2
|
#include "operation.h"
|
3
|
+
#include "key.h"
|
4
|
+
#include "record.h"
|
3
5
|
#include <aerospike/as_key.h>
|
4
6
|
#include <aerospike/as_operations.h>
|
5
7
|
#include <aerospike/aerospike_key.h>
|
@@ -25,6 +27,23 @@ static VALUE client_allocate(VALUE klass)
|
|
25
27
|
return obj;
|
26
28
|
}
|
27
29
|
|
30
|
+
static int keys_i(VALUE key, VALUE value, VALUE ary)
|
31
|
+
{
|
32
|
+
rb_ary_push(ary, key);
|
33
|
+
return ST_CONTINUE;
|
34
|
+
}
|
35
|
+
|
36
|
+
static VALUE
|
37
|
+
rb_hash_keys(VALUE hash)
|
38
|
+
{
|
39
|
+
VALUE ary;
|
40
|
+
|
41
|
+
ary = rb_ary_new_capa(RHASH_SIZE(hash));
|
42
|
+
rb_hash_foreach(hash, keys_i, ary);
|
43
|
+
|
44
|
+
return ary;
|
45
|
+
}
|
46
|
+
|
28
47
|
VALUE client_initialize(int argc, VALUE* argv, VALUE self)
|
29
48
|
{
|
30
49
|
VALUE ary = Qnil;
|
@@ -34,7 +53,7 @@ VALUE client_initialize(int argc, VALUE* argv, VALUE self)
|
|
34
53
|
long idx = 0, n = 0;
|
35
54
|
|
36
55
|
if (argc > 1) { // there should only be 0 or 1 arguments
|
37
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
|
56
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..1)", argc);
|
38
57
|
}
|
39
58
|
|
40
59
|
if (argc == 1) {
|
@@ -78,6 +97,176 @@ VALUE client_initialize(int argc, VALUE* argv, VALUE self)
|
|
78
97
|
return self;
|
79
98
|
}
|
80
99
|
|
100
|
+
VALUE client_put(int argc, VALUE* vArgs, VALUE vSelf)
|
101
|
+
{
|
102
|
+
VALUE vKey;
|
103
|
+
VALUE vBins;
|
104
|
+
VALUE vSettings;
|
105
|
+
VALUE vHashKeys;
|
106
|
+
|
107
|
+
aerospike *ptr;
|
108
|
+
as_key key;
|
109
|
+
as_error err;
|
110
|
+
as_record record;
|
111
|
+
as_policy_write policy;
|
112
|
+
|
113
|
+
VALUE vNamespace, vSet, vKeyValue;
|
114
|
+
|
115
|
+
int idx = 0, n = 0;
|
116
|
+
|
117
|
+
if (argc > 3 || argc < 2) { // there should only be 2 or 3 arguments
|
118
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2..3)", argc);
|
119
|
+
}
|
120
|
+
|
121
|
+
vKey = vArgs[0];
|
122
|
+
check_aerospike_key(vKey);
|
123
|
+
|
124
|
+
vBins = vArgs[1];
|
125
|
+
Check_Type(vBins, T_HASH);
|
126
|
+
|
127
|
+
as_policy_write_init(&policy);
|
128
|
+
|
129
|
+
if (argc == 3) {
|
130
|
+
vSettings = vArgs[2];
|
131
|
+
|
132
|
+
switch (TYPE(vSettings)) {
|
133
|
+
case T_NIL:
|
134
|
+
break;
|
135
|
+
case T_HASH: {
|
136
|
+
VALUE vTimeout = rb_hash_aref(vSettings, rb_str_new2("timeout"));
|
137
|
+
if (TYPE(vTimeout) == T_FIXNUM) {
|
138
|
+
policy.timeout = NUM2UINT( vTimeout );
|
139
|
+
}
|
140
|
+
break;
|
141
|
+
}
|
142
|
+
default:
|
143
|
+
/* raise exception */
|
144
|
+
Check_Type(vSettings, T_HASH);
|
145
|
+
break;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
idx = RHASH_SIZE(vBins);
|
150
|
+
if (idx == 0) {
|
151
|
+
return Qfalse;
|
152
|
+
}
|
153
|
+
|
154
|
+
Data_Get_Struct(vSelf, aerospike, ptr);
|
155
|
+
as_record_inita(&record, idx);
|
156
|
+
vHashKeys = rb_hash_keys(vBins);
|
157
|
+
|
158
|
+
for(n = 0; n < idx; n++) {
|
159
|
+
VALUE bin_name = rb_ary_entry(vHashKeys, n);
|
160
|
+
VALUE bin_value = rb_hash_aref(vBins, bin_name);
|
161
|
+
|
162
|
+
Check_Type(bin_name, T_STRING);
|
163
|
+
|
164
|
+
switch( TYPE(bin_value) ) {
|
165
|
+
case T_STRING:
|
166
|
+
as_record_set_str(&record, StringValueCStr(bin_name), StringValueCStr(bin_value));
|
167
|
+
break;
|
168
|
+
case T_FIXNUM:
|
169
|
+
as_record_set_int64(&record, StringValueCStr(bin_name), NUM2LONG(bin_value));
|
170
|
+
break;
|
171
|
+
default:
|
172
|
+
rb_raise(rb_eArgError, "Incorrect input type");
|
173
|
+
break;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
|
177
|
+
vNamespace = rb_iv_get(vKey, "@namespace");
|
178
|
+
vSet = rb_iv_get(vKey, "@set");
|
179
|
+
vKeyValue = rb_iv_get(vKey, "@value");
|
180
|
+
as_key_init_str(&key, StringValueCStr( vNamespace ), StringValueCStr( vSet ), StringValueCStr( vKeyValue ));
|
181
|
+
|
182
|
+
if (aerospike_key_put(ptr, &err, &policy, &key, &record) != AEROSPIKE_OK) {
|
183
|
+
printf("error\n");
|
184
|
+
fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);
|
185
|
+
}
|
186
|
+
|
187
|
+
return Qtrue;
|
188
|
+
}
|
189
|
+
|
190
|
+
VALUE client_get(int argc, VALUE* vArgs, VALUE vSelf)
|
191
|
+
{
|
192
|
+
VALUE vKey;
|
193
|
+
VALUE vSettings;
|
194
|
+
VALUE vParams[4];
|
195
|
+
|
196
|
+
aerospike *ptr;
|
197
|
+
as_key key;
|
198
|
+
as_error err;
|
199
|
+
as_record* record = NULL;
|
200
|
+
as_policy_read policy;
|
201
|
+
as_bin bin;
|
202
|
+
|
203
|
+
VALUE vNamespace, vSet, vKeyValue;
|
204
|
+
int n = 0;
|
205
|
+
|
206
|
+
if (argc > 2 || argc < 1) { // there should only be 1 or 2 arguments
|
207
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1..2)", argc);
|
208
|
+
}
|
209
|
+
|
210
|
+
vKey = vArgs[0];
|
211
|
+
check_aerospike_key(vKey);
|
212
|
+
|
213
|
+
as_policy_read_init(&policy);
|
214
|
+
|
215
|
+
if (argc == 2) {
|
216
|
+
vSettings = vArgs[1];
|
217
|
+
|
218
|
+
switch (TYPE(vSettings)) {
|
219
|
+
case T_NIL:
|
220
|
+
break;
|
221
|
+
case T_HASH: {
|
222
|
+
VALUE vTimeout = rb_hash_aref(vSettings, rb_str_new2("timeout"));
|
223
|
+
if (TYPE(vTimeout) == T_FIXNUM) {
|
224
|
+
policy.timeout = NUM2UINT( vTimeout );
|
225
|
+
}
|
226
|
+
break;
|
227
|
+
}
|
228
|
+
default:
|
229
|
+
/* raise exception */
|
230
|
+
Check_Type(vSettings, T_HASH);
|
231
|
+
break;
|
232
|
+
}
|
233
|
+
}
|
234
|
+
|
235
|
+
Data_Get_Struct(vSelf, aerospike, ptr);
|
236
|
+
vNamespace = rb_iv_get(vKey, "@namespace");
|
237
|
+
vSet = rb_iv_get(vKey, "@set");
|
238
|
+
vKeyValue = rb_iv_get(vKey, "@value");
|
239
|
+
as_key_init_str(&key, StringValueCStr( vNamespace ), StringValueCStr( vSet ), StringValueCStr( vKeyValue ));
|
240
|
+
|
241
|
+
if (aerospike_key_get(ptr, &err, &policy, &key, &record) != AEROSPIKE_OK) {
|
242
|
+
printf("error\n");
|
243
|
+
fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);
|
244
|
+
}
|
245
|
+
rb_iv_set(vKey, "@digest", rb_str_new( record->key.digest.value, AS_DIGEST_VALUE_SIZE));
|
246
|
+
|
247
|
+
vParams[0] = vKey;
|
248
|
+
vParams[1] = rb_hash_new();
|
249
|
+
vParams[2] = UINT2NUM(record->gen);
|
250
|
+
vParams[3] = UINT2NUM(record->ttl);
|
251
|
+
|
252
|
+
for(n = 0; n < record->bins.size; n++) {
|
253
|
+
bin = record->bins.entries[n];
|
254
|
+
switch( as_val_type(bin.valuep) ) {
|
255
|
+
case AS_INTEGER:
|
256
|
+
rb_hash_aset(vParams[1], rb_str_new2(bin.name), LONG2NUM(bin.valuep->integer.value));
|
257
|
+
break;
|
258
|
+
case AS_STRING:
|
259
|
+
rb_hash_aset(vParams[1], rb_str_new2(bin.name), rb_str_new2(bin.valuep->string.value));
|
260
|
+
break;
|
261
|
+
case AS_UNDEF:
|
262
|
+
default:
|
263
|
+
break;
|
264
|
+
}
|
265
|
+
}
|
266
|
+
|
267
|
+
return rb_class_new_instance(4, vParams, RecordClass);
|
268
|
+
}
|
269
|
+
|
81
270
|
VALUE client_operate(int argc, VALUE* argv, VALUE vSelf)
|
82
271
|
{
|
83
272
|
VALUE vKey;
|
@@ -89,27 +278,34 @@ VALUE client_operate(int argc, VALUE* argv, VALUE vSelf)
|
|
89
278
|
as_operations ops;
|
90
279
|
as_key key;
|
91
280
|
as_error err;
|
281
|
+
as_policy_operate policy;
|
92
282
|
|
93
283
|
VALUE vNamespace, vSet, vKeyValue;
|
94
284
|
|
95
285
|
if (argc > 3 || argc < 2) { // there should only be 2 or 3 arguments
|
96
|
-
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
|
286
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2..3)", argc);
|
97
287
|
}
|
98
288
|
|
99
289
|
vKey = argv[0];
|
100
|
-
|
101
|
-
printf("class name: %s\n", rb_obj_classname(vKey));
|
290
|
+
check_aerospike_key(vKey);
|
102
291
|
|
103
292
|
vOperations = argv[1];
|
104
293
|
Check_Type(vOperations, T_ARRAY);
|
294
|
+
as_policy_operate_init(&policy);
|
105
295
|
|
106
296
|
if (argc == 3) {
|
107
297
|
vSettings = argv[2];
|
108
298
|
|
109
299
|
switch (TYPE(vSettings)) {
|
110
300
|
case T_NIL:
|
111
|
-
case T_HASH:
|
112
301
|
break;
|
302
|
+
case T_HASH: {
|
303
|
+
VALUE vTimeout = rb_hash_aref(vSettings, rb_str_new2("timeout"));
|
304
|
+
if (TYPE(vTimeout) == T_FIXNUM) {
|
305
|
+
policy.timeout = NUM2UINT( vTimeout );
|
306
|
+
}
|
307
|
+
break;
|
308
|
+
}
|
113
309
|
default:
|
114
310
|
/* raise exception */
|
115
311
|
Check_Type(vSettings, T_HASH);
|
@@ -125,9 +321,7 @@ VALUE client_operate(int argc, VALUE* argv, VALUE vSelf)
|
|
125
321
|
Data_Get_Struct(vSelf, aerospike, ptr);
|
126
322
|
as_operations_inita(&ops, idx);
|
127
323
|
|
128
|
-
|
129
|
-
|
130
|
-
for(n = 0; n < idx; n++) {
|
324
|
+
for(n = 0; n < idx; n++) {
|
131
325
|
VALUE operation = rb_ary_entry(vOperations, n);
|
132
326
|
int op_type = NUM2INT( rb_iv_get(operation, "@op_type") );
|
133
327
|
VALUE bin_name = rb_iv_get(operation, "@bin_name");
|
@@ -135,39 +329,47 @@ VALUE client_operate(int argc, VALUE* argv, VALUE vSelf)
|
|
135
329
|
|
136
330
|
switch( op_type ) {
|
137
331
|
case WRITE:
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
// break;
|
147
|
-
// }
|
332
|
+
switch( TYPE(bin_value) ) {
|
333
|
+
case T_STRING:
|
334
|
+
as_operations_add_write_str(&ops, StringValueCStr( bin_name ), StringValueCStr( bin_value ));
|
335
|
+
break;
|
336
|
+
case T_FIXNUM:
|
337
|
+
as_operations_add_write_int64(&ops, StringValueCStr( bin_name ), NUM2LONG( bin_value ));
|
338
|
+
break;
|
339
|
+
}
|
148
340
|
|
341
|
+
break;
|
342
|
+
case READ:
|
149
343
|
break;
|
150
344
|
case INCREMENT:
|
151
|
-
printf("increment\n");
|
152
345
|
as_operations_add_incr(&ops, StringValueCStr( bin_name ), NUM2INT( bin_value ));
|
153
346
|
break;
|
347
|
+
case APPEND:
|
348
|
+
Check_Type(bin_value, T_STRING);
|
349
|
+
as_operations_add_append_str(&ops, StringValueCStr( bin_name ), StringValueCStr( bin_value ));
|
350
|
+
break;
|
351
|
+
case PREPEND:
|
352
|
+
Check_Type(bin_value, T_STRING);
|
353
|
+
as_operations_add_prepend_str(&ops, StringValueCStr( bin_name ), StringValueCStr( bin_value ));
|
354
|
+
break;
|
355
|
+
case TOUCH:
|
356
|
+
as_operations_add_touch(&ops);
|
357
|
+
break;
|
358
|
+
default:
|
359
|
+
rb_raise(rb_eArgError, "Incorrect operation type");
|
360
|
+
break;
|
154
361
|
}
|
155
362
|
}
|
156
363
|
|
157
|
-
printf("test\n");
|
158
|
-
printf("prepare key\n");
|
159
|
-
|
160
364
|
vNamespace = rb_iv_get(vKey, "@namespace");
|
161
365
|
vSet = rb_iv_get(vKey, "@set");
|
162
366
|
vKeyValue = rb_iv_get(vKey, "@value");
|
163
367
|
as_key_init_str(&key, StringValueCStr( vNamespace ), StringValueCStr( vSet ), StringValueCStr( vKeyValue ));
|
164
368
|
|
165
|
-
|
166
|
-
if (aerospike_key_operate(ptr, &err, NULL, &key, &ops, NULL) != AEROSPIKE_OK) {
|
369
|
+
if (aerospike_key_operate(ptr, &err, &policy, &key, &ops, NULL) != AEROSPIKE_OK) {
|
167
370
|
printf("error\n");
|
168
371
|
fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);
|
169
372
|
}
|
170
|
-
printf("finish\n");
|
171
373
|
|
172
374
|
as_operations_destroy(&ops);
|
173
375
|
|
@@ -176,12 +378,8 @@ VALUE client_operate(int argc, VALUE* argv, VALUE vSelf)
|
|
176
378
|
|
177
379
|
// GET
|
178
380
|
// PUT
|
179
|
-
// OPERATE
|
180
381
|
|
181
382
|
// Record
|
182
|
-
// Key
|
183
|
-
// Bin
|
184
|
-
// Policy
|
185
383
|
|
186
384
|
void define_client()
|
187
385
|
{
|
@@ -189,4 +387,6 @@ void define_client()
|
|
189
387
|
rb_define_alloc_func(ClientClass, client_allocate);
|
190
388
|
rb_define_method(ClientClass, "initialize", client_initialize, -1);
|
191
389
|
rb_define_method(ClientClass, "operate", client_operate, -1);
|
390
|
+
rb_define_method(ClientClass, "put", client_put, -1);
|
391
|
+
rb_define_method(ClientClass, "get", client_get, -1);
|
192
392
|
}
|
data/ext/aerospike_native/key.c
CHANGED
@@ -15,6 +15,15 @@ VALUE key_initialize(VALUE vSelf, VALUE vNamespace, VALUE vSet, VALUE vValue)
|
|
15
15
|
return vSelf;
|
16
16
|
}
|
17
17
|
|
18
|
+
void check_aerospike_key(VALUE vKey)
|
19
|
+
{
|
20
|
+
char sKeyName[] = "AerospikeNative::Key";
|
21
|
+
|
22
|
+
if (strcmp(sKeyName, rb_obj_classname(vKey)) != 0) {
|
23
|
+
rb_raise(rb_eArgError, "Incorrect type (expected %s)", sKeyName);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
18
27
|
void define_native_key()
|
19
28
|
{
|
20
29
|
KeyClass = rb_define_class_under(AerospikeNativeClass, "Key", rb_cObject);
|
data/ext/aerospike_native/key.h
CHANGED
@@ -23,6 +23,30 @@ VALUE operation_write(VALUE vSelf, VALUE vBinName, VALUE vBinValue)
|
|
23
23
|
return rb_class_new_instance(3, vArgs, vSelf);
|
24
24
|
}
|
25
25
|
|
26
|
+
VALUE operation_append(VALUE vSelf, VALUE vBinName, VALUE vBinValue)
|
27
|
+
{
|
28
|
+
VALUE vArgs[3];
|
29
|
+
|
30
|
+
Check_Type(vBinValue, T_STRING);
|
31
|
+
|
32
|
+
vArgs[0] = INT2NUM(APPEND);
|
33
|
+
vArgs[1] = vBinName;
|
34
|
+
vArgs[2] = vBinValue;
|
35
|
+
return rb_class_new_instance(3, vArgs, vSelf);
|
36
|
+
}
|
37
|
+
|
38
|
+
VALUE operation_prepend(VALUE vSelf, VALUE vBinName, VALUE vBinValue)
|
39
|
+
{
|
40
|
+
VALUE vArgs[3];
|
41
|
+
|
42
|
+
Check_Type(vBinValue, T_STRING);
|
43
|
+
|
44
|
+
vArgs[0] = INT2NUM(PREPEND);
|
45
|
+
vArgs[1] = vBinName;
|
46
|
+
vArgs[2] = vBinValue;
|
47
|
+
return rb_class_new_instance(3, vArgs, vSelf);
|
48
|
+
}
|
49
|
+
|
26
50
|
VALUE operation_increment(VALUE vSelf, VALUE vBinName, VALUE vBinValue)
|
27
51
|
{
|
28
52
|
VALUE vArgs[3];
|
@@ -40,6 +64,8 @@ void define_operation()
|
|
40
64
|
OperationClass = rb_define_class_under(AerospikeNativeClass, "Operation", rb_cObject);
|
41
65
|
rb_define_method(OperationClass, "initialize", operation_initialize, 3);
|
42
66
|
rb_define_singleton_method(OperationClass, "write", operation_write, 2);
|
67
|
+
rb_define_singleton_method(OperationClass, "append", operation_append, 2);
|
68
|
+
rb_define_singleton_method(OperationClass, "prepend", operation_prepend, 2);
|
43
69
|
rb_define_singleton_method(OperationClass, "increment", operation_increment, 2);
|
44
70
|
rb_define_attr(OperationClass, "op_type", 1, 0);
|
45
71
|
rb_define_attr(OperationClass, "bin_name", 1, 0);
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#include "record.h"
|
2
|
+
#include "key.h"
|
3
|
+
|
4
|
+
VALUE RecordClass;
|
5
|
+
|
6
|
+
VALUE record_initialize(VALUE vSelf, VALUE vKey, VALUE vBins, VALUE vGen, VALUE vTtl)
|
7
|
+
{
|
8
|
+
check_aerospike_key(vKey);
|
9
|
+
Check_Type(vBins, T_HASH);
|
10
|
+
Check_Type(vGen, T_FIXNUM);
|
11
|
+
Check_Type(vTtl, T_FIXNUM);
|
12
|
+
|
13
|
+
rb_iv_set(vSelf, "@key", vKey);
|
14
|
+
rb_iv_set(vSelf, "@bins", vBins);
|
15
|
+
rb_iv_set(vSelf, "@gen", vGen);
|
16
|
+
rb_iv_set(vSelf, "@ttl", vTtl);
|
17
|
+
|
18
|
+
return vSelf;
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
void define_record()
|
23
|
+
{
|
24
|
+
RecordClass = rb_define_class_under(AerospikeNativeClass, "Record", rb_cObject);
|
25
|
+
rb_define_method(RecordClass, "initialize", record_initialize, 4);
|
26
|
+
rb_define_attr(RecordClass, "key", 1, 0);
|
27
|
+
rb_define_attr(RecordClass, "bins", 1, 0);
|
28
|
+
rb_define_attr(RecordClass, "gen", 1, 0);
|
29
|
+
rb_define_attr(RecordClass, "ttl", 1, 0);
|
30
|
+
}
|
31
|
+
|
32
|
+
|
33
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aerospike_native
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Ziablitskii
|
@@ -93,6 +93,8 @@ files:
|
|
93
93
|
- ext/aerospike_native/lib/.keep
|
94
94
|
- ext/aerospike_native/operation.c
|
95
95
|
- ext/aerospike_native/operation.h
|
96
|
+
- ext/aerospike_native/record.c
|
97
|
+
- ext/aerospike_native/record.h
|
96
98
|
- lib/aerospike_native.rb
|
97
99
|
- lib/aerospike_native/version.rb
|
98
100
|
homepage: https://github.com/rainlabs/aerospike_native
|