aerospike_native 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|