fluent-plugin-droonga 0.9.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/.dir-locals.el +3 -0
  3. data/.travis.yml +6 -2
  4. data/README.md +6 -7
  5. data/Rakefile +23 -6
  6. data/fluent-plugin-droonga.gemspec +2 -2
  7. data/lib/droonga/adapter.rb +12 -3
  8. data/lib/droonga/adapter_runner.rb +28 -23
  9. data/lib/droonga/catalog/base.rb +7 -111
  10. data/lib/droonga/catalog/dataset.rb +13 -25
  11. data/lib/droonga/catalog/errors.rb +94 -0
  12. data/lib/droonga/catalog/schema.rb +277 -0
  13. data/lib/droonga/catalog/version1.rb +404 -0
  14. data/lib/droonga/catalog/version2.rb +160 -0
  15. data/lib/droonga/catalog_loader.rb +27 -4
  16. data/lib/droonga/catalog_observer.rb +44 -6
  17. data/lib/droonga/collector.rb +12 -10
  18. data/lib/droonga/{handler_plugin.rb → collector_message.rb} +47 -20
  19. data/lib/droonga/collector_runner.rb +64 -0
  20. data/lib/droonga/collectors.rb +18 -0
  21. data/lib/droonga/{catalog.rb → collectors/add.rb} +9 -7
  22. data/lib/droonga/{command_repository.rb → collectors/and.rb} +7 -14
  23. data/lib/droonga/collectors/sum.rb +26 -0
  24. data/lib/droonga/dispatcher.rb +74 -41
  25. data/lib/droonga/distributed_command_planner.rb +2 -2
  26. data/lib/droonga/engine.rb +13 -5
  27. data/lib/droonga/{message_processing_error.rb → error.rb} +33 -12
  28. data/lib/droonga/{plugin/planner/search.rb → error_messages.rb} +12 -10
  29. data/lib/droonga/farm.rb +15 -14
  30. data/lib/droonga/fluent_message_sender.rb +15 -11
  31. data/lib/droonga/forwarder.rb +22 -18
  32. data/lib/droonga/handler.rb +8 -2
  33. data/lib/droonga/handler_runner.rb +47 -26
  34. data/lib/droonga/input_message.rb +6 -6
  35. data/lib/droonga/{command.rb → loggable.rb} +7 -14
  36. data/lib/droonga/logger.rb +56 -15
  37. data/lib/droonga/message_matcher.rb +12 -7
  38. data/lib/droonga/message_pusher.rb +8 -4
  39. data/lib/droonga/message_receiver.rb +11 -9
  40. data/lib/droonga/output_message.rb +2 -0
  41. data/lib/droonga/planner.rb +21 -10
  42. data/lib/droonga/plugin.rb +15 -0
  43. data/lib/droonga/plugin/metadata/{adapter_message.rb → adapter_input_message.rb} +6 -14
  44. data/lib/droonga/plugin/metadata/adapter_output_message.rb +39 -0
  45. data/lib/droonga/plugin/metadata/collector_message.rb +39 -0
  46. data/lib/droonga/plugin/metadata/input_message.rb +15 -0
  47. data/lib/droonga/plugin_loader.rb +33 -25
  48. data/lib/droonga/plugin_registry.rb +9 -1
  49. data/lib/droonga/plugins/basic.rb +54 -0
  50. data/lib/droonga/plugins/crud.rb +36 -15
  51. data/lib/droonga/plugins/error.rb +5 -4
  52. data/lib/droonga/plugins/groonga.rb +9 -6
  53. data/lib/droonga/plugins/groonga/column_create.rb +10 -5
  54. data/lib/droonga/plugins/groonga/generic_command.rb +2 -8
  55. data/lib/droonga/plugins/groonga/generic_response.rb +2 -2
  56. data/lib/droonga/plugins/groonga/select.rb +2 -2
  57. data/lib/droonga/plugins/groonga/table_create.rb +9 -4
  58. data/lib/droonga/plugins/groonga/table_remove.rb +10 -5
  59. data/lib/droonga/plugins/search.rb +106 -5
  60. data/lib/droonga/plugins/search/distributed_search_planner.rb +398 -0
  61. data/lib/droonga/plugins/watch.rb +41 -20
  62. data/lib/droonga/processor.rb +12 -9
  63. data/lib/droonga/{plugin/collector/basic.rb → reducer.rb} +36 -50
  64. data/lib/droonga/replier.rb +7 -4
  65. data/lib/droonga/searcher.rb +40 -37
  66. data/lib/droonga/server.rb +8 -6
  67. data/lib/droonga/session.rb +17 -7
  68. data/lib/droonga/single_step.rb +53 -0
  69. data/lib/droonga/{plugin/planner/watch.rb → single_step_definition.rb} +27 -26
  70. data/lib/droonga/{partition.rb → slice.rb} +23 -12
  71. data/lib/droonga/status_code.rb +25 -0
  72. data/lib/droonga/step_runner.rb +63 -0
  73. data/lib/droonga/watch_schema.rb +7 -3
  74. data/lib/droonga/watcher.rb +4 -4
  75. data/lib/droonga/worker.rb +6 -6
  76. data/lib/fluent/plugin/out_droonga.rb +27 -2
  77. data/sample/cluster/catalog.json +33 -32
  78. data/test/command/config/default/catalog.json +72 -45
  79. data/test/command/config/version1/catalog.json +68 -0
  80. data/test/command/config/version1/fluentd.conf +11 -0
  81. data/test/command/suite/message/error/missing-dataset.expected +1 -1
  82. data/test/command/suite/message/error/unknown-dataset.expected +1 -1
  83. data/test/command/suite/message/error/unknown-type.expected +13 -0
  84. data/test/command/suite/message/error/{unknown-command.test → unknown-type.test} +1 -1
  85. data/test/command/suite/search/error/missing-source-parameter.expected +1 -1
  86. data/test/command/suite/search/error/unknown-source.expected +15 -3
  87. data/test/command/suite/watch/subscribe.expected +1 -3
  88. data/test/command/suite/watch/unsubscribe.expected +1 -3
  89. data/test/performance/watch/catalog.json +1 -0
  90. data/test/unit/catalog/test_dataset.rb +16 -358
  91. data/test/unit/catalog/test_schema.rb +285 -0
  92. data/test/unit/catalog/test_version1.rb +222 -28
  93. data/test/unit/catalog/test_version2.rb +155 -0
  94. data/test/unit/fixtures/catalog/version2.json +62 -0
  95. data/test/unit/helper/distributed_search_planner_helper.rb +2 -2
  96. data/test/unit/plugins/crud/test_add.rb +13 -13
  97. data/test/unit/plugins/groonga/test_column_create.rb +14 -11
  98. data/test/unit/plugins/groonga/test_table_create.rb +4 -9
  99. data/test/unit/plugins/groonga/test_table_remove.rb +4 -9
  100. data/test/unit/{plugin/planner/search_planner → plugins/search/planner}/test_basic.rb +0 -0
  101. data/test/unit/{plugin/planner/search_planner → plugins/search/planner}/test_group_by.rb +0 -0
  102. data/test/unit/{plugin/planner/search_planner → plugins/search/planner}/test_output.rb +0 -0
  103. data/test/unit/{plugin/planner/search_planner → plugins/search/planner}/test_sort_by.rb +0 -0
  104. data/test/unit/{plugin/collector/test_search.rb → plugins/search/test_collector.rb} +40 -39
  105. data/test/unit/plugins/{test_search.rb → search/test_handler.rb} +6 -5
  106. data/test/unit/{plugin/planner/test_search.rb → plugins/search/test_planner.rb} +3 -3
  107. data/test/unit/{plugin/collector → plugins}/test_basic.rb +68 -50
  108. data/test/unit/plugins/test_groonga.rb +2 -15
  109. data/test/unit/plugins/test_watch.rb +25 -22
  110. data/test/unit/test_message_matcher.rb +29 -6
  111. data/test/unit/test_output.rb +4 -0
  112. metadata +58 -50
  113. data/lib/droonga/collector_plugin.rb +0 -50
  114. data/lib/droonga/legacy_pluggable.rb +0 -66
  115. data/lib/droonga/legacy_plugin.rb +0 -57
  116. data/lib/droonga/legacy_plugin_repository.rb +0 -54
  117. data/lib/droonga/planner_plugin.rb +0 -54
  118. data/lib/droonga/plugin/collector/search.rb +0 -98
  119. data/lib/droonga/plugin/planner/crud.rb +0 -49
  120. data/lib/droonga/plugin/planner/distributed_search_planner.rb +0 -393
  121. data/lib/droonga/plugin/planner/groonga.rb +0 -54
  122. data/lib/droonga/plugin_registerable.rb +0 -75
  123. data/test/command/suite/message/error/unknown-command.expected +0 -13
  124. data/test/unit/test_command_repository.rb +0 -39
  125. data/test/unit/test_legacy_plugin.rb +0 -50
  126. data/test/unit/test_legacy_plugin_repository.rb +0 -89
