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
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
1
  # Copyright (C) 2013-2014 Droonga Project
4
2
  #
5
3
  # This library is free software; you can redistribute it and/or
@@ -15,17 +13,21 @@
15
13
  # License along with this library; if not, write to the Free Software
16
14
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
15
 
18
- require "droonga/planner_plugin"
19
- require "droonga/plugin/planner/distributed_search_planner"
16
+ require "droonga/error"
17
+ require "droonga/status_code"
20
18
 
21
19
  module Droonga
22
- class SearchPlanner < Droonga::PlannerPlugin
23
- repository.register("search", self)
20
+ module ErrorMessages
21
+ class InternalServerError < ErrorMessage
22
+ STATUS_CODE = StatusCode::INTERNAL_SERVER_ERROR
23
+ end
24
+
25
+ class BadRequest < ErrorMessage
26
+ STATUS_CODE = StatusCode::BAD_REQUEST
27
+ end
24
28
 
25
- command :search
26
- def search(message)
27
- planner = DistributedSearchPlanner.new(message)
28
- planner.plan
29
+ class NotFound < ErrorMessage
30
+ STATUS_CODE = StatusCode::NOT_FOUND
29
31
  end
30
32
  end
31
33
  end
@@ -15,37 +15,38 @@
15
15
  # License along with this library; if not, write to the Free Software
16
16
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
 
18
- require "droonga/partition"
18
+ require "droonga/slice"
19
19
 
20
20
  module Droonga
21
21
  class Farm
22
- def initialize(name, loop, options={})
22
+ def initialize(name, catalog, loop, options={})
23
23
  @name = name
24
+ @catalog = catalog
24
25
  @loop = loop
25
26
  @options = options
26
- @partitions = {}
27
- partitions = Droonga.catalog.get_partitions(name)
28
- partitions.each do |partition_name, partition_options|
29
- partition = Droonga::Partition.new(@loop,
30
- @options.merge(partition_options))
31
- @partitions[partition_name] = partition
27
+ @slices = {}
28
+ slices = @catalog.slices(name)
29
+ slices.each do |slice_name, slice_options|
30
+ slice = Droonga::Slice.new(@loop,
31
+ @options.merge(slice_options))
32
+ @slices[slice_name] = slice
32
33
  end
33
34
  end
34
35
 
35
36
  def start
36
- @partitions.each_value do |partition|
37
- partition.start
37
+ @slices.each_value do |slice|
38
+ slice.start
38
39
  end
39
40
  end
40
41
 
41
42
  def shutdown
42
- @partitions.each_value do |partition|
43
- partition.shutdown
43
+ @slices.each_value do |slice|
44
+ slice.shutdown
44
45
  end
45
46
  end
46
47
 
47
- def process(partition_name, message)
48
- @partitions[partition_name].process(message)
48
+ def process(slice_name, message)
49
+ @slices[slice_name].process(message)
49
50
  end
50
51
  end
51
52
  end
@@ -16,10 +16,14 @@
16
16
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
 
18
18
  require "cool.io"
19
+
20
+ require "droonga/loggable"
19
21
  require "droonga/message_pack_packer"
20
22
 
21
23
  module Droonga
22
24
  class FluentMessageSender
25
+ include Loggable
26
+
23
27
  def initialize(loop, host, port)
24
28
  @loop = loop
25
29
  @host = host
@@ -27,39 +31,39 @@ module Droonga
27
31
  end
28
32
 
29
33
  def start
30
- $log.trace("#{log_tag}: start: start")
34
+ logger.trace("start: start")
31
35
  connect
32
- $log.trace("#{log_tag}: start: done")
36
+ logger.trace("start: done")
33
37
  end
34
38
 
35
39
  def shutdown
36
- $log.trace("#{log_tag}: shutdown: start")
40
+ logger.trace("shutdown: start")
37
41
  @socket.close unless @socket.closed?
38
- $log.trace("#{log_tag}: shutdown: done")
42
+ logger.trace("shutdown: done")
39
43
  end
40
44
 
41
45
  def send(tag, data)
42
- $log.trace("#{log_tag}: send: start")
46
+ logger.trace("send: start")
43
47
  connect if @socket.closed?
44
48
  fluent_message = [tag, Time.now.to_i, data]
