Class: ProxyMgr::ServiceManager
- Inherits:
-
Object
- Object
- ProxyMgr::ServiceManager
show all
- Includes:
- Logging
- Defined in:
- lib/proxymgr/service_manager.rb
Instance Method Summary
collapse
Methods included from Logging
disable!, #logger, logger
Constructor Details
Returns a new instance of ServiceManager.
5
6
7
8
9
10
11
|
# File 'lib/proxymgr/service_manager.rb', line 5
def initialize(sink)
@services = {}
@sink = sink
@service_mutex = Mutex.new
@sink_mutex = Mutex.new
end
|
Instance Method Details
#delete_service(name) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/proxymgr/service_manager.rb', line 30
def delete_service(name)
@service_mutex.synchronize do
svc = @services.delete(name)
svc.shutdown if svc
end
update_backends
end
|
#shutdown ⇒ Object
42
43
44
45
|
# File 'lib/proxymgr/service_manager.rb', line 42
def shutdown
@sink.shutdown
@services.each { |_name, watcher| watcher.shutdown }
end
|
#update_backends ⇒ Object
38
39
40
|
# File 'lib/proxymgr/service_manager.rb', line 38
def update_backends
@sink_mutex.synchronize { @sink.update_backends @services }
end
|
#update_service(name, config) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/proxymgr/service_manager.rb', line 13
def update_service(name, config)
logger.info "Received service: #{name}"
type = config.delete('type')
begin
klass = watcher_class(type)
@service_mutex.synchronize do
@services[name].shutdown if @services[name]
w = @services[name] = klass.new(name, config, self)
w.watch if w.valid?
end
rescue NameError
logger.warn "Could not find implementation for #{type}. Not adding service #{name}"
nil
end
end
|