Class: Roby::Log::Client
Constant Summary collapse
- MIN_DISPLAY_DURATION =
5
Instance Attribute Summary collapse
-
#last_update ⇒ Object
readonly
Returns the value of attribute last_update.
-
#server ⇒ Object
readonly
The remote display server.
Class Method Summary collapse
Instance Method Summary collapse
- #added_stream(klass_name, id, name, type) ⇒ Object
- #connect ⇒ Object
- #connected? ⇒ Boolean
- #demux(calls) ⇒ Object
- #disconnect ⇒ Object
- #init(id, data) ⇒ Object
-
#initialize(server) ⇒ Client
constructor
A new instance of Client.
- #push(id, time, data) ⇒ Object
- #quit ⇒ Object
- #reinit(id) ⇒ Object
- #removed_stream(id) ⇒ Object
- #streams ⇒ Object
- #subscribe(stream) ⇒ Object
- #unsubscribe(stream) ⇒ Object
Constructor Details
#initialize(server) ⇒ Client
Returns a new instance of Client.
419 420 421 422 423 |
# File 'lib/roby/log/server.rb', line 419 def initialize(server) @server = server @pending = Hash.new connect end |
Instance Attribute Details
#last_update ⇒ Object (readonly)
Returns the value of attribute last_update.
443 444 445 |
# File 'lib/roby/log/server.rb', line 443 def last_update @last_update end |
#server ⇒ Object (readonly)
The remote display server
417 418 419 |
# File 'lib/roby/log/server.rb', line 417 def server @server end |
Class Method Details
.remote_streams_finalizer(server, drb_object) ⇒ Object
508 509 510 511 512 513 514 515 516 517 |
# File 'lib/roby/log/server.rb', line 508 def self.remote_streams_finalizer(server, drb_object) Proc.new do begin server.disconnect(drb_object) rescue DRb::DRbConnError rescue Exception => e STDERR.puts e. end end end |
Instance Method Details
#added_stream(klass_name, id, name, type) ⇒ Object
429 430 431 432 433 434 435 436 437 |
# File 'lib/roby/log/server.rb', line 429 def added_stream(klass_name, id, name, type) begin require klass_name.underscore rescue LoadError end @streams[id] = RemoteStream.new(klass_name.constantize, id, name, type) super if defined? super end |
#connect ⇒ Object
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 |
# File 'lib/roby/log/server.rb', line 490 def connect if connected? raise ArgumentError, "already connected" end @streams = Hash.new server.connect(DRbObject.new(self)). each do |klass, id, name, type| added_stream(klass, id, name, type) end ObjectSpace.define_finalizer(self, Client.remote_streams_finalizer(server, DRbObject.new(self))) rescue Exception disconnect raise end |
#connected? ⇒ Boolean
489 |
# File 'lib/roby/log/server.rb', line 489 def connected?; !!@streams end |
#demux(calls) ⇒ Object
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 |
# File 'lib/roby/log/server.rb', line 445 def demux(calls) calls.each do |args| send(*args) end streams.each do |s| while s.has_sample? s.synchronize do s.advance end end end sleep(0.5) end |
#disconnect ⇒ Object
519 520 521 522 523 |
# File 'lib/roby/log/server.rb', line 519 def disconnect @streams = nil server.disconnect(DRbObject.new(self)) rescue DRb::DRbConnError end |
#init(id, data) ⇒ Object
469 470 471 472 473 474 475 476 477 478 479 |
# File 'lib/roby/log/server.rb', line 469 def init(id, data) s = @streams[id] Server.info "initializing #{s}" s.synchronize do s.init(data) do |sample| s.decoders.each do |dec| dec.process(sample) end end end end |
#push(id, time, data) ⇒ Object
485 486 487 |
# File 'lib/roby/log/server.rb', line 485 def push(id, time, data) @streams[id].push(time, data) end |
#quit ⇒ Object
525 526 527 528 |
# File 'lib/roby/log/server.rb', line 525 def quit @streams = nil @server = nil end |
#reinit(id) ⇒ Object
481 482 483 |
# File 'lib/roby/log/server.rb', line 481 def reinit(id) @streams[id].reinit = true end |
#removed_stream(id) ⇒ Object
438 439 440 441 |
# File 'lib/roby/log/server.rb', line 438 def removed_stream(id) @streams.delete(id) super if defined? super end |
#streams ⇒ Object
425 426 427 |
# File 'lib/roby/log/server.rb', line 425 def streams @streams.values end |
#subscribe(stream) ⇒ Object
461 462 463 |
# File 'lib/roby/log/server.rb', line 461 def subscribe(stream) @server.subscribe(stream.id, DRbObject.new(self)) end |
#unsubscribe(stream) ⇒ Object
465 466 467 |
# File 'lib/roby/log/server.rb', line 465 def unsubscribe(stream) @server.unsubscribe(stream.id, DRbObject.new(self)) end |