@@ -60,6 +60,10 @@ module OutputStub
60
60
  @engine = Engine.new(@response)
61
61
  end
62
62
 
63
+ def shutdown
64
+ @engine.shutdown
65
+ end
66
+
63
67
  def create_logger(tag, options)
64
68
  Logger.new(tag, options)
65
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-droonga
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Droonga Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-09 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -178,13 +178,14 @@ dependencies:
178
178
  - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
- description: Droonga(distributed Groonga) plugin for Fluent event collector
181
+ description: Droonga (distributed Groonga) plugin for Fluent event collector
182
182
  email:
183
183
  - droonga@groonga.org
184
184
  executables: []
185
185
  extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
+ - .dir-locals.el
188
189
  - .gitignore
189
190
  - .travis.yml
190
191
  - .yardopts
@@ -202,20 +203,27 @@ files:
202
203
  - fluent-plugin-droonga.gemspec
203
204
  - lib/droonga/adapter.rb
204
205
  - lib/droonga/adapter_runner.rb
205
- - lib/droonga/catalog.rb
206
206
  - lib/droonga/catalog/base.rb
207
207
  - lib/droonga/catalog/dataset.rb
208
+ - lib/droonga/catalog/errors.rb
209
+ - lib/droonga/catalog/schema.rb
208
210
  - lib/droonga/catalog/version1.rb
