fluent-plugin-droonga 0.9.9 → 1.0.0

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.
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