Class: UState::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/ustate/server/backends/tcp.rb,
lib/ustate/server.rb

Overview

Stolen from Thin

Defined Under Namespace

Modules: Backends Classes: Connection, Error, Graphite, Index

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Server

Returns a new instance of Server.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ustate/server.rb', line 29

def initialize(opts = {})
  # Backends
  @backends = []
  b = Backends::TCP.new opts.merge(server: self)
  b.server = self
  @backends << b

  @index = Index.new :server => self

  @log = Logger.new('ustate.log', 4, 134217728)
  @log.level = Logger::INFO  

  setup_signals
end

Instance Attribute Details

#aggregator(opts = {}) ⇒ Object



44
45
46
47
# File 'lib/ustate/server.rb', line 44

def aggregator(opts = {})
  require 'ustate/aggregator'
  @aggregator ||= UState::Aggregator.new(@index, opts.merge(server: self))
end

#backendsObject

Returns the value of attribute backends.



21
22
23
# File 'lib/ustate/server.rb', line 21

def backends
  @backends
end

#emailer(opts = {}) ⇒ Object



49
50
51
52
# File 'lib/ustate/server.rb', line 49

def emailer(opts = {})
  require 'ustate/emailer'
  @emailer ||= UState::Emailer.new(@index, opts.merge(server: self))
end

#graphite(opts = {}) ⇒ Object



54
55
56
57
# File 'lib/ustate/server.rb', line 54

def graphite(opts = {})
  require 'ustate/graphite'
  @graphite ||= UState::Graphite.new(@index, opts.merge(server: self))
end

#indexObject

Returns the value of attribute index.



22
23
24
# File 'lib/ustate/server.rb', line 22

def index
  @index
end

#logObject

Returns the value of attribute log.



27
28
29
# File 'lib/ustate/server.rb', line 27

def log
  @log
end

Instance Method Details

#setup_signalsObject



88
89
90
91
# File 'lib/ustate/server.rb', line 88

def setup_signals
  trap('INT') { stop! }
  trap('TERM') { stop }
end

#startObject



59
60
61
62
63
64
65
66
# File 'lib/ustate/server.rb', line 59

def start
  @index.start
 
  # Right now b.start blocks... should look into EM 
  @backends.map do |b|
    b.start
  end
end

#stopObject



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ustate/server.rb', line 68

def stop
  @backends.map do |b|
    if b.running?
      b.stop
    else
      stop!
    end
  end

  @index.stop
end

#stop!Object



80
81
82
83
84
85
86
# File 'lib/ustate/server.rb', line 80

def stop!
  @backends.map do |b|
    b.stop!
  end

  @index.stop!
end