211
+ - lib/droonga/catalog/version2.rb
209
212
  - lib/droonga/catalog_loader.rb
210
213
  - lib/droonga/catalog_observer.rb
211
214
  - lib/droonga/collector.rb
212
- - lib/droonga/collector_plugin.rb
213
- - lib/droonga/command.rb
214
- - lib/droonga/command_repository.rb
215
+ - lib/droonga/collector_message.rb
216
+ - lib/droonga/collector_runner.rb
217
+ - lib/droonga/collectors.rb
218
+ - lib/droonga/collectors/add.rb
219
+ - lib/droonga/collectors/and.rb
220
+ - lib/droonga/collectors/sum.rb
215
221
  - lib/droonga/dispatcher.rb
216
222
  - lib/droonga/distributed_command_planner.rb
217
223
  - lib/droonga/distributor.rb
218
224
  - lib/droonga/engine.rb
225
+ - lib/droonga/error.rb
226
+ - lib/droonga/error_messages.rb
219
227
  - lib/droonga/event_loop.rb
220
228
  - lib/droonga/farm.rb
221
229
  - lib/droonga/fluent_message_sender.rb
@@ -223,37 +231,26 @@ files:
223
231
  - lib/droonga/handler.rb
224
232
  - lib/droonga/handler_message.rb
225
233
  - lib/droonga/handler_messenger.rb
226
- - lib/droonga/handler_plugin.rb
227
234
  - lib/droonga/handler_runner.rb
228
235
  - lib/droonga/input_message.rb