45
49
  packed_fluent_message = MessagePackPacker.pack(fluent_message)
46
50
  @socket.write(packed_fluent_message)
47
51
  @loop.break_current_loop
48
- $log.trace("#{log_tag}: send: done")
52
+ logger.trace("send: done")
49
53
  end
50
54
 
51
55
  private
52
56
  def connect
53
- $log.trace("#{log_tag}: connect: start")
57
+ logger.trace("connect: start")
54
58
 
55
59
  log_write_complete = lambda do
56
- $log.trace("#{log_tag}: write completed")
60
+ logger.trace("write completed")
57
61
  end
58
62
  log_connect = lambda do
59
- $log.trace("#{log_tag}: connected to #{@host}:#{@port}")
63
+ logger.trace("connected to #{@host}:#{@port}")
60
64
  end
61
65
  log_failed = lambda do
62
- $log.error("#{log_tag}: failed to connect to #{@host}:#{@port}")
66
+ logger.error("failed to connect to #{@host}:#{@port}")
63
67
  end
64
68
 
65
69
  @socket = Coolio::TCPSocket.connect(@host, @port)
@@ -74,7 +78,7 @@ module Droonga
74
78
  end
75
79
  @loop.attach(@socket)
76
80
 
77
- $log.trace("#{log_tag}: connect: done")
81
+ logger.trace("connect: done")
78
82
  end
79
83
 
80
84
  def log_tag
@@ -15,45 +15,49 @@
15
15
  # License along with this library; if not, write to the Free Software
16
16
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
 
18
+ require "droonga/loggable"
18
19
  require "droonga/event_loop"
19
20
  require "droonga/fluent_message_sender"
20
21
 
21
22
  module Droonga
22
23
  class Forwarder
24
+ include Loggable
25
+
23
26
  def initialize(loop)
24
27
  @loop = loop
25
28
  @senders = {}
26
29
  end
27
30
 
28
31
  def start
29
- $log.trace("#{log_tag}: start: start")
30
- $log.trace("#{log_tag}: start: done")
32
+ logger.trace("start: start")
33
+ logger.trace("start: done")
31
34
  end
32
35
 
33
36
  def shutdown
34
- $log.trace("#{log_tag}: shutdown: start")
37
+ logger.trace("shutdown: start")
35
38
  @senders.each_value do |sender|
36
39
  sender.shutdown
37
40
  end
38
- $log.trace("#{log_tag}: shutdown: done")
41
+ logger.trace("shutdown: done")
39
42
  end
40
43
 
41
44
  def forward(message, destination)
42
- $log.trace("#{log_tag}: forward: start")
45
+ logger.trace("forward: start")
43
46
  command = destination["type"]
44
47
  receiver = destination["to"]
45
48
  arguments = destination["arguments"]
46
49
  output(receiver, message, command, arguments)
47
- $log.trace("#{log_tag}: forward: done")
50
+ logger.trace("forward: done")
48
51
  end
49
52
 
50
53
  private
51
54
  def output(receiver, message, command, arguments)
52
- $log.trace("#{log_tag}: output: start")
53
- unless receiver.is_a?(String) && command.is_a?(String)
54
- $log.trace("#{log_tag}: output: abort: invalid argument",
55
- :receiver => receiver,
56
- :command => command)
55
+ logger.trace("output: start")
56
+ # TODO: IMPROVE ME: Should not use "unless" and "and". It is confused.
57
+ unless receiver.is_a?(String) and command.is_a?(String)
58
+ logger.trace("output: abort: invalid argument",
59
+ :receiver => receiver,
60
+ :command => command)
57
61
  return
58
62
  end
59
63
  unless receiver =~ /\A(.*):(\d+)\/(.*?)(\?.+)?\z/
@@ -65,10 +69,10 @@ module Droonga
65
69
  params = $4
66
70
  sender = find_sender(host, port, params)
67
71
  unless sender
68
- $log.trace("#{log_tag}: output: abort: no sender",
69
- :host => host,
70
- :port => port,
71
- :params => params)
72
+ logger.trace("output: abort: no sender",
73
+ :host => host,
74
+ :port => port,
75
+ :params => params)
72
76
  return
73
77
  end
