Class: FCGI::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/cgialt/fcgi/core.rb

Instance Method Summary collapse

Constructor Details

#initialize(server) ⇒ Server

Returns a new instance of Server.



90
91
92
93
94
95
96
97
98
# File 'lib/cgialt/fcgi/core.rb', line 90

def initialize(server)
  @server = server
  @buffers = {}
  @default_parameters = {
    "FCGI_MAX_CONNS" => 1,
    "FCGI_MAX_REQS"  => 1,
    "FCGI_MPX_CONNS" => true
  }
end

Instance Method Details

#each_request(&block) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/cgialt/fcgi/core.rb', line 100

def each_request(&block)
  graceful = false
  trap("SIGUSR1") { graceful = true }
  while true
    begin
      session(&block)
    rescue Errno::EPIPE, EOFError
      # HTTP request is canceled by the remote user
    end
    exit 0 if graceful
  end
end

#sessionObject



113
114
115
116
117
118
119
120
121
122
# File 'lib/cgialt/fcgi/core.rb', line 113

def session
  sock, addr = *@server.accept
  return unless sock
  fsock = FastCGISocket.new(sock)
  req = next_request(fsock)
  yield req
  respond_to req, fsock, FCGI_REQUEST_COMPLETE
ensure
  sock.close if sock and not sock.closed?
end