229
- - lib/droonga/legacy_pluggable.rb
230
- - lib/droonga/legacy_plugin.rb
231
- - lib/droonga/legacy_plugin_repository.rb
236
+ - lib/droonga/loggable.rb
232
237
  - lib/droonga/logger.rb
233
238
  - lib/droonga/message_matcher.rb
234
239
  - lib/droonga/message_pack_packer.rb
235
- - lib/droonga/message_processing_error.rb
236
240
  - lib/droonga/message_pusher.rb
237
241
  - lib/droonga/message_receiver.rb
238
242
  - lib/droonga/output_message.rb
239
- - lib/droonga/partition.rb
240
243
  - lib/droonga/planner.rb
241
- - lib/droonga/planner_plugin.rb
242
244
  - lib/droonga/pluggable.rb
243
245
  - lib/droonga/plugin.rb
244
- - lib/droonga/plugin/collector/basic.rb
245
- - lib/droonga/plugin/collector/search.rb
246
- - lib/droonga/plugin/metadata/adapter_message.rb
246
+ - lib/droonga/plugin/metadata/adapter_input_message.rb
247
+ - lib/droonga/plugin/metadata/adapter_output_message.rb
248
+ - lib/droonga/plugin/metadata/collector_message.rb
247
249
  - lib/droonga/plugin/metadata/handler_action.rb
248
250
  - lib/droonga/plugin/metadata/input_message.rb
249
- - lib/droonga/plugin/planner/crud.rb
250
- - lib/droonga/plugin/planner/distributed_search_planner.rb
251
- - lib/droonga/plugin/planner/groonga.rb
252
- - lib/droonga/plugin/planner/search.rb
253
- - lib/droonga/plugin/planner/watch.rb
254
251
  - lib/droonga/plugin_loader.rb
255
- - lib/droonga/plugin_registerable.rb
256
252
  - lib/droonga/plugin_registry.rb
253
+ - lib/droonga/plugins/basic.rb
257
254
  - lib/droonga/plugins/crud.rb
258
255
  - lib/droonga/plugins/error.rb
259
256
  - lib/droonga/plugins/groonga.rb
@@ -264,13 +261,20 @@ files:
264
261
  - lib/droonga/plugins/groonga/table_create.rb
265
262
  - lib/droonga/plugins/groonga/table_remove.rb
266
263
  - lib/droonga/plugins/search.rb
264
+ - lib/droonga/plugins/search/distributed_search_planner.rb
267
265
  - lib/droonga/plugins/watch.rb
268
266
  - lib/droonga/processor.rb
267
+ - lib/droonga/reducer.rb
269
268
  - lib/droonga/replier.rb
270
269
  - lib/droonga/searcher.rb
271
270
  - lib/droonga/searcher/mecab_filter.rb
272
271
  - lib/droonga/server.rb
273
272
  - lib/droonga/session.rb
273
+ - lib/droonga/single_step.rb
274
+ - lib/droonga/single_step_definition.rb
275
+ - lib/droonga/slice.rb
276
+ - lib/droonga/status_code.rb
277
+ - lib/droonga/step_runner.rb
274
278
  - lib/droonga/sweeper.rb
275
279
  - lib/droonga/test.rb
276
280
  - lib/droonga/test/stub_handler.rb
@@ -290,6 +294,8 @@ files:
290
294
  - sample/mecab_filter/search_without_mecab_filter.json
291
295
  - test/command/config/default/catalog.json
292
296
  - test/command/config/default/fluentd.conf
297
+ - test/command/config/version1/catalog.json
298
+ - test/command/config/version1/fluentd.conf
293
299
  - test/command/fixture/documents.jsons
294
300
  - test/command/fixture/event.jsons
295
301
  - test/command/fixture/user-table-array.jsons
@@ -331,10 +337,10 @@ files:
331
337
  - test/command/suite/groonga/table_remove/unknown-table.test
332
338
  - test/command/suite/message/error/missing-dataset.expected
333
339
  - test/command/suite/message/error/missing-dataset.test
