ilios 0.4.9 → 0.4.11
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/Gemfile +1 -0
- data/LICENSE +21 -0
- data/README.md +3 -0
- data/Rakefile +10 -0
- data/ext/ilios/cluster.c +7 -4
- data/ext/ilios/extconf.rb +4 -17
- data/ext/ilios/future.c +2 -1
- data/ext/ilios/ilios.c +23 -2
- data/ext/ilios/ilios.h +1 -2
- data/ext/ilios/session.c +0 -3
- data/ilios.gemspec +0 -1
- data/lib/ilios/version.rb +2 -2
- data/sig/ilios.rbs +23 -6
- metadata +4 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0def2f85dbab76062cb552bdf5263988913ea5e7bd7ecafd2681e81d91dcf5f6
|
4
|
+
data.tar.gz: 9c6b8696ae30614e09709ab2ba7706964c11b382d4b09361e9518d7a25d4891d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68e58cdf0fb8c656428438f7b772cd9bced047f17aa711b593db533ea6a13393d831b1370b63bec6a7b5801f90ada694f10a553d3744cc05dbb9dd1695c46913
|
7
|
+
data.tar.gz: 5c483e7ef9ec943f7782fe20b8aa452255a21f18bd925fdcf5be9b8c1605443bf408351dac220376bfc2aa44d43fa377abcca2c173d72a77272bc30de30bf145
|
data/Gemfile
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2024 Watson
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Ilios
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/ilios)
|
4
|
+
[](https://github.com/Watson1978/ilios/actions/workflows/CI.yml)
|
5
|
+
|
3
6
|
Ilios that Cassandra driver written by C language for Ruby using [DataStax C/C++ Driver](https://github.com/datastax/cpp-driver).
|
4
7
|
|
5
8
|
## Installation
|
data/Rakefile
CHANGED
@@ -14,3 +14,13 @@ end
|
|
14
14
|
Rake::TestTask.new do |task|
|
15
15
|
task.pattern = 'test/test_*.rb'
|
16
16
|
end
|
17
|
+
|
18
|
+
namespace :rbs do
|
19
|
+
desc 'Validate RBS definitions'
|
20
|
+
task :validate do
|
21
|
+
all_sigs = Dir.glob('sig').map { |dir| "-I #{dir}" }.join(' ')
|
22
|
+
sh("bundle exec rbs #{all_sigs} validate") do |ok, _|
|
23
|
+
abort('one or more rbs validate failed') unless ok
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/ext/ilios/cluster.c
CHANGED
@@ -49,6 +49,7 @@ static VALUE cluster_connect(VALUE self)
|
|
49
49
|
{
|
50
50
|
CassandraSession *cassandra_session;
|
51
51
|
CassandraCluster *cassandra_cluster;
|
52
|
+
CassFuture* connect_future;
|
52
53
|
VALUE cassandra_session_obj;
|
53
54
|
const char *keyspace = "";
|
54
55
|
|
@@ -60,16 +61,18 @@ static VALUE cluster_connect(VALUE self)
|
|
60
61
|
cassandra_session_obj = CREATE_SESSION(cassandra_session);
|
61
62
|
cassandra_session->cluster_obj = self;
|
62
63
|
cassandra_session->session = cass_session_new();
|
63
|
-
|
64
|
-
nogvl_future_wait(
|
64
|
+
connect_future = cass_session_connect_keyspace(cassandra_session->session, cassandra_cluster->cluster, keyspace);
|
65
|
+
nogvl_future_wait(connect_future);
|
65
66
|
|
66
|
-
if (cass_future_error_code(
|
67
|
+
if (cass_future_error_code(connect_future) != CASS_OK) {
|
67
68
|
char error[4096] = { 0 };
|
68
69
|
|
69
|
-
strncpy(error, cass_error_desc(cass_future_error_code(
|
70
|
+
strncpy(error, cass_error_desc(cass_future_error_code(connect_future)), sizeof(error) - 1);
|
71
|
+
cass_future_free(connect_future);
|
70
72
|
rb_raise(eConnectError, "Unable to connect: %s", error);
|
71
73
|
return Qnil;
|
72
74
|
}
|
75
|
+
cass_future_free(connect_future);
|
73
76
|
|
74
77
|
return cassandra_session_obj;
|
75
78
|
}
|
data/ext/ilios/extconf.rb
CHANGED
@@ -4,7 +4,6 @@ require File.expand_path('../../lib/ilios/version', __dir__)
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'mini_portile2'
|
6
6
|
require 'mkmf'
|
7
|
-
require 'native-package-installer'
|
8
7
|
|
9
8
|
have_func('malloc_usable_size')
|
10
9
|
have_func('malloc_size')
|
@@ -24,6 +23,7 @@ def num_cpu_cores
|
|
24
23
|
end
|
25
24
|
|
26
25
|
return 1 if cores <= 0
|
26
|
+
|
27
27
|
cores >= 7 ? MAX_CORES : cores
|
28
28
|
end
|
29
29
|
|
@@ -40,25 +40,9 @@ module LibuvInstaller
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.install
|
43
|
-
return if install_from_package
|
44
|
-
|
45
43
|
install_from_source
|
46
44
|
end
|
47
45
|
|
48
|
-
def self.install_from_package
|
49
|
-
NativePackageInstaller.install(
|
50
|
-
alpine_linux: 'libuv-dev',
|
51
|
-
alt_linux: 'libuv',
|
52
|
-
arch_linux: 'libuv',
|
53
|
-
debian: 'libuv1-dev',
|
54
|
-
freebsd: 'libuv',
|
55
|
-
gentoo_linux: 'libuv',
|
56
|
-
homebrew: 'libuv',
|
57
|
-
macports: 'libuv',
|
58
|
-
redhat: 'libuv-devel'
|
59
|
-
)
|
60
|
-
end
|
61
|
-
|
62
46
|
def self.install_from_source
|
63
47
|
unless File.exist?(LIBUV_INSTALL_PATH)
|
64
48
|
libuv_recipe = LibuvRecipe.new('libuv', Ilios::LIBUV_VERSION, make_command: "make -j #{num_cpu_cores}")
|
@@ -158,4 +142,7 @@ else
|
|
158
142
|
CassandraDriverInstaller.install
|
159
143
|
end
|
160
144
|
|
145
|
+
$CPPFLAGS += " #{ENV['CPPFLAGS']}"
|
146
|
+
$LDFLAGS += " #{ENV['LDFLAGS']}"
|
147
|
+
|
161
148
|
create_makefile('ilios')
|
data/ext/ilios/future.c
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "ilios.h"
|
2
2
|
|
3
3
|
#define THREAD_MAX 5
|
4
|
+
#define QUEUE_MAX 100
|
4
5
|
|
5
6
|
typedef struct
|
6
7
|
{
|
@@ -31,7 +32,7 @@ const rb_data_type_t cassandra_future_data_type = {
|
|
31
32
|
|
32
33
|
static void future_thread_pool_init(future_thread_pool *pool)
|
33
34
|
{
|
34
|
-
pool->queue = rb_funcall(
|
35
|
+
pool->queue = rb_funcall(cSizedQueue, id_new, 1, INT2NUM(QUEUE_MAX));
|
35
36
|
rb_gc_register_mark_object(pool->queue);
|
36
37
|
}
|
37
38
|
|
data/ext/ilios/ilios.c
CHANGED
@@ -11,7 +11,7 @@ VALUE eConnectError;
|
|
11
11
|
VALUE eExecutionError;
|
12
12
|
VALUE eStatementError;
|
13
13
|
|
14
|
-
VALUE
|
14
|
+
VALUE cSizedQueue;
|
15
15
|
|
16
16
|
VALUE id_to_time;
|
17
17
|
VALUE id_new;
|
@@ -58,6 +58,18 @@ static void ilios_free(void *ptr)
|
|
58
58
|
}
|
59
59
|
}
|
60
60
|
|
61
|
+
/**
|
62
|
+
* Sets the log level.
|
63
|
+
* Default is +LOG_ERROR+.
|
64
|
+
*
|
65
|
+
* @return [Cassandra] self.
|
66
|
+
*/
|
67
|
+
static VALUE cassandra_set_log_level(VALUE self, VALUE log_level)
|
68
|
+
{
|
69
|
+
cass_log_set_level(NUM2INT(log_level));
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
61
73
|
void Init_ilios(void)
|
62
74
|
{
|
63
75
|
rb_ext_ractor_safe(true);
|
@@ -73,7 +85,7 @@ void Init_ilios(void)
|
|
73
85
|
eExecutionError = rb_define_class_under(mCassandra, "ExecutionError", rb_eStandardError);
|
74
86
|
eStatementError = rb_define_class_under(mCassandra, "StatementError", rb_eStandardError);
|
75
87
|
|
76
|
-
|
88
|
+
cSizedQueue = rb_const_get(rb_cThread, rb_intern("SizedQueue"));
|
77
89
|
|
78
90
|
id_to_time = rb_intern("to_time");
|
79
91
|
id_new = rb_intern("new");
|
@@ -83,6 +95,15 @@ void Init_ilios(void)
|
|
83
95
|
id_report_on_exception = rb_intern("report_on_exception=");
|
84
96
|
sym_unsupported_column_type = ID2SYM(rb_intern("unsupported_column_type"));
|
85
97
|
|
98
|
+
rb_define_module_function(mCassandra, "log_level", cassandra_set_log_level, 1);
|
99
|
+
rb_define_const(mCassandra, "LOG_DISABLED", INT2NUM(CASS_LOG_DISABLED));
|
100
|
+
rb_define_const(mCassandra, "LOG_CRITICAL", INT2NUM(CASS_LOG_CRITICAL));
|
101
|
+
rb_define_const(mCassandra, "LOG_ERROR", INT2NUM(CASS_LOG_ERROR));
|
102
|
+
rb_define_const(mCassandra, "LOG_WARN", INT2NUM(CASS_LOG_WARN));
|
103
|
+
rb_define_const(mCassandra, "LOG_INFO", INT2NUM(CASS_LOG_INFO));
|
104
|
+
rb_define_const(mCassandra, "LOG_DEBUG", INT2NUM(CASS_LOG_DEBUG));
|
105
|
+
rb_define_const(mCassandra, "LOG_TRACE", INT2NUM(CASS_LOG_TRACE));
|
106
|
+
|
86
107
|
Init_cluster();
|
87
108
|
Init_session();
|
88
109
|
Init_statement();
|
data/ext/ilios/ilios.h
CHANGED
@@ -35,7 +35,6 @@ typedef struct
|
|
35
35
|
typedef struct
|
36
36
|
{
|
37
37
|
CassSession* session;
|
38
|
-
CassFuture* connect_future;
|
39
38
|
VALUE cluster_obj;
|
40
39
|
} CassandraSession;
|
41
40
|
|
@@ -85,7 +84,7 @@ extern VALUE eConnectError;
|
|
85
84
|
extern VALUE eExecutionError;
|
86
85
|
extern VALUE eStatementError;
|
87
86
|
|
88
|
-
extern VALUE
|
87
|
+
extern VALUE cSizedQueue;
|
89
88
|
|
90
89
|
extern VALUE id_to_time;
|
91
90
|
extern VALUE id_new;
|
data/ext/ilios/session.c
CHANGED
@@ -136,9 +136,6 @@ static void session_destroy(void *ptr)
|
|
136
136
|
if (cassandra_session->session) {
|
137
137
|
cass_session_free(cassandra_session->session);
|
138
138
|
}
|
139
|
-
if (cassandra_session->connect_future) {
|
140
|
-
cass_future_free(cassandra_session->connect_future);
|
141
|
-
}
|
142
139
|
xfree(cassandra_session);
|
143
140
|
}
|
144
141
|
|
data/ilios.gemspec
CHANGED
data/lib/ilios/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Ilios
|
4
|
-
VERSION = '0.4.
|
4
|
+
VERSION = '0.4.11'
|
5
5
|
public_constant :VERSION
|
6
6
|
|
7
7
|
CASSANDRA_CPP_DRIVER_VERSION = '2.17.1'
|
8
8
|
public_constant :CASSANDRA_CPP_DRIVER_VERSION
|
9
9
|
|
10
|
-
LIBUV_VERSION = '1.
|
10
|
+
LIBUV_VERSION = '1.48.0'
|
11
11
|
public_constant :LIBUV_VERSION
|
12
12
|
end
|
data/sig/ilios.rbs
CHANGED
@@ -2,7 +2,25 @@ module Ilios
|
|
2
2
|
VERSION: String
|
3
3
|
|
4
4
|
module Cassandra
|
5
|
+
LOG_DISABLED: Integer
|
6
|
+
LOG_CRITICAL: Integer
|
7
|
+
LOG_ERROR: Integer
|
8
|
+
LOG_WARN: Integer
|
9
|
+
LOG_INFO: Integer
|
10
|
+
LOG_DEBUG: Integer
|
11
|
+
LOG_TRACE: Integer
|
12
|
+
|
13
|
+
def self.log_level: (Integer log_level) -> self
|
14
|
+
|
5
15
|
class Cluster
|
16
|
+
PROTOCOL_VERSION_V1: Integer
|
17
|
+
PROTOCOL_VERSION_V2: Integer
|
18
|
+
PROTOCOL_VERSION_V3: Integer
|
19
|
+
PROTOCOL_VERSION_V4: Integer
|
20
|
+
PROTOCOL_VERSION_V5: Integer
|
21
|
+
PROTOCOL_VERSION_DSEV1: Integer
|
22
|
+
PROTOCOL_VERSION_DSEV2: Integer
|
23
|
+
|
6
24
|
def connect: () -> Ilios::Cassandra::Session
|
7
25
|
def hosts: (Array[String]) -> self
|
8
26
|
def port: (Integer) -> self
|
@@ -23,7 +41,7 @@ module Ilios
|
|
23
41
|
end
|
24
42
|
|
25
43
|
class Statement
|
26
|
-
def bind: (Hash[Symbol
|
44
|
+
def bind: (Hash[Symbol | String, untyped]) -> self
|
27
45
|
def page_size=: (Integer) -> self
|
28
46
|
def idempotent=: (true | false) -> self
|
29
47
|
end
|
@@ -31,7 +49,7 @@ module Ilios
|
|
31
49
|
class Future
|
32
50
|
def on_success: () { (Ilios::Cassandra::Result) -> void } -> self
|
33
51
|
def on_failure: () { () -> void } -> self
|
34
|
-
def await: () ->
|
52
|
+
def await: () -> self
|
35
53
|
end
|
36
54
|
|
37
55
|
class Result
|
@@ -39,10 +57,9 @@ module Ilios
|
|
39
57
|
|
40
58
|
include Enumerable[row_type]
|
41
59
|
|
42
|
-
def each:
|
43
|
-
|
44
|
-
def next_page: () -> Ilios::Cassandra::Result |
|
45
|
-
() -> nil
|
60
|
+
def each: () { (row_type) -> void } -> void
|
61
|
+
| () -> ::Enumerator[row_type, self]
|
62
|
+
def next_page: () -> (Ilios::Cassandra::Result | nil)
|
46
63
|
end
|
47
64
|
end
|
48
65
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ilios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Watson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_portile2
|
@@ -24,26 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.8'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: native-package-installer
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.1'
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.1.9
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '1.1'
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.1.9
|
47
27
|
description: Cassandra driver written by C language
|
48
28
|
email:
|
49
29
|
- watson1978@gmail.com
|
@@ -54,6 +34,7 @@ extra_rdoc_files: []
|
|
54
34
|
files:
|
55
35
|
- ".yardopts"
|
56
36
|
- Gemfile
|
37
|
+
- LICENSE
|
57
38
|
- README.md
|
58
39
|
- Rakefile
|
59
40
|
- docker-compose.yml
|
@@ -77,7 +58,7 @@ metadata:
|
|
77
58
|
homepage_uri: https://github.com/Watson1978/ilios
|
78
59
|
source_code_uri: https://github.com/Watson1978/ilios
|
79
60
|
bug_tracker_uri: https://github.com/Watson1978/ilios/issues
|
80
|
-
documentation_uri: https://www.rubydoc.info/gems/ilios/0.4.
|
61
|
+
documentation_uri: https://www.rubydoc.info/gems/ilios/0.4.11
|
81
62
|
rubygems_mfa_required: 'true'
|
82
63
|
post_install_message:
|
83
64
|
rdoc_options: []
|