aerospike_native 0.1.1 → 0.1.2
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/README.md +13 -1
- data/aerospike_native.gemspec +5 -3
- data/ext/aerospike_native/aerospike_native.c +1 -0
- data/ext/aerospike_native/client.c +20 -1
- data/ext/aerospike_native/common.h +1 -0
- data/ext/aerospike_native/key.c +1 -1
- data/ext/aerospike_native/logger.c +158 -0
- data/ext/aerospike_native/logger.h +10 -0
- data/lib/aerospike_native/version.rb +1 -1
- metadata +14 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9adbd76e01717770aa172758d38a3e9340abbec
|
4
|
+
data.tar.gz: 5f95658e8a79c57d2021a5ae041c69300989372e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f27395cdf1605ca3fb553f77220951adecd99b124ce28570948f3e46e063f17c50b6b8ccd7fb7e858a8abec94a6042c0e3f2325946833f621293fe574b3f2e4e
|
7
|
+
data.tar.gz: 5220d3cc0b14b6c4f033e5831f092e9e485bddce1be9bd277fb9159ed47a322fd131e67c0abeecfb282b545ebb447f0b25d9e912f0a5e5d94134d634b4c66006
|
data/README.md
CHANGED
@@ -35,6 +35,8 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
## Usage
|
37
37
|
|
38
|
+
### Basic
|
39
|
+
|
38
40
|
```ruby
|
39
41
|
require 'aerospike_native'
|
40
42
|
|
@@ -55,7 +57,17 @@ client.create_index('test', 'test', 'number', 'number_idx');
|
|
55
57
|
|
56
58
|
records = []
|
57
59
|
client.where('test', 'test', [AerospikeNative::Condition.range("number", 1, 7)]) { |record| records << record }
|
58
|
-
records
|
60
|
+
puts records.inspect
|
61
|
+
records.each { |record| client.remove(record.key) }
|
62
|
+
```
|
63
|
+
|
64
|
+
### Logger
|
65
|
+
|
66
|
+
You can specify logger and log level
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
AerospikeNative::Client.set_logger Rails.logger # stdout by default
|
70
|
+
AerospikeNative::Client.set_log_level :debug # :debug by default
|
59
71
|
```
|
60
72
|
|
61
73
|
## Contributing
|
data/aerospike_native.gemspec
CHANGED
@@ -6,12 +6,14 @@ require 'aerospike_native/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "aerospike_native"
|
8
8
|
spec.version = AerospikeNative::VERSION
|
9
|
+
spec.platform = Gem::Platform::RUBY
|
9
10
|
spec.authors = ["Vladimir Ziablitskii"]
|
10
11
|
spec.email = ["zyablitskiy@gmail.com"]
|
11
12
|
spec.summary = %q{Aerospike native client}
|
12
|
-
spec.description = %q{Aerospike ruby
|
13
|
+
spec.description = %q{Unofficial Aerospike Client for ruby with c extension (official aerospike c client)}
|
13
14
|
spec.homepage = "https://github.com/rainlabs/aerospike_native"
|
14
15
|
spec.license = "MIT"
|
16
|
+
# spec.required_ruby_version = '>= 1.9.3'
|
15
17
|
|
16
18
|
spec.files = `git ls-files -z`.split("\x0")
|
17
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
@@ -21,6 +23,6 @@ Gem::Specification.new do |spec|
|
|
21
23
|
|
22
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
23
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
-
spec.add_development_dependency "rake-compiler"
|
25
|
-
spec.add_development_dependency "rspec"
|
26
|
+
spec.add_development_dependency "rake-compiler", "~> 0.9"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.3"
|
26
28
|
end
|
@@ -72,7 +72,6 @@ VALUE client_initialize(int argc, VALUE* argv, VALUE self)
|
|
72
72
|
VALUE hash = rb_ary_entry(ary, n);
|
73
73
|
VALUE host = rb_hash_aref(hash, rb_str_new2("host"));
|
74
74
|
VALUE port = rb_hash_aref(hash, rb_str_new2("port"));
|
75
|
-
printf("host: %s:%d\n", StringValueCStr(host), NUM2UINT(port));
|
76
75
|
as_config_add_host(&config, StringValueCStr(host), NUM2UINT(port));
|
77
76
|
}
|
78
77
|
}
|
@@ -701,6 +700,22 @@ VALUE client_exec_query(int argc, VALUE* vArgs, VALUE vSelf)
|
|
701
700
|
return vArray;
|
702
701
|
}
|
703
702
|
|
703
|
+
VALUE client_set_logger(VALUE vSelf, VALUE vNewLogger)
|
704
|
+
{
|
705
|
+
VALUE vLogger = rb_cv_get(vSelf, "@@logger");
|
706
|
+
rb_iv_set(vLogger, "@internal", vNewLogger);
|
707
|
+
|
708
|
+
return vLogger;
|
709
|
+
}
|
710
|
+
|
711
|
+
VALUE client_set_log_level(VALUE vSelf, VALUE vLevel)
|
712
|
+
{
|
713
|
+
VALUE vLogger = rb_cv_get(vSelf, "@@logger");
|
714
|
+
Check_Type(vLevel, T_SYMBOL);
|
715
|
+
|
716
|
+
return rb_funcall(vLogger, rb_intern("set_level"), 1, vLevel);
|
717
|
+
}
|
718
|
+
|
704
719
|
void define_client()
|
705
720
|
{
|
706
721
|
ClientClass = rb_define_class_under(AerospikeNativeClass, "Client", rb_cObject);
|
@@ -715,4 +730,8 @@ void define_client()
|
|
715
730
|
rb_define_method(ClientClass, "create_index", client_create_index, -1);
|
716
731
|
rb_define_method(ClientClass, "drop_index", client_drop_index, -1);
|
717
732
|
rb_define_method(ClientClass, "where", client_exec_query, -1);
|
733
|
+
|
734
|
+
rb_cv_set(ClientClass, "@@logger", rb_class_new_instance(0, NULL, LoggerClass));
|
735
|
+
rb_define_singleton_method(ClientClass, "set_logger", client_set_logger, 1);
|
736
|
+
rb_define_singleton_method(ClientClass, "set_log_level", client_set_log_level, 1);
|
718
737
|
}
|
data/ext/aerospike_native/key.c
CHANGED
@@ -50,7 +50,7 @@ VALUE key_initialize(int argc, VALUE* vArgs, VALUE vSelf)
|
|
50
50
|
|
51
51
|
Data_Get_Struct(vSelf, as_key, ptr);
|
52
52
|
|
53
|
-
if(TYPE(vValue) == T_STRING) {
|
53
|
+
if(TYPE(vValue) == T_STRING || TYPE(vValue) == T_FIXNUM) {
|
54
54
|
switch(TYPE(vValue)) {
|
55
55
|
case T_FIXNUM:
|
56
56
|
as_key_init_int64(ptr, StringValueCStr( vNamespace ), StringValueCStr( vSet ), FIX2LONG( vValue ));
|
@@ -0,0 +1,158 @@
|
|
1
|
+
#include "logger.h"
|
2
|
+
#include "client.h"
|
3
|
+
|
4
|
+
VALUE LoggerClass;
|
5
|
+
|
6
|
+
bool aerospike_log_callback(as_log_level level, const char *func, const char *file,
|
7
|
+
uint32_t line, const char *fmt, ...)
|
8
|
+
{
|
9
|
+
char msg[1024] = {0};
|
10
|
+
char log_msg[1500] = {0};
|
11
|
+
va_list ap;
|
12
|
+
VALUE vLogger = rb_cv_get(ClientClass, "@@logger");
|
13
|
+
|
14
|
+
va_start(ap, fmt);
|
15
|
+
vsnprintf(msg, 1024, fmt, ap);
|
16
|
+
msg[1023] = '\0';
|
17
|
+
va_end(ap);
|
18
|
+
|
19
|
+
sprintf(log_msg, "%d (Aerospike) - %s", level, msg);
|
20
|
+
|
21
|
+
if(TYPE(vLogger) != T_NIL) {
|
22
|
+
rb_funcall(vLogger, rb_intern("write"), 2, INT2FIX(level), rb_str_new2(log_msg));
|
23
|
+
}
|
24
|
+
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
|
28
|
+
VALUE logger_initialize(VALUE vSelf)
|
29
|
+
{
|
30
|
+
int default_level = AS_LOG_LEVEL_DEBUG;
|
31
|
+
as_log_set_level(default_level);
|
32
|
+
as_log_set_callback(aerospike_log_callback);
|
33
|
+
rb_iv_set(vSelf, "@level", INT2FIX(default_level));
|
34
|
+
return vSelf;
|
35
|
+
}
|
36
|
+
|
37
|
+
VALUE logger_set_level(VALUE vSelf, VALUE vLevel)
|
38
|
+
{
|
39
|
+
VALUE vInternalLogger = rb_iv_get(vSelf, "@internal");
|
40
|
+
int log_level = AS_LOG_LEVEL_INFO;
|
41
|
+
VALUE vError = ID2SYM( rb_intern("error") );
|
42
|
+
VALUE vWarn = ID2SYM( rb_intern("warn") );
|
43
|
+
VALUE vInfo = ID2SYM( rb_intern("info") );
|
44
|
+
VALUE vDebug = ID2SYM( rb_intern("debug") );
|
45
|
+
VALUE vTrace = ID2SYM( rb_intern("trace") );
|
46
|
+
|
47
|
+
Check_Type(vLevel, T_SYMBOL);
|
48
|
+
if (vLevel == vError) {
|
49
|
+
log_level = AS_LOG_LEVEL_ERROR;
|
50
|
+
} else if (vLevel == vWarn) {
|
51
|
+
log_level = AS_LOG_LEVEL_WARN;
|
52
|
+
} else if (vLevel == vInfo) {
|
53
|
+
log_level = AS_LOG_LEVEL_INFO;
|
54
|
+
} else if (vLevel == vDebug) {
|
55
|
+
log_level = AS_LOG_LEVEL_DEBUG;
|
56
|
+
} else if (vLevel == vTrace) {
|
57
|
+
log_level = AS_LOG_LEVEL_TRACE;
|
58
|
+
} else {
|
59
|
+
return Qfalse;
|
60
|
+
}
|
61
|
+
|
62
|
+
as_log_set_level(log_level);
|
63
|
+
rb_iv_set(vSelf, "@level", INT2FIX(log_level));
|
64
|
+
|
65
|
+
if (TYPE(vInternalLogger) != T_NIL) {
|
66
|
+
int internal_level = 3 - (log_level == AS_LOG_LEVEL_TRACE ? AS_LOG_LEVEL_DEBUG : log_level);
|
67
|
+
rb_iv_set(vInternalLogger, "@level", INT2FIX(internal_level));
|
68
|
+
}
|
69
|
+
|
70
|
+
return Qtrue;
|
71
|
+
}
|
72
|
+
|
73
|
+
VALUE logger_write(VALUE vSelf, VALUE vLevel, VALUE vMsg)
|
74
|
+
{
|
75
|
+
int level;
|
76
|
+
VALUE vInternalLevel, vInternalLogger;
|
77
|
+
ID vMethod;
|
78
|
+
Check_Type(vLevel, T_FIXNUM);
|
79
|
+
Check_Type(vMsg, T_STRING);
|
80
|
+
|
81
|
+
vInternalLevel = rb_iv_get(vSelf, "@level");
|
82
|
+
vInternalLogger = rb_iv_get(vSelf, "@internal");
|
83
|
+
Check_Type(vInternalLevel, T_FIXNUM);
|
84
|
+
level = FIX2INT(vLevel);
|
85
|
+
|
86
|
+
switch(TYPE(vInternalLogger)) {
|
87
|
+
case T_NIL:
|
88
|
+
if (level <= FIX2INT(vInternalLevel)) {
|
89
|
+
// TODO: add default behavior with write into file
|
90
|
+
fprintf(stdout, "%s\n", StringValueCStr(vMsg));
|
91
|
+
return vMsg;
|
92
|
+
}
|
93
|
+
break;
|
94
|
+
case T_OBJECT:
|
95
|
+
switch(level) {
|
96
|
+
case AS_LOG_LEVEL_ERROR:
|
97
|
+
vMethod = rb_intern("error");
|
98
|
+
break;
|
99
|
+
case AS_LOG_LEVEL_WARN:
|
100
|
+
vMethod = rb_intern("warn");
|
101
|
+
break;
|
102
|
+
case AS_LOG_LEVEL_INFO:
|
103
|
+
vMethod = rb_intern("info");
|
104
|
+
break;
|
105
|
+
case AS_LOG_LEVEL_DEBUG:
|
106
|
+
case AS_LOG_LEVEL_TRACE:
|
107
|
+
vMethod = rb_intern("debug");
|
108
|
+
break;
|
109
|
+
default:
|
110
|
+
vMethod = rb_intern("unknown");
|
111
|
+
break;
|
112
|
+
}
|
113
|
+
|
114
|
+
return rb_funcall(vInternalLogger, vMethod, 1, vMsg);
|
115
|
+
}
|
116
|
+
|
117
|
+
return Qnil;
|
118
|
+
}
|
119
|
+
|
120
|
+
VALUE logger_error(VALUE vSelf, VALUE vMsg)
|
121
|
+
{
|
122
|
+
return rb_funcall(vSelf, rb_intern("write"), 2, INT2FIX(AS_LOG_LEVEL_ERROR), vMsg);
|
123
|
+
}
|
124
|
+
|
125
|
+
VALUE logger_warn(VALUE vSelf, VALUE vMsg)
|
126
|
+
{
|
127
|
+
return rb_funcall(vSelf, rb_intern("write"), 2, INT2FIX(AS_LOG_LEVEL_WARN), vMsg);
|
128
|
+
}
|
129
|
+
|
130
|
+
VALUE logger_info(VALUE vSelf, VALUE vMsg)
|
131
|
+
{
|
132
|
+
return rb_funcall(vSelf, rb_intern("write"), 2, INT2FIX(AS_LOG_LEVEL_INFO), vMsg);
|
133
|
+
}
|
134
|
+
|
135
|
+
VALUE logger_debug(VALUE vSelf, VALUE vMsg)
|
136
|
+
{
|
137
|
+
return rb_funcall(vSelf, rb_intern("write"), 2, INT2FIX(AS_LOG_LEVEL_DEBUG), vMsg);
|
138
|
+
}
|
139
|
+
|
140
|
+
VALUE logger_trace(VALUE vSelf, VALUE vMsg)
|
141
|
+
{
|
142
|
+
return rb_funcall(vSelf, rb_intern("write"), 2, INT2FIX(AS_LOG_LEVEL_TRACE), vMsg);
|
143
|
+
}
|
144
|
+
|
145
|
+
void define_logger()
|
146
|
+
{
|
147
|
+
LoggerClass = rb_define_class_under(AerospikeNativeClass, "Logger", rb_cObject);
|
148
|
+
rb_define_method(LoggerClass, "initialize", logger_initialize, 0);
|
149
|
+
rb_define_method(LoggerClass, "set_level", logger_set_level, 1);
|
150
|
+
rb_define_method(LoggerClass, "write", logger_write, 2);
|
151
|
+
rb_define_method(LoggerClass, "error", logger_error, 1);
|
152
|
+
rb_define_method(LoggerClass, "warn", logger_warn, 1);
|
153
|
+
rb_define_method(LoggerClass, "info", logger_info, 1);
|
154
|
+
rb_define_method(LoggerClass, "debug", logger_debug, 1);
|
155
|
+
rb_define_method(LoggerClass, "trace", logger_trace, 1);
|
156
|
+
rb_define_attr(LoggerClass, "level", 1, 0);
|
157
|
+
rb_define_attr(LoggerClass, "internal", 1, 1);
|
158
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aerospike_native
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Ziablitskii
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,31 +42,32 @@ dependencies:
|
|
42
42
|
name: rake-compiler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '0.9'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '0.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
description: Aerospike ruby
|
68
|
+
version: '3.3'
|
69
|
+
description: Unofficial Aerospike Client for ruby with c extension (official aerospike
|
70
|
+
c client)
|
70
71
|
email:
|
71
72
|
- zyablitskiy@gmail.com
|
72
73
|
executables: []
|
@@ -95,6 +96,8 @@ files:
|
|
95
96
|
- ext/aerospike_native/key.c
|
96
97
|
- ext/aerospike_native/key.h
|
97
98
|
- ext/aerospike_native/lib/.keep
|
99
|
+
- ext/aerospike_native/logger.c
|
100
|
+
- ext/aerospike_native/logger.h
|
98
101
|
- ext/aerospike_native/operation.c
|
99
102
|
- ext/aerospike_native/operation.h
|
100
103
|
- ext/aerospike_native/policy.c
|