334
- - test/command/suite/message/error/unknown-command.expected
335
- - test/command/suite/message/error/unknown-command.test
336
340
  - test/command/suite/message/error/unknown-dataset.expected
337
341
  - test/command/suite/message/error/unknown-dataset.test
342
+ - test/command/suite/message/error/unknown-type.expected
343
+ - test/command/suite/message/error/unknown-type.test
338
344
  - test/command/suite/search/attributes/array.expected
339
345
  - test/command/suite/search/attributes/array.test
340
346
  - test/command/suite/search/attributes/hash.expected
@@ -395,9 +401,12 @@ files:
395
401
  - test/performance/watch/fluentd.conf
396
402
  - test/performance/watch/subscribe.json
397
403
  - test/unit/catalog/test_dataset.rb
404
+ - test/unit/catalog/test_schema.rb
398
405
  - test/unit/catalog/test_version1.rb
406
+ - test/unit/catalog/test_version2.rb
399
407
  - test/unit/fixtures/array.grn
400
408
  - test/unit/fixtures/catalog/version1.json
409
+ - test/unit/fixtures/catalog/version2.json
401
410
  - test/unit/fixtures/document.grn
402
411
  - test/unit/fixtures/reference/array.grn
403
412
  - test/unit/fixtures/reference/hash.grn
@@ -408,26 +417,23 @@ files:
408
417
  - test/unit/helper/sandbox.rb
409
418
  - test/unit/helper/stub_worker.rb
410
419
  - test/unit/helper/watch_helper.rb
411
- - test/unit/plugin/collector/test_basic.rb
412
- - test/unit/plugin/collector/test_search.rb
413
- - test/unit/plugin/planner/search_planner/test_basic.rb
414
- - test/unit/plugin/planner/search_planner/test_group_by.rb
415
- - test/unit/plugin/planner/search_planner/test_output.rb
416
- - test/unit/plugin/planner/search_planner/test_sort_by.rb
417
- - test/unit/plugin/planner/test_search.rb
418
420
  - test/unit/plugins/crud/test_add.rb
419
421
  - test/unit/plugins/groonga/select/test_adapter_input.rb
420
422
  - test/unit/plugins/groonga/select/test_adapter_output.rb
421
423
  - test/unit/plugins/groonga/test_column_create.rb
422
424
  - test/unit/plugins/groonga/test_table_create.rb
423
425
  - test/unit/plugins/groonga/test_table_remove.rb
426
+ - test/unit/plugins/search/planner/test_basic.rb
427
+ - test/unit/plugins/search/planner/test_group_by.rb
428
+ - test/unit/plugins/search/planner/test_output.rb
429
+ - test/unit/plugins/search/planner/test_sort_by.rb
430
+ - test/unit/plugins/search/test_collector.rb
431
+ - test/unit/plugins/search/test_handler.rb
432
+ - test/unit/plugins/search/test_planner.rb
433
+ - test/unit/plugins/test_basic.rb
424
434
  - test/unit/plugins/test_groonga.rb
425
- - test/unit/plugins/test_search.rb
426
435
  - test/unit/plugins/test_watch.rb
427
436
  - test/unit/run-test.rb
428
- - test/unit/test_command_repository.rb
429
- - test/unit/test_legacy_plugin.rb
430
- - test/unit/test_legacy_plugin_repository.rb
431
437
  - test/unit/test_message_matcher.rb
432
438
  - test/unit/test_message_pack_packer.rb
433
439
  - test/unit/test_output.rb
@@ -457,10 +463,12 @@ rubyforge_project:
457
463
  rubygems_version: 2.0.14
458
464
  signing_key:
459
465
  specification_version: 4
460
- summary: Droonga(distributed Groonga) plugin for Fluent event collector
466
+ summary: Droonga (distributed Groonga) plugin for Fluent event collector
461
467
  test_files:
462
468
  - test/command/config/default/catalog.json
463
469
  - test/command/config/default/fluentd.conf
