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