Class: Droonga::Forwarder

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/droonga/forwarder.rb

Defined Under Namespace

Classes: AlreadyShutdown

Constant Summary collapse

DEFAULT_AUTO_CLOSE_TIMEOUT_SECONDS =
60

Instance Method Summary collapse

Constructor Details

#initialize(loop, options = {}) ⇒ Forwarder

Returns a new instance of Forwarder.



33
34
35
36
37
38
39
40
# File 'lib/droonga/forwarder.rb', line 33

def initialize(loop, options={})
  @loop = loop
  @senders = {}
  @auto_close_timers = {}
  @shutting_down = false
  @auto_close_timeout = options[:auto_close_timeout] ||
                          DEFAULT_AUTO_CLOSE_TIMEOUT_SECONDS
end

Instance Method Details

#forward(message, destination) ⇒ Object

Raises:



54
55
56
57
58
59
60
61
62
# File 'lib/droonga/forwarder.rb', line 54

def forward(message, destination)
  logger.trace("forward: start", :message => message)
  raise AlreadyShutdown.new if @shutting_down
  command = destination["type"]
  receiver = destination["to"]
  arguments = destination["arguments"]
  output(receiver, message, command, arguments)
  logger.trace("forward: done")
end

#refresh_all_connectionsObject



79
80
81
82
83
# File 'lib/droonga/forwarder.rb', line 79

def refresh_all_connections
  logger.trace("refresh_all_connections: start")
  clear_senders
  logger.trace("refresh_all_connections: done")
end

#refresh_connection_for(name) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/droonga/forwarder.rb', line 64

def refresh_connection_for(name)
  logger.trace("refresh_connection_for(#{name}): start")
  sender = @senders[name]
  if sender
    sender.shutdown
    @senders.delete(name)
  end
  timer = @auto_close_timers[name]
  if timer
    timer.detach
    @auto_close_timers.delete(name)
  end
  logger.trace("refresh_connection_for(#{name}): done")
end

#shutdownObject



47
48
49
50
51
52
# File 'lib/droonga/forwarder.rb', line 47

def shutdown
  logger.trace("shutdown: start")
  @shutting_down = true
  clear_senders
  logger.trace("shutdown: done")
end

#startObject



42
43
44
45
# File 'lib/droonga/forwarder.rb', line 42

def start
  logger.trace("start: start")
  logger.trace("start: done")
end