470
+ - test/command/config/version1/catalog.json
471
+ - test/command/config/version1/fluentd.conf
464
472
  - test/command/fixture/documents.jsons
465
473
  - test/command/fixture/event.jsons
466
474
  - test/command/fixture/user-table-array.jsons
@@ -502,10 +510,10 @@ test_files:
502
510
  - test/command/suite/groonga/table_remove/unknown-table.test
503
511
  - test/command/suite/message/error/missing-dataset.expected
504
512
  - test/command/suite/message/error/missing-dataset.test
505
- - test/command/suite/message/error/unknown-command.expected
506
- - test/command/suite/message/error/unknown-command.test
507
513
  - test/command/suite/message/error/unknown-dataset.expected
508
514
  - test/command/suite/message/error/unknown-dataset.test
515
+ - test/command/suite/message/error/unknown-type.expected
516
+ - test/command/suite/message/error/unknown-type.test
509
517
  - test/command/suite/search/attributes/array.expected
510
518
  - test/command/suite/search/attributes/array.test
511
519
  - test/command/suite/search/attributes/hash.expected
@@ -566,9 +574,12 @@ test_files:
566
574
  - test/performance/watch/fluentd.conf
567
575
  - test/performance/watch/subscribe.json
568
576
  - test/unit/catalog/test_dataset.rb
577
+ - test/unit/catalog/test_schema.rb
569
578
  - test/unit/catalog/test_version1.rb
579
+ - test/unit/catalog/test_version2.rb
570
580
  - test/unit/fixtures/array.grn
571
581
  - test/unit/fixtures/catalog/version1.json
582
+ - test/unit/fixtures/catalog/version2.json
572
583
  - test/unit/fixtures/document.grn
573
584
  - test/unit/fixtures/reference/array.grn
574
585
  - test/unit/fixtures/reference/hash.grn
@@ -579,26 +590,23 @@ test_files:
579
590
  - test/unit/helper/sandbox.rb
580
591
  - test/unit/helper/stub_worker.rb
581
592
  - test/unit/helper/watch_helper.rb
582
- - test/unit/plugin/collector/test_basic.rb
583
- - test/unit/plugin/collector/test_search.rb
584
- - test/unit/plugin/planner/search_planner/test_basic.rb
585
- - test/unit/plugin/planner/search_planner/test_group_by.rb
586
- - test/unit/plugin/planner/search_planner/test_output.rb
587
- - test/unit/plugin/planner/search_planner/test_sort_by.rb
588
- - test/unit/plugin/planner/test_search.rb
589
593
  - test/unit/plugins/crud/test_add.rb
590
594
  - test/unit/plugins/groonga/select/test_adapter_input.rb
591
595
  - test/unit/plugins/groonga/select/test_adapter_output.rb
592
596
  - test/unit/plugins/groonga/test_column_create.rb
593
597
  - test/unit/plugins/groonga/test_table_create.rb
594
598
  - test/unit/plugins/groonga/test_table_remove.rb
599
+ - test/unit/plugins/search/planner/test_basic.rb
600
+ - test/unit/plugins/search/planner/test_group_by.rb
601
+ - test/unit/plugins/search/planner/test_output.rb
602
+ - test/unit/plugins/search/planner/test_sort_by.rb
603
+ - test/unit/plugins/search/test_collector.rb
604
+ - test/unit/plugins/search/test_handler.rb
605
+ - test/unit/plugins/search/test_planner.rb
606
+ - test/unit/plugins/test_basic.rb
595
607
  - test/unit/plugins/test_groonga.rb
596
- - test/unit/plugins/test_search.rb
597
608
  - test/unit/plugins/test_watch.rb
598
609
  - test/unit/run-test.rb
599
- - test/unit/test_command_repository.rb
600
- - test/unit/test_legacy_plugin.rb
601
- - test/unit/test_legacy_plugin_repository.rb
602
610
  - test/unit/test_message_matcher.rb
603
611
  - test/unit/test_message_pack_packer.rb
604
612
  - test/unit/test_output.rb
