class Vizkit::ConnectionManager

Public Class Methods

new(owner) click to toggle source
# File lib/vizkit/connection_manager.rb, line 3
def initialize(owner)
    @owner = owner
    @on_data_listeners = Hash.new do |h,key|
        h[key] = Array.new
    end

    @on_reachable_listeners = Hash.new do |h,key|
        h[key] = Array.new
    end
end

Public Instance Methods

connect_to(port,callback=nil,options=Hash.new,&block) click to toggle source
# File lib/vizkit/connection_manager.rb, line 86
def connect_to(port,callback=nil,options=Hash.new,&block)
    raise "Cannot connect to a code block and callback at the same time" if callback && block && callback != block
    callback ||= block

    Vizkit.info "Create new Connection for #{port.name} and #{callback}"
    listener = port.on_data do |data|
        callback.call data,port.full_name
    end
    @on_data_listeners[port] << listener
    listener
end
connected?(port = nil) click to toggle source

returns true if the port is reachable and the listeners are listening

# File lib/vizkit/connection_manager.rb, line 16
def connected?(port = nil)
    if port
        listening?(port) && port.reachable?
    else
        @on_data_listeners.keys.each do |key|
            return false if !connected?(key)
        end
    end
end
disconnect(port=nil, keep_port: true) click to toggle source
# File lib/vizkit/connection_manager.rb, line 47
def disconnect(port=nil, keep_port: true)
    if port
        @on_data_listeners[port].each do |l|
            l.stop
        end
        
        @on_data_listeners.delete(port) unless keep_port
        
        @on_reachable_listeners[port].each do |l|
            l.stop
        end
        
        @on_reachable_listeners.delete(port) unless keep_port
        
    else
        @on_data_listeners.keys.each do |key|
            disconnect(key, keep_port: true)
        end
        
        @on_data_listeners.clear unless keep_port
        @on_reachable_listeners.clear unless keep_port
    end
end
find_port_by_name(pname) click to toggle source
# File lib/vizkit/connection_manager.rb, line 26
def find_port_by_name(pname)
    @on_data_listeners.keys.each do |key|
        if key.full_name == pname 
            return key
        end
    end
    return nil
end
listening?(port = nil) click to toggle source
# File lib/vizkit/connection_manager.rb, line 35
def listening?(port = nil)
    if port
        @on_data_listeners[port].find do |l|
            l.listening?
        end
    else
        @on_data_listeners.keys.each do |key|
            return false if !listening?(key) 
        end
    end
end
reconnect(port=nil) click to toggle source
# File lib/vizkit/connection_manager.rb, line 71
def reconnect(port=nil)
    if port
        @on_data_listeners[port].each do |l|
            l.start
        end
        @on_reachable_listeners[port].each do |l|
            l.start
        end
    else
        @on_data_listeners.keys.each do |key|
            reconnect(key)
        end
    end
end