Class: Puggernaut::Server

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/puggernaut/server.rb,
lib/puggernaut/server/tcp.rb,
lib/puggernaut/server/http.rb,
lib/puggernaut/server/channel.rb

Defined Under Namespace

Modules: Http, Tcp Classes: Channel

Instance Method Summary collapse

Methods included from Logger

#logger, logger

Constructor Details

#initialize(http_port = 8100, tcp_port = http_port.to_i+1) ⇒ Server

Returns a new instance of Server.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/puggernaut/server.rb', line 10

def initialize(http_port=8100, tcp_port=http_port.to_i+1)
  puts "\nPuggernaut is starting on #{http_port} (HTTP) and #{tcp_port} (TCP)"
  puts "*snort*\n\n"
  
  errors = 0
  
  while errors <= 10
    begin
      Channel.channels = []
      GC.start
      EM.epoll if EM.epoll?
      EM.run do
        logger.info "Server#initialize - Starting HTTP - #{http_port}"
        EM.start_server '0.0.0.0', http_port, Http
        
        logger.info "Server#initialize - Starting TCP - #{tcp_port}"
        EM.start_server '0.0.0.0', tcp_port, Tcp
        
        errors = 0
      end
    rescue Interrupt
      logger.info "Server#initialize - Shutting down"
      exit
    rescue
      errors += 1
      logger.error "Server#initialize - Error - #{$!.message}"
      logger.error "\t" + $!.backtrace.join("\n\t")
    end
  end
  
  puts "Exiting because of too many consecutive errors :("
  puts "Check #{Dir.pwd}/log/puggernaut.log\n\n"
end