@@ -1,50 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2013 Droonga Project
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
-
18
- require "droonga/legacy_plugin"
19
-
20
- module Droonga
21
- class CollectorPlugin < LegacyPlugin
22
- extend PluginRegisterable
23
-
24
- attr_reader :task, :input_name, :step, :output_values, :body, :output_names
25
- def initialize
26
- super()
27
- end
28
-
29
- def process(command, message)
30
- return false unless message.is_a? Hash
31
- @task = message["task"]
32
- return false unless @task.is_a? Hash
33
- @step = @task["step"]
34
- return false unless @step.is_a? Hash
35
- @output_values = @task["values"]
36
- @body = @step["body"]
37
- @output_names = @step["outputs"]
38
- @id = message["id"]
39
- @value = message["value"]
40
- @input_name = message["name"]
41
- super(command, @value)
42
- true
43
- end
44
-
45
- # TODO: consider better name
46
- def emit(name, value)
47
- @output_values[name] = value
48
- end
49
- end
50
- end
@@ -1,66 +0,0 @@
1
- # Copyright (C) 2013-2014 Droonga Project
2
- #
3
- # This library is free software; you can redistribute it and/or
4
- # modify it under the terms of the GNU Lesser General Public
5
- # License version 2.1 as published by the Free Software Foundation.
6
- #
7
- # This library is distributed in the hope that it will be useful,
8
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10
- # Lesser General Public License for more details.
11
- #
12
- # You should have received a copy of the GNU Lesser General Public
13
- # License along with this library; if not, write to the Free Software
14
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
-
16
- module Droonga
17
- module LegacyPluggable
18
- class UnknownPlugin < StandardError
19
- attr_reader :command
20
-
21
- def initialize(command)
22
- @command = command
23
- end
24
- end
25
-
26
- def shutdown
27
- $log.trace("#{log_tag}: shutdown: plugin: start")
28
- @plugins.each do |plugin|
29
- plugin.shutdown
30
- end
31
- $log.trace("#{log_tag}: shutdown: plugin: done")
32
- end
33
-
34
- def processable?(command)
35
- not find_plugin(command).nil?
36
- end
37
-
38
- def process(command, *arguments)
39
- plugin = find_plugin(command)
40
- $log.trace("#{log_tag}: process: start: <#{command}>",
41
- :plugin => plugin.class)
42
- raise UnknownPlugin.new(command) if plugin.nil?
43
- result = plugin.process(command, *arguments)
44
- $log.trace("#{log_tag}: process: done: <#{command}>",
45
- :plugin => plugin.class)
46
- result
47
- end
48
-
49
- private
50
- def load_plugins(names)
51
- @plugins = names.collect do |name|
52
- plugin = instantiate_plugin(name)
53
- if plugin.nil?
54
- raise "unknown plugin: <#{name}>: TODO: improve error handling"
55
- end
56
- plugin
57
- end
58
- end
59
-
60
- def find_plugin(command)
61
- @plugins.find do |plugin|
62
- plugin.processable?(command)
63
- end
64
- end
65
- end
66
- end
@@ -1,57 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2013 Droonga Project
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
-
18
- require "droonga/plugin_registerable"
19
-
20
- module Droonga
21
- class LegacyPlugin
22
- def initialize
23
- end
24
-
25
- def start
26
- end
27
-
28
- def shutdown
29
- end
30
-
31
- def processable?(command)
32
- self.class.processable?(command)
33
- end
34
-
35
- def process(command, *arguments)
36
- run_command(command, *arguments)
37
- rescue => exception
38
- process_error(command, exception, arguments)
39
- end
40
-
41
- private
42
- def run_command(command, *arguments)
43
- if command.is_a?(Command)
44
- method_name = command.method_name
45
- else
46
- method_name = self.class.method_name(command)
47
- end
48
- __send__(method_name, *arguments)
49
- end
50
-
51
- def process_error(command, error, arguments)
52
- Logger.error("error while processing: <#{command}>",
53
- error,
54
- :arguments => arguments)
55
- end
56
- end
57
- end