Sha256: 9d836f40a634459c0b5a61d4f41df5c16f361c4fd596c245e924fdd6e7ecd2c6

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

require 'puggernaut/server/http'
require 'puggernaut/server/channel'
require 'puggernaut/server/tcp'

module Puggernaut
  class Server
    
    include Logger
    
    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
puggernaut-0.1.5 lib/puggernaut/server.rb
puggernaut-0.1.4 lib/puggernaut/server.rb