Class: Pwrake::NBIO::Handler
- Inherits:
-
Object
- Object
- Pwrake::NBIO::Handler
- Defined in:
- lib/pwrake/nbio.rb
Overview
Instance Attribute Summary collapse
-
#host ⇒ Object
readonly
Returns the value of attribute host.
-
#reader ⇒ Object
readonly
Returns the value of attribute reader.
-
#writer ⇒ Object
readonly
Returns the value of attribute writer.
Class Method Summary collapse
Instance Method Summary collapse
- #exit ⇒ Object
- #get_line ⇒ Object
- #halt ⇒ Object
-
#initialize(reader, writer, hostname = nil) ⇒ Handler
constructor
A new instance of Handler.
- #put_exit ⇒ Object
- #put_kill(sig = "INT") ⇒ Object
- #put_line(s) ⇒ Object
Constructor Details
#initialize(reader, writer, hostname = nil) ⇒ Handler
Returns a new instance of Handler.
454 455 456 457 458 459 |
# File 'lib/pwrake/nbio.rb', line 454 def initialize(reader,writer,hostname=nil) @writer = writer @reader = reader @host = hostname @exited = false end |
Instance Attribute Details
#host ⇒ Object (readonly)
Returns the value of attribute host.
460 461 462 |
# File 'lib/pwrake/nbio.rb', line 460 def host @host end |
#reader ⇒ Object (readonly)
Returns the value of attribute reader.
460 461 462 |
# File 'lib/pwrake/nbio.rb', line 460 def reader @reader end |
#writer ⇒ Object (readonly)
Returns the value of attribute writer.
460 461 462 |
# File 'lib/pwrake/nbio.rb', line 460 def writer @writer end |
Class Method Details
.exit(hdl_set) ⇒ Object
520 521 522 523 524 525 526 |
# File 'lib/pwrake/nbio.rb', line 520 def self.exit(hdl_set) hdl_set.each do |hdl| Fiber.new do hdl.exit end.resume end end |
.kill(hdl_set, sig) ⇒ Object
512 513 514 515 516 517 518 |
# File 'lib/pwrake/nbio.rb', line 512 def self.kill(hdl_set,sig) hdl_set.each do |hdl| Fiber.new do hdl.put_kill(sig) end.resume end end |
Instance Method Details
#exit ⇒ Object
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 |
# File 'lib/pwrake/nbio.rb', line 479 def exit iow = @writer.io Log.debug "Handler#exit iow=#{iow.inspect}" if defined? Log if @exited Log.debug "Handler<##{object_id}#exit multiple called" if defined? Log bt = caller.join("\n ") Log.debug "Handler#exit bt=\n #{bt}" if defined? Log return end @exited = true exit_msg = "exited" #return if iow.closed? @writer.put_line "exit" Log.debug "Handler#exit: end: @writer.put_line \"exit\"" if defined? Log # if @reader.class == Reader # MultiReader not work while line = @reader.get_line # here might receive "retire:0" from branch... line.chomp! Log.debug "Handler#exit: #{line} host=#{@host}" if defined? Log return if line == exit_msg end end rescue Errno::EPIPE => e Log.error "Errno::EPIPE in #{self.class}.exit iow=#{iow.inspect}\n"+ e.backtrace.join("\n") if defined? Log end |
#get_line ⇒ Object
462 463 464 |
# File 'lib/pwrake/nbio.rb', line 462 def get_line @reader.get_line end |
#halt ⇒ Object
507 508 509 510 |
# File 'lib/pwrake/nbio.rb', line 507 def halt @writer.halt @reader.halt end |
#put_exit ⇒ Object
475 476 477 |
# File 'lib/pwrake/nbio.rb', line 475 def put_exit @writer.put_line "exit" end |
#put_kill(sig = "INT") ⇒ Object
470 471 472 473 |
# File 'lib/pwrake/nbio.rb', line 470 def put_kill(sig="INT") @writer.io.write("kill:#{sig}\n") @writer.io.flush end |
#put_line(s) ⇒ Object
466 467 468 |
# File 'lib/pwrake/nbio.rb', line 466 def put_line(s) @writer.put_line(s) end |