Class Mongrel::StatusHandler
In: lib/mongrel/handlers.rb
lib/mongrel/handlers.rb
Parent: HttpHandler

The :stats_filter is basically any configured stats filter that you‘ve added to this same URI. This lets the status handler print out statistics on how Mongrel is doing.

Methods

Public Class methods

[Source]

     # File lib/mongrel/handlers.rb, line 371
371:     def initialize(ops={})
372:       @stats = ops[:stats_filter]
373:     end

[Source]

     # File lib/mongrel/handlers.rb, line 371
371:     def initialize(ops={})
372:       @stats = ops[:stats_filter]
373:     end

Public Instance methods

[Source]

     # File lib/mongrel/handlers.rb, line 385
385:     def describe_listener
386:       results = ""
387:       results << "<h1>Listener #{listener.host}:#{listener.port}</h1>"
388:       results << table("settings", [
389:                        ["host",listener.host],
390:                        ["port",listener.port],
391:                        ["throttle",listener.throttle],
392:                        ["timeout",listener.timeout],
393:                        ["workers max",listener.num_processors],
394:       ])
395: 
396:       if @stats
397:         results << "<h2>Statistics</h2><p>N means the number of samples, pay attention to MEAN, SD, MIN and MAX."
398:         results << "<pre>#{@stats.dump}</pre>"
399:       end
400: 
401:       results << "<h2>Registered Handlers</h2>"
402:       handler_map = listener.classifier.handler_map
403:       results << table("handlers", handler_map.map {|uri,handlers| 
404:         [uri, 
405:             "<pre>" + 
406:             handlers.map {|h| h.class.to_s }.join("\n") + 
407:             "</pre>"
408:         ]
409:       })
410: 
411:       results
412:     end

[Source]

     # File lib/mongrel/handlers.rb, line 385
385:     def describe_listener
386:       results = ""
387:       results << "<h1>Listener #{listener.host}:#{listener.port}</h1>"
388:       results << table("settings", [
389:                        ["host",listener.host],
390:                        ["port",listener.port],
391:                        ["throttle",listener.throttle],
392:                        ["timeout",listener.timeout],
393:                        ["workers max",listener.num_processors],
394:       ])
395: 
396:       if @stats
397:         results << "<h2>Statistics</h2><p>N means the number of samples, pay attention to MEAN, SD, MIN and MAX."
398:         results << "<pre>#{@stats.dump}</pre>"
399:       end
400: 
401:       results << "<h2>Registered Handlers</h2>"
402:       handler_map = listener.classifier.handler_map
403:       results << table("handlers", handler_map.map {|uri,handlers| 
404:         [uri, 
405:             "<pre>" + 
406:             handlers.map {|h| h.class.to_s }.join("\n") + 
407:             "</pre>"
408:         ]
409:       })
410: 
411:       results
412:     end

[Source]

     # File lib/mongrel/handlers.rb, line 414
414:     def process(request, response)
415:       response.start do |head,out|
416:         out.write "<html><body><title>Mongrel Server Status</title>\n\#{describe_listener}\n</body></html>\n"
417:       end
418:     end

[Source]

     # File lib/mongrel/handlers.rb, line 414
414:     def process(request, response)
415:       response.start do |head,out|
416:         out.write "<html><body><title>Mongrel Server Status</title>\n\#{describe_listener}\n</body></html>\n"
417:       end
418:     end

[Source]

     # File lib/mongrel/handlers.rb, line 375
375:     def table(title, rows)
376:       results = "<table border=\"1\"><tr><th colspan=\"#{rows[0].length}\">#{title}</th></tr>"
377:       rows.each do |cols|
378:         results << "<tr>"
379:         cols.each {|col| results << "<td>#{col}</td>" }
380:         results << "</tr>"
381:       end
382:       results + "</table>"
383:     end

[Source]

     # File lib/mongrel/handlers.rb, line 375
375:     def table(title, rows)
376:       results = "<table border=\"1\"><tr><th colspan=\"#{rows[0].length}\">#{title}</th></tr>"
377:       rows.each do |cols|
378:         results << "<tr>"
379:         cols.each {|col| results << "<td>#{col}</td>" }
380:         results << "</tr>"
381:       end
382:       results + "</table>"
383:     end

[Validate]