class Peak::Routing::Route

Exiting custom code ========

Public Class Methods

handle_frame(frame, config, is_inbound, name) click to toggle source
# File lib/peak/routing/route.rb, line 659
def self.handle_frame(frame, config, is_inbound, name)
    initial_chain = is_inbound ? :inbound : :outbound
    unless @@chains.key? initial_chain
        return nil
    end
    
    rules = Rules.new(frame, config, name, initial_chain)
    more = true
    while more and rules.next_target != :input and rules.next_target != :output and rules.next_target != :drop
        catch(:new_target) do
            rules.instance_eval &@@chains[rules.next_target]
            more = false
        end
    end

    if rules.next_target == :drop or !more
        return nil
    end

    {
        :output_target => rules.next_target == :output ? rules.destination_port : nil,
        :frame => rules.frame
    }
end
inbound_chain(&block) click to toggle source
# File lib/peak/routing/route.rb, line 619
def self.inbound_chain(&block)
    @@chains[:inbound] = block
end
outbound_chain(&block) click to toggle source
# File lib/peak/routing/route.rb, line 624
def self.outbound_chain(&block)
    @@chains[:outbound] = block
end
reset() click to toggle source
# File lib/peak/routing/route.rb, line 634
def self.reset
    @@chains.clear
end
side_chain(name, &block) click to toggle source
# File lib/peak/routing/route.rb, line 629
def self.side_chain(name, &block)
    @@chains[name] = block
end