Class: PerfMonger::Command::ServerCommand::FaucetServlet
- Inherits:
-
WEBrick::HTTPServlet::AbstractServlet
- Object
- WEBrick::HTTPServlet::AbstractServlet
- PerfMonger::Command::ServerCommand::FaucetServlet
- Defined in:
- lib/perfmonger/command/server.rb
Instance Method Summary collapse
- #do_GET(req, res) ⇒ Object
-
#initialize(server, recorder) ⇒ FaucetServlet
constructor
A new instance of FaucetServlet.
Constructor Details
#initialize(server, recorder) ⇒ FaucetServlet
Returns a new instance of FaucetServlet.
234 235 236 237 |
# File 'lib/perfmonger/command/server.rb', line 234 def initialize(server, recorder) super(server) @recorder = recorder end |
Instance Method Details
#do_GET(req, res) ⇒ Object
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/perfmonger/command/server.rb', line 239 def do_GET(req, res) res.chunked = true res.content_type = 'text/event-stream' res['cache-control'] = 'no-cache' r, w = IO.pipe Thread.start do begin while record = @recorder.get_current_record w << "data: " << record << "\r\n" << "\r\n" end rescue Errno::EPIPE # puts("Connection closed for /faucet") # connection closed rescue EOFError # puts("Recorder has been terminated") # connection closed rescue Exception => err puts("ERROR: Exception in faucet pipe writer") puts("#{err.class.to_s}: #{err.}") puts(err.backtrace) ensure # puts("[FaucetServlet][do_GET] close w,r pipe") begin; w.close; rescue IOError; end begin; r.close; rescue IOError; end end end res.body = r end |