EventRouter is responsible to route events to a collector.
It has a list of MatchPattern and Collector pairs:
+----------------+ +-----------------+ | MatchPattern | | Collector | +----------------+ +-----------------+ | access.** ---------> type forward | | logs.** ---------> type copy | | archive.** ---------> type s3 | +----------------+ +-----------------+
EventRouter does:
1) receive an event at `emit` methods 2) match the event's tag with the MatchPatterns 3) forward the event to the corresponding Collector
Collector is either of Output, Filter or other EventRouter.
# File lib/fluent/event_router.rb, line 41 def initialize(default_collector, emit_error_handler) @match_rules = [] @match_cache = MatchCache.new @default_collector = default_collector @emit_error_handler = emit_error_handler @chain = NullOutputChain.instance end
called by Agent to add new match pattern and collector
# File lib/fluent/event_router.rb, line 73 def add_rule(pattern, collector) @match_rules << Rule.new(pattern, collector) end
# File lib/fluent/event_router.rb, line 77 def emit(tag, time, record) unless record.nil? emit_stream(tag, OneEventStream.new(time, record)) end end
# File lib/fluent/event_router.rb, line 83 def emit_array(tag, array) emit_stream(tag, ArrayEventStream.new(array)) end
# File lib/fluent/event_router.rb, line 93 def emit_error_event(tag, time, record, error) @emit_error_handler.emit_error_event(tag, time, record, error) end
# File lib/fluent/event_router.rb, line 87 def emit_stream(tag, es) match(tag).emit(tag, es, @chain) rescue => e @emit_error_handler.handle_emits_error(tag, es, e) end
Generated with the Darkfish Rdoc Generator 2.