74
78
  override_message = {
@@ -78,10 +82,10 @@ module Droonga
78
82
  message = message.merge(override_message)
79
83
  output_tag = "#{tag}.message"
80
84
  log_info = "<#{receiver}>:<#{output_tag}>"
81
- $log.trace("#{log_tag}: output: post: start: #{log_info}")
85
+ logger.trace("output: post: start: #{log_info}")
82
86
  sender.send(output_tag, message)
83
- $log.trace("#{log_tag}: output: post: done: #{log_info}")
84
- $log.trace("#{log_tag}: output: done")
87
+ logger.trace("output: post: done: #{log_info}")
88
+ logger.trace("output: done")
85
89
  end
86
90
 
87
91
  def find_sender(host, port, params)
@@ -14,12 +14,16 @@
14
14
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
15
 
16
16
  require "droonga/pluggable"
17
+ require "droonga/loggable"
17
18
  require "droonga/plugin/metadata/input_message"
18
19
  require "droonga/plugin/metadata/handler_action"
20
+ require "droonga/error_messages"
19
21
 
20
22
  module Droonga
21
23
  class Handler
22
24
  extend Pluggable
25
+ include Loggable
26
+ include ErrorMessages
23
27
 
24
28
  class << self
25
29
  def message
@@ -31,12 +35,14 @@ module Droonga
31
35
  end
32
36
  end
33
37
 
34
- def initialize(name, context)
38
+ attr_reader :messenger
39
+ def initialize(name, context, messenger)
35
40
  @name = name
36
41
  @context = context
42
+ @messenger = messenger
37
43
  end
38
44
 
39
- def handle(message, messenger)
45
+ def handle(message)
40
46
  end
41
47
  end
42
48
  end
@@ -15,85 +15,106 @@
15
15
 
16
16
  require "groonga"
17
17
 
18
+ require "droonga/loggable"
18
19
  require "droonga/forwarder"
19
20
  require "droonga/handler_message"
20
21
  require "droonga/handler_messenger"
21
- require "droonga/handler"
22
+ require "droonga/step_runner"
22
23
 
23
24
  module Droonga
24
25
  class HandlerRunner
26
+ include Loggable
27
+
25
28
  def initialize(loop, options={})
26
29
  @loop = loop
27
30
  @options = options
28
31
  @name = options[:name]
32
+ @dataset_name = options[:dataset]
29
33
  @database_name = options[:database]
30
34
  prepare
31
35
  end
32
36
 
33
37
  def start
34
- $log.trace("#{log_tag}: start: start")
38
+ logger.trace("start: start")
35
39
  @forwarder.start
36
- $log.trace("#{log_tag}: start: done")
40
+ logger.trace("start: done")
37
41
  end
38
42
 
39
43
  def shutdown
40
- $log.trace("#{log_tag}: shutdown: start")
44
+ logger.trace("shutdown: start")
41
45
  @forwarder.shutdown
42
46
  if @database
43
47
  @database.close
44
48
  @context.close
45
49
  @database = @context = nil
46
50
  end
47
- $log.trace("#{log_tag}: shutdown: done")
51
+ logger.trace("shutdown: done")
48
52
  end
49
53
 
50
- def prefer_synchronous?(command)
51
- find_handler_class(command).action.synchronous?
54
+ def prefer_synchronous?(type)
55
+ find_handler_class(type).action.synchronous?
52
56
  end
53
57
 
54
- def processable?(command)
55
- not find_handler_class(command).nil?
58
+ def processable?(type)
59
+ not find_handler_class(type).nil?
56
60
  end
57
61
 
58
62
  def process(message)
59
- $log.trace("#{log_tag}: process: start")
60
- command = message["type"]
61
- handler_class = find_handler_class(command)
63
+ logger.trace("process: start")
64
+ type = message["type"]
65
+ handler_class = find_handler_class(type)
62
66
  if handler_class.nil?
63
- $log.trace("#{log_tag}: process: done: no handler: <#{command}>")
67
+ logger.trace("process: done: no handler: <#{type}>")
64
68
  return
65
69
  end
66
- process_command(handler_class, command, message)
67
- $log.trace("#{log_tag}: process: done: <#{command}>",
68
- :handler => handler_class)
70
+ process_type(handler_class, type, message)
71
+ logger.trace("process: done: <#{type}>",
72
+ :handler => handler_class)
69
73
  end
70
74
 
71
75
  private
72
76
  def prepare
73
- if @database_name && !@database_name.empty?
77
+ if @database_name and !@database_name.empty?
74
78
  @context = Groonga::Context.new
75
79
  @database = @context.open_database(@database_name)
76
80
  end
77
- @handler_classes = Handler.find_sub_classes(@options[:plugins] || [])
81
+ logger.debug("#{self.class.name}: activating plugins for the dataset \"#{@dataset_name}\": " +
82
+ "#{@options[:plugins].join(", ")}")
83
+ @step_runner = StepRunner.new(@options[:plugins] || [])
78
84
  @forwarder = Forwarder.new(@loop)
79
85
  end
80
86
 
81
- def find_handler_class(command)
82
- @handler_classes.find do |handler_class|
83
- handler_class.message.type == command
84
- end
87
+ def find_handler_class(type)
88
+ step_definition = @step_runner.find(type)
89
+ return nil if step_definition.nil?
90
+ step_definition.handler_class
85
91
  end
86
92
 
87
- def process_command(handler_class, command, raw_message)
93
+ def process_type(handler_class, type, raw_message)
88
94
  handler_message = HandlerMessage.new(raw_message)
89
95
  handler_message.validate
90
96
 
91
97
  messenger = HandlerMessenger.new(@forwarder, handler_message, @options)
92
- handler = handler_class.new(@name, @context)
98
+ handler = handler_class.new(@name, @context, messenger)
93
99
  begin
94
- handler.handle(handler_message, messenger)
95
- rescue MessageProcessingError => error
100
+ result = handler.handle(handler_message)
101
+ unless result.nil?
102
+ # XXX: It is just a workaround.
103
+ # Remove me when super step is introduced.
104
+ if handler.is_a?(Droonga::Plugins::Search::Handler)
105
+ messenger.emit(result)
106
+ else
107
+ messenger.emit("result" => result)
108
+ end
109
+ end
110
+ rescue ErrorMessage => error
96
111
  messenger.error(error.status_code, error.response_body)
112
+ rescue => error
113
+ logger.exception("failed to handle message", error)
114
+ internal_server_error =
115
+ ErrorMessages::InternalServerError.new("Unknown internal error")
116
+ messenger.error(internal_server_error.status_code,
117
+ internal_server_error.response_body)
97
118
  end
98
119
  end
99
120
 
@@ -36,16 +36,16 @@ module Droonga
36
36
  @raw_message["body"] = body
37
37
  end
38
38
 
39
- def command
39
+ def type
40
40
  @raw_message["type"]
41
41
  end
42
42
 
43
- def command=(command)
44
- original_command = @raw_message["type"]
45
- return if original_command == command
43
+ def type=(type)
44
+ original_type = @raw_message["type"]
45
+ return if original_type == type
46
46
  @raw_message["originalTypes"] ||= []
47
- @raw_message["originalTypes"] << original_command
48
- @raw_message["type"] = command
47
+ @raw_message["originalTypes"] << original_type
48
+ @raw_message["type"] = type
49
49
  end
50
50
  end
51
51
  end
@@ -13,24 +13,17 @@
13
13
  # License along with this library; if not, write to the Free Software
14
14
  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
15
 
16
- require "droonga/message_matcher"
16
+ require "droonga/logger"
17
17
 
18
18
  module Droonga
19
- class Command
20
- attr_reader :method_name
21
- # @option options [Array] :pattern The pattern to be matched
22
- # against message. If the pattern is matched to a message,
23
- # the command will be applied.
24
- #
25
- # @see MessageMatcher
26
- def initialize(method_name, options)
27
- @method_name = method_name
28
- @options = options
29
- @matcher = MessageMatcher.new(@options[:pattern])
19
+ module Loggable
20
+ private
21
+ def logger
22
+ @logger ||= Logger.new(:depth_offset => 1, :tag => log_tag)
30
23
  end
31
24
 
32
- def match?(message)
33
- @matcher.match?(message)
25
+ def log_tag
26
+ nil
34
27
  end
35
28
  end
36
29
  end