rroonga 6.0.0 → 6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/text/news.md +38 -1
- data/ext/groonga/extconf.rb +14 -1
- data/ext/groonga/rb-grn-array.c +1 -1
- data/ext/groonga/rb-grn-double-array-trie.c +1 -1
- data/ext/groonga/rb-grn-exception.c +18 -1
- data/ext/groonga/rb-grn-expression.c +0 -8
- data/ext/groonga/rb-grn-hash.c +15 -3
- data/ext/groonga/rb-grn-logger.c +22 -22
- data/ext/groonga/rb-grn-object.c +28 -6
- data/ext/groonga/rb-grn-patricia-trie.c +1 -1
- data/ext/groonga/rb-grn-request-canceler.c +164 -0
- data/ext/groonga/rb-grn-request-timer-id.c +64 -0
- data/ext/groonga/rb-grn-request-timer.c +155 -0
- data/ext/groonga/rb-grn-type.c +43 -1
- data/ext/groonga/rb-grn.h +17 -5
- data/ext/groonga/rb-groonga.c +3 -0
- data/lib/groonga/expression-builder.rb +4 -13
- data/rroonga-build.rb +3 -3
- data/rroonga.gemspec +1 -2
- data/test/run-test.rb +2 -2
- data/test/test-expression-builder.rb +13 -1
- data/test/test-hash.rb +22 -3
- data/test/test-request-canceler.rb +46 -0
- data/test/test-request-timer.rb +40 -0
- data/test/test-table.rb +43 -7
- data/test/test-type.rb +104 -2
- metadata +59 -66
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 475b1c66414213ee96bd581c7de7a6689abf3863
|
4
|
+
data.tar.gz: bec353bd58e2ab048f379cd73a33be130690242e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b091a21fe716b530d6c6d3d044fe164efe746665a4a0ef106a24cd4c1ffcc0c78dc4029edc1e755cade63286aa890f49654840c3a2aee67ce742a9d58a843095
|
7
|
+
data.tar.gz: 8876710a8d73dc06b1255800cd0b67203d74bdfe525c5b24c767126e79d4102aaa4d1acba4f0bf81012bb8bfb762466dbfa1488fc73fe7303fa62f0b9bbdeac9
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,42 @@
|
|
1
1
|
# NEWS
|
2
2
|
|
3
|
+
## 6.0.2 2016-05-18 {#version-6-0-2}
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* Supported Groonga 6.0.2. Groonga 6.0.1 or older aren't supported.
|
8
|
+
|
9
|
+
* {Groonga::Table#select}: Supported nested array as conditions.
|
10
|
+
|
11
|
+
* Supported HTTP proxy with authentication on install.
|
12
|
+
[GitHub#129] [Patch by ngram]
|
13
|
+
|
14
|
+
* {Groonga::Cancel}: Added a new error class.
|
15
|
+
|
16
|
+
* {Groonga::Table#select}: Supported passing Hash as function argument.
|
17
|
+
|
18
|
+
* {Groonga::Hash.create}: Added `:key_large` option to create hash
|
19
|
+
table that supports 1TiB total key size.
|
20
|
+
|
21
|
+
* {Groonga::Type#text_family?}: Added a new predicate that returns
|
22
|
+
`true` for `ShortText`, `Text` and `LongText` types.
|
23
|
+
|
24
|
+
* {Groonga::Type#number_family?}: Added a new predicate that returns
|
25
|
+
`true` for `UInt8`, `Int8`, ..., `UInt64`, `Int64` and `Float`
|
26
|
+
types.
|
27
|
+
|
28
|
+
* {Groonga::Type#builtin?}: Added a new predicate that returns
|
29
|
+
`true` for builtin types such as `Int32`.
|
30
|
+
|
31
|
+
* {Groonga::Object#remove}: Added `:dependent` option to remove all
|
32
|
+
tables and columns that depend on the object.
|
33
|
+
|
34
|
+
* {Groonga::RequestCanceler}: Added an interface that cancels one or
|
35
|
+
more requests.
|
36
|
+
|
37
|
+
* {Groonga::RequestTimer}: Added an interface that provides request
|
38
|
+
timeout feature.
|
39
|
+
|
3
40
|
## 6.0.0: 2016-03-06 {#version-6-0-0}
|
4
41
|
|
5
42
|
### Improvements
|
@@ -22,7 +59,7 @@
|
|
22
59
|
as number object. The number object was always treated as ID not
|
23
60
|
key.
|
24
61
|
|
25
|
-
It's backward
|
62
|
+
It's backward incompatible change but we introduced the
|
26
63
|
change. Because we marked this behavior as a bug.
|
27
64
|
|
28
65
|
* Supported `require "rroonga"` for `Bundler.require`.
|
data/ext/groonga/extconf.rb
CHANGED
@@ -21,6 +21,7 @@ require "mkmf"
|
|
21
21
|
require "fileutils"
|
22
22
|
require "shellwords"
|
23
23
|
require "open-uri"
|
24
|
+
require "uri"
|
24
25
|
|
25
26
|
require "pkg-config"
|
26
27
|
|
@@ -83,7 +84,19 @@ def download(url)
|
|
83
84
|
if File.exist?(base_name)
|
84
85
|
message(" skip (use downloaded file)\n")
|
85
86
|
else
|
86
|
-
|
87
|
+
options = {}
|
88
|
+
proxy_env = ENV["http_proxy"]
|
89
|
+
if proxy_env
|
90
|
+
proxy_url = URI.parse(proxy_env)
|
91
|
+
if proxy_url.user
|
92
|
+
options[:proxy_http_basic_authentication] = [
|
93
|
+
proxy_url,
|
94
|
+
proxy_url.user,
|
95
|
+
proxy_url.password,
|
96
|
+
]
|
97
|
+
end
|
98
|
+
end
|
99
|
+
open(url, "rb", options) do |input|
|
87
100
|
File.open(base_name, "wb") do |output|
|
88
101
|
while (buffer = input.read(1024))
|
89
102
|
output.print(buffer)
|
data/ext/groonga/rb-grn-array.c
CHANGED
@@ -90,7 +90,7 @@ rb_grn_array_s_create (int argc, VALUE *argv, VALUE klass)
|
|
90
90
|
grn_obj *value_type = NULL, *table;
|
91
91
|
const char *name = NULL, *path = NULL;
|
92
92
|
unsigned name_size = 0;
|
93
|
-
|
93
|
+
grn_table_flags flags = GRN_OBJ_TABLE_NO_KEY;
|
94
94
|
VALUE rb_table;
|
95
95
|
VALUE options, rb_context, rb_name, rb_path, rb_persistent;
|
96
96
|
VALUE rb_value_type, rb_sub_records;
|
@@ -245,7 +245,7 @@ rb_grn_double_array_trie_s_create (int argc, VALUE *argv, VALUE klass)
|
|
245
245
|
grn_obj *key_type = NULL, *value_type = NULL, *table;
|
246
246
|
const char *name = NULL, *path = NULL;
|
247
247
|
unsigned name_size = 0;
|
248
|
-
|
248
|
+
grn_table_flags flags = GRN_OBJ_TABLE_DAT_KEY;
|
249
249
|
VALUE rb_table;
|
250
250
|
VALUE options, rb_context, rb_name, rb_path, rb_persistent;
|
251
251
|
VALUE rb_key_normalize, rb_key_with_sis, rb_key_type;
|
@@ -100,6 +100,7 @@ static VALUE eGrnTokenFilterError;
|
|
100
100
|
static VALUE eGrnCommandError;
|
101
101
|
static VALUE eGrnPluginError;
|
102
102
|
static VALUE eGrnScorerError;
|
103
|
+
static VALUE eGrnCancel;
|
103
104
|
|
104
105
|
VALUE
|
105
106
|
rb_grn_rc_to_exception (grn_rc rc)
|
@@ -341,6 +342,9 @@ rb_grn_rc_to_exception (grn_rc rc)
|
|
341
342
|
case GRN_SCORER_ERROR:
|
342
343
|
exception = eGrnScorerError;
|
343
344
|
break;
|
345
|
+
case GRN_CANCEL:
|
346
|
+
exception = eGrnCancel;
|
347
|
+
break;
|
344
348
|
}
|
345
349
|
|
346
350
|
if (NIL_P(exception))
|
@@ -589,6 +593,9 @@ rb_grn_rc_to_message (grn_rc rc)
|
|
589
593
|
case GRN_SCORER_ERROR:
|
590
594
|
message = "scorer error";
|
591
595
|
break;
|
596
|
+
case GRN_CANCEL:
|
597
|
+
message = "cancel";
|
598
|
+
break;
|
592
599
|
}
|
593
600
|
|
594
601
|
if (!message)
|
@@ -1276,6 +1283,16 @@ rb_grn_init_exception (VALUE mGrn)
|
|
1276
1283
|
*
|
1277
1284
|
* @since 5.0.1
|
1278
1285
|
*/
|
1279
|
-
|
1286
|
+
eGrnScorerError =
|
1280
1287
|
rb_define_class_under(mGrn, "ScorerError", rb_eGrnError);
|
1288
|
+
|
1289
|
+
/*
|
1290
|
+
* Document-class: Groonga::Cancel
|
1291
|
+
*
|
1292
|
+
* It is used when a processing is canceled.
|
1293
|
+
*
|
1294
|
+
* @since 6.0.2
|
1295
|
+
*/
|
1296
|
+
eGrnCancel =
|
1297
|
+
rb_define_class_under(mGrn, "Cancel", rb_eGrnError);
|
1281
1298
|
}
|
@@ -203,8 +203,6 @@ rb_grn_expression_define_variable (int argc, VALUE *argv, VALUE self)
|
|
203
203
|
return rb_variable;
|
204
204
|
}
|
205
205
|
|
206
|
-
/* TODO: Enable when Groonga 6.0.1 is released. */
|
207
|
-
/*
|
208
206
|
typedef struct
|
209
207
|
{
|
210
208
|
grn_ctx *context;
|
@@ -238,7 +236,6 @@ rb_grn_hash_from_ruby_hash_body (VALUE rb_key,
|
|
238
236
|
|
239
237
|
return ST_CONTINUE;
|
240
238
|
}
|
241
|
-
*/
|
242
239
|
|
243
240
|
/*
|
244
241
|
* _object_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
|
@@ -269,8 +266,6 @@ rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
|
|
269
266
|
NULL, NULL,
|
270
267
|
NULL, NULL, NULL);
|
271
268
|
|
272
|
-
/* TODO: Enable when Groonga 6.0.1 is released. */
|
273
|
-
/*
|
274
269
|
if (RB_TYPE_P(rb_object, RUBY_T_HASH)) {
|
275
270
|
RbGrnHashFromRubyHashData data;
|
276
271
|
data.context = context;
|
@@ -288,13 +283,10 @@ rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
|
|
288
283
|
grn_expr_append_obj(context, expression, (grn_obj *)(data.hash),
|
289
284
|
operation, n_arguments);
|
290
285
|
} else {
|
291
|
-
*/
|
292
286
|
object = RVAL2GRNOBJECT(rb_object, &context);
|
293
287
|
grn_expr_append_obj(context, expression, object,
|
294
288
|
operation, n_arguments);
|
295
|
-
/*
|
296
289
|
}
|
297
|
-
*/
|
298
290
|
rb_grn_context_check(context, self);
|
299
291
|
rb_ary_push(rb_iv_get(self, "@objects"), rb_object);
|
300
292
|
|
data/ext/groonga/rb-grn-hash.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2009-
|
3
|
+
Copyright (C) 2009-2016 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
5
5
|
This library is free software; you can redistribute it and/or
|
6
6
|
modify it under the terms of the GNU Lesser General Public
|
@@ -103,6 +103,12 @@ VALUE rb_cGrnHash;
|
|
103
103
|
*
|
104
104
|
* @deprecated Use @:normalizer => "NormalizerAuto"@ instead.
|
105
105
|
*
|
106
|
+
* @option options [Boolean] :key_large (false)
|
107
|
+
* It specifies whether total key size is large or not. The
|
108
|
+
* default total key size is 4GiB. Large total key size is 1TiB.
|
109
|
+
*
|
110
|
+
* @since 6.0.1
|
111
|
+
*
|
106
112
|
* @option options :key_type
|
107
113
|
* キーの種類を示すオブジェクトを指定する。キーの種類には型
|
108
114
|
* 名("Int32"や"ShortText"など)または {Groonga::Type} または
|
@@ -158,10 +164,12 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
|
|
158
164
|
grn_obj *key_type = NULL, *value_type = NULL, *table;
|
159
165
|
const char *name = NULL, *path = NULL;
|
160
166
|
unsigned name_size = 0;
|
161
|
-
|
167
|
+
grn_table_flags flags = GRN_OBJ_TABLE_HASH_KEY;
|
162
168
|
VALUE rb_table;
|
163
169
|
VALUE options, rb_context, rb_name, rb_path, rb_persistent;
|
164
|
-
VALUE rb_key_normalize
|
170
|
+
VALUE rb_key_normalize;
|
171
|
+
VALUE rb_key_large;
|
172
|
+
VALUE rb_key_type, rb_value_type, rb_default_tokenizer;
|
165
173
|
VALUE rb_token_filters;
|
166
174
|
VALUE rb_sub_records;
|
167
175
|
VALUE rb_normalizer;
|
@@ -174,6 +182,7 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
|
|
174
182
|
"path", &rb_path,
|
175
183
|
"persistent", &rb_persistent,
|
176
184
|
"key_normalize", &rb_key_normalize,
|
185
|
+
"key_large", &rb_key_large,
|
177
186
|
"key_type", &rb_key_type,
|
178
187
|
"value_type", &rb_value_type,
|
179
188
|
"default_tokenizer", &rb_default_tokenizer,
|
@@ -201,6 +210,9 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
|
|
201
210
|
if (RVAL2CBOOL(rb_key_normalize))
|
202
211
|
flags |= GRN_OBJ_KEY_NORMALIZE;
|
203
212
|
|
213
|
+
if (RVAL2CBOOL(rb_key_large))
|
214
|
+
flags |= GRN_OBJ_KEY_LARGE;
|
215
|
+
|
204
216
|
if (NIL_P(rb_key_type)) {
|
205
217
|
key_type = grn_ctx_at(context, GRN_DB_SHORT_TEXT);
|
206
218
|
} else {
|
data/ext/groonga/rb-grn-logger.c
CHANGED
@@ -28,9 +28,9 @@
|
|
28
28
|
#define GRNLOGLEVEL2RVAL(level) (rb_grn_log_level_to_ruby_object(level))
|
29
29
|
#define RVAL2GRNLOGLEVEL(rb_level) (rb_grn_log_level_from_ruby_object(rb_level))
|
30
30
|
|
31
|
-
VALUE
|
32
|
-
VALUE
|
33
|
-
VALUE
|
31
|
+
VALUE rb_cGrnLogger;
|
32
|
+
VALUE rb_mGrnLoggerFlags;
|
33
|
+
VALUE rb_cGrnCallbackLogger;
|
34
34
|
|
35
35
|
static ID id_caller_locations;
|
36
36
|
static ID id_path;
|
@@ -333,7 +333,7 @@ rb_grn_logger_s_register (int argc, VALUE *argv, VALUE klass)
|
|
333
333
|
if (!NIL_P(rb_logger)) {
|
334
334
|
rb_options = rb_logger;
|
335
335
|
}
|
336
|
-
rb_logger = rb_funcall(
|
336
|
+
rb_logger = rb_funcall(rb_cGrnCallbackLogger, id_new, 1, rb_callback);
|
337
337
|
}
|
338
338
|
|
339
339
|
rb_grn_scan_options(rb_options,
|
@@ -361,7 +361,7 @@ rb_grn_logger_s_register (int argc, VALUE *argv, VALUE klass)
|
|
361
361
|
flags |= GRN_LOG_LOCATION;
|
362
362
|
}
|
363
363
|
if (!NIL_P(rb_flags)) {
|
364
|
-
flags = rb_funcall(
|
364
|
+
flags = rb_funcall(rb_mGrnLoggerFlags, id_parse, 2,
|
365
365
|
INT2NUM(flags), rb_flags);
|
366
366
|
}
|
367
367
|
|
@@ -617,34 +617,34 @@ rb_grn_init_logger (VALUE mGrn)
|
|
617
617
|
|
618
618
|
rb_grn_logger.user_data = (void *)Qnil;
|
619
619
|
|
620
|
-
|
620
|
+
rb_cGrnLogger = rb_define_class_under(mGrn, "Logger", rb_cObject);
|
621
621
|
|
622
|
-
rb_cv_set(
|
623
|
-
rb_define_singleton_method(
|
622
|
+
rb_cv_set(rb_cGrnLogger, "@@current_logger", Qnil);
|
623
|
+
rb_define_singleton_method(rb_cGrnLogger, "log",
|
624
624
|
rb_grn_logger_s_log, -1);
|
625
|
-
rb_define_singleton_method(
|
625
|
+
rb_define_singleton_method(rb_cGrnLogger, "register",
|
626
626
|
rb_grn_logger_s_register, -1);
|
627
|
-
rb_define_singleton_method(
|
627
|
+
rb_define_singleton_method(rb_cGrnLogger, "unregister",
|
628
628
|
rb_grn_logger_s_unregister, 0);
|
629
|
-
rb_define_singleton_method(
|
629
|
+
rb_define_singleton_method(rb_cGrnLogger, "reopen",
|
630
630
|
rb_grn_logger_s_reopen, 0);
|
631
|
-
rb_define_singleton_method(
|
631
|
+
rb_define_singleton_method(rb_cGrnLogger, "max_level",
|
632
632
|
rb_grn_logger_s_get_max_level, 0);
|
633
|
-
rb_define_singleton_method(
|
633
|
+
rb_define_singleton_method(rb_cGrnLogger, "max_level=",
|
634
634
|
rb_grn_logger_s_set_max_level, 1);
|
635
|
-
rb_define_singleton_method(
|
635
|
+
rb_define_singleton_method(rb_cGrnLogger, "path",
|
636
636
|
rb_grn_logger_s_get_path, 0);
|
637
|
-
rb_define_singleton_method(
|
637
|
+
rb_define_singleton_method(rb_cGrnLogger, "path=",
|
638
638
|
rb_grn_logger_s_set_path, 1);
|
639
|
-
rb_define_singleton_method(
|
639
|
+
rb_define_singleton_method(rb_cGrnLogger, "rotate_threshold_size",
|
640
640
|
rb_grn_logger_s_get_rotate_threshold_size, 0);
|
641
|
-
rb_define_singleton_method(
|
641
|
+
rb_define_singleton_method(rb_cGrnLogger, "rotate_threshold_size=",
|
642
642
|
rb_grn_logger_s_set_rotate_threshold_size, 1);
|
643
|
-
rb_set_end_proc(rb_grn_logger_reset,
|
643
|
+
rb_set_end_proc(rb_grn_logger_reset, rb_cGrnLogger);
|
644
644
|
|
645
|
-
|
645
|
+
rb_mGrnLoggerFlags = rb_define_module_under(rb_cGrnLogger, "Flags");
|
646
646
|
#define DEFINE_FLAG(NAME) \
|
647
|
-
rb_define_const(
|
647
|
+
rb_define_const(rb_mGrnLoggerFlags, \
|
648
648
|
#NAME, INT2NUM(GRN_LOG_ ## NAME))
|
649
649
|
DEFINE_FLAG(TIME);
|
650
650
|
DEFINE_FLAG(TITLE);
|
@@ -652,6 +652,6 @@ rb_grn_init_logger (VALUE mGrn)
|
|
652
652
|
DEFINE_FLAG(LOCATION);
|
653
653
|
#undef DEFINE_FLAG
|
654
654
|
|
655
|
-
|
656
|
-
rb_define_class_under(mGrn, "CallbackLogger",
|
655
|
+
rb_cGrnCallbackLogger =
|
656
|
+
rb_define_class_under(mGrn, "CallbackLogger", rb_cGrnLogger);
|
657
657
|
}
|
data/ext/groonga/rb-grn-object.c
CHANGED
@@ -1461,23 +1461,45 @@ rb_grn_object_prepend_value (VALUE self, VALUE rb_id, VALUE rb_value)
|
|
1461
1461
|
}
|
1462
1462
|
|
1463
1463
|
/*
|
1464
|
-
*
|
1465
|
-
*
|
1464
|
+
* Free the `object`. If the `object` is persistent object, all files
|
1465
|
+
* related with the object are removed.
|
1466
1466
|
*
|
1467
|
-
* @overload remove
|
1467
|
+
* @overload remove(options={})
|
1468
|
+
*
|
1469
|
+
* @param [::Hash] options The optional parameters.
|
1470
|
+
*
|
1471
|
+
* @option options [Boolean] :dependent (false)
|
1472
|
+
* If it's `true`, all tables and columns that depend on the
|
1473
|
+
* `object`.
|
1468
1474
|
*/
|
1469
1475
|
static VALUE
|
1470
|
-
rb_grn_object_remove (VALUE self)
|
1476
|
+
rb_grn_object_remove (int argc, VALUE *argv, VALUE self)
|
1471
1477
|
{
|
1472
1478
|
RbGrnObject *rb_grn_object;
|
1473
1479
|
grn_ctx *context;
|
1480
|
+
VALUE rb_options;
|
1481
|
+
VALUE rb_dependent_p;
|
1482
|
+
grn_bool dependent_p = GRN_FALSE;
|
1474
1483
|
|
1475
1484
|
rb_grn_object = SELF(self);
|
1476
1485
|
if (!rb_grn_object->object)
|
1477
1486
|
return Qnil;
|
1478
1487
|
|
1488
|
+
rb_scan_args(argc, argv, "01", &rb_options);
|
1489
|
+
rb_grn_scan_options(rb_options,
|
1490
|
+
"dependent", &rb_dependent_p,
|
1491
|
+
NULL);
|
1492
|
+
|
1493
|
+
if (!NIL_P(rb_dependent_p)) {
|
1494
|
+
dependent_p = RVAL2CBOOL(rb_dependent_p);
|
1495
|
+
}
|
1496
|
+
|
1479
1497
|
context = rb_grn_object->context;
|
1480
|
-
|
1498
|
+
if (dependent_p) {
|
1499
|
+
grn_obj_remove_dependent(context, rb_grn_object->object);
|
1500
|
+
} else {
|
1501
|
+
grn_obj_remove(context, rb_grn_object->object);
|
1502
|
+
}
|
1481
1503
|
rb_grn_context_check(context, self);
|
1482
1504
|
|
1483
1505
|
rb_iv_set(self, "@context", Qnil);
|
@@ -1750,7 +1772,7 @@ rb_grn_init_object (VALUE mGrn)
|
|
1750
1772
|
rb_define_method(rb_cGrnObject, "append", rb_grn_object_append_value, 2);
|
1751
1773
|
rb_define_method(rb_cGrnObject, "prepend", rb_grn_object_prepend_value, 2);
|
1752
1774
|
|
1753
|
-
rb_define_method(rb_cGrnObject, "remove", rb_grn_object_remove,
|
1775
|
+
rb_define_method(rb_cGrnObject, "remove", rb_grn_object_remove, -1);
|
1754
1776
|
|
1755
1777
|
rb_define_method(rb_cGrnObject, "builtin?", rb_grn_object_builtin_p, 0);
|
1756
1778
|
rb_define_method(rb_cGrnObject, "table?", rb_grn_object_table_p, 0);
|
@@ -166,7 +166,7 @@ rb_grn_patricia_trie_s_create (int argc, VALUE *argv, VALUE klass)
|
|
166
166
|
grn_obj *key_type = NULL, *value_type = NULL, *table;
|
167
167
|
const char *name = NULL, *path = NULL;
|
168
168
|
unsigned name_size = 0;
|
169
|
-
|
169
|
+
grn_table_flags flags = GRN_OBJ_TABLE_PAT_KEY;
|
170
170
|
VALUE rb_table;
|
171
171
|
VALUE options, rb_context, rb_name, rb_path, rb_persistent;
|
172
172
|
VALUE rb_key_normalize, rb_key_with_sis, rb_key_type;
|
@@ -0,0 +1,164 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License version 2.1 as published by the Free Software Foundation.
|
8
|
+
|
9
|
+
This library is distributed in the hope that it will be useful,
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
Lesser General Public License for more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU Lesser General Public
|
15
|
+
License along with this library; if not, write to the Free Software
|
16
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include "rb-grn.h"
|
20
|
+
|
21
|
+
/*
|
22
|
+
* Document-module: Groonga::RequestCanceler
|
23
|
+
*
|
24
|
+
* This module provides API for canceling requests.
|
25
|
+
*/
|
26
|
+
|
27
|
+
VALUE rb_mGrnRequestCanceler;
|
28
|
+
|
29
|
+
/*
|
30
|
+
* Registers a request. The request can be canceled by
|
31
|
+
* {Groonga::RequestCanceler.cancel}.
|
32
|
+
*
|
33
|
+
* @example Register a request
|
34
|
+
* request_id = "request-29"
|
35
|
+
* Groonga::RequestCanceler.register(request_id)
|
36
|
+
*
|
37
|
+
* @overload register(request_id)
|
38
|
+
* @param request_id [String] The ID of request to be registered.
|
39
|
+
* @return [void]
|
40
|
+
*
|
41
|
+
* @since 6.0.2
|
42
|
+
*/
|
43
|
+
static VALUE
|
44
|
+
rb_grn_request_canceler_s_register (int argc, VALUE *argv, VALUE module)
|
45
|
+
{
|
46
|
+
VALUE rb_request_id;
|
47
|
+
VALUE rb_options;
|
48
|
+
VALUE rb_context;
|
49
|
+
const char *request_id;
|
50
|
+
unsigned int request_id_size;
|
51
|
+
grn_ctx *context;
|
52
|
+
|
53
|
+
rb_scan_args(argc, argv, "11", &rb_request_id, &rb_options);
|
54
|
+
rb_grn_scan_options(rb_options,
|
55
|
+
"context", &rb_context,
|
56
|
+
NULL);
|
57
|
+
context = rb_grn_context_ensure(&rb_context);
|
58
|
+
|
59
|
+
request_id = StringValuePtr(rb_request_id);
|
60
|
+
request_id_size = RSTRING_LEN(rb_request_id);
|
61
|
+
grn_request_canceler_register(context, request_id, request_id_size);
|
62
|
+
|
63
|
+
return Qnil;
|
64
|
+
}
|
65
|
+
|
66
|
+
/*
|
67
|
+
* Unregisters the specified request.
|
68
|
+
*
|
69
|
+
* @example Unregister a request by ID
|
70
|
+
* request_id = "request-29"
|
71
|
+
* Groonga::RequestCanceler.unregister(request_id)
|
72
|
+
*
|
73
|
+
* @overload unregister(request_id)
|
74
|
+
* @param request_id [String] The ID of request to be unregistered.
|
75
|
+
* @return [void]
|
76
|
+
*
|
77
|
+
* @since 6.0.2
|
78
|
+
*/
|
79
|
+
static VALUE
|
80
|
+
rb_grn_request_canceler_s_unregister (int argc, VALUE *argv, VALUE module)
|
81
|
+
{
|
82
|
+
VALUE rb_request_id;
|
83
|
+
VALUE rb_options;
|
84
|
+
VALUE rb_context;
|
85
|
+
const char *request_id;
|
86
|
+
unsigned int request_id_size;
|
87
|
+
grn_ctx *context;
|
88
|
+
|
89
|
+
rb_scan_args(argc, argv, "11", &rb_request_id, &rb_options);
|
90
|
+
rb_grn_scan_options(rb_options,
|
91
|
+
"context", &rb_context,
|
92
|
+
NULL);
|
93
|
+
context = rb_grn_context_ensure(&rb_context);
|
94
|
+
|
95
|
+
request_id = StringValuePtr(rb_request_id);
|
96
|
+
request_id_size = RSTRING_LEN(rb_request_id);
|
97
|
+
grn_request_canceler_unregister(context, request_id, request_id_size);
|
98
|
+
|
99
|
+
return Qnil;
|
100
|
+
}
|
101
|
+
|
102
|
+
/*
|
103
|
+
* Cancels the specified request.
|
104
|
+
*
|
105
|
+
* @example Cancels a request by ID
|
106
|
+
* request_id = "request-29"
|
107
|
+
* Groonga::RequestCanceler.cancel(request_id)
|
108
|
+
*
|
109
|
+
* @overload cancel(request_id)
|
110
|
+
* @param request_id [String] The ID of request to be canceled.
|
111
|
+
* @return [Boolean] `true` if the request is canceled, `false` otherwise.
|
112
|
+
*
|
113
|
+
* @since 6.0.2
|
114
|
+
*/
|
115
|
+
static VALUE
|
116
|
+
rb_grn_request_canceler_s_cancel (VALUE module, VALUE rb_request_id)
|
117
|
+
{
|
118
|
+
const char *request_id;
|
119
|
+
unsigned int request_id_size;
|
120
|
+
grn_bool canceled;
|
121
|
+
|
122
|
+
request_id = StringValuePtr(rb_request_id);
|
123
|
+
request_id_size = RSTRING_LEN(rb_request_id);
|
124
|
+
canceled = grn_request_canceler_cancel(request_id, request_id_size);
|
125
|
+
|
126
|
+
return CBOOL2RVAL(canceled);
|
127
|
+
}
|
128
|
+
|
129
|
+
/*
|
130
|
+
* Cancels all running requests.
|
131
|
+
*
|
132
|
+
* @example Cancels all requests
|
133
|
+
* Groonga::RequestCanceler.cancel_all
|
134
|
+
*
|
135
|
+
* @overload cancel_all
|
136
|
+
* @return [Boolean] `true` if one or more requests are canceled,
|
137
|
+
* `false` otherwise.
|
138
|
+
*
|
139
|
+
* @since 6.0.2
|
140
|
+
*/
|
141
|
+
static VALUE
|
142
|
+
rb_grn_request_canceler_s_cancel_all (VALUE module)
|
143
|
+
{
|
144
|
+
grn_bool canceled;
|
145
|
+
|
146
|
+
canceled = grn_request_canceler_cancel_all();
|
147
|
+
|
148
|
+
return CBOOL2RVAL(canceled);
|
149
|
+
}
|
150
|
+
|
151
|
+
void
|
152
|
+
rb_grn_init_request_canceler (VALUE mGrn)
|
153
|
+
{
|
154
|
+
rb_mGrnRequestCanceler = rb_define_module_under(mGrn, "RequestCanceler");
|
155
|
+
|
156
|
+
rb_define_singleton_method(rb_mGrnRequestCanceler, "register",
|
157
|
+
rb_grn_request_canceler_s_register, -1);
|
158
|
+
rb_define_singleton_method(rb_mGrnRequestCanceler, "unregister",
|
159
|
+
rb_grn_request_canceler_s_unregister, -1);
|
160
|
+
rb_define_singleton_method(rb_mGrnRequestCanceler, "cancel",
|
161
|
+
rb_grn_request_canceler_s_cancel, 1);
|
162
|
+
rb_define_singleton_method(rb_mGrnRequestCanceler, "cancel_all",
|
163
|
+
rb_grn_request_canceler_s_cancel_all, 0);
|
164
|
+
}
|