Ravn::BDE::Segment::

Group class

Public Class Methods

new( name, **config )

Overloaded to fetch its members from its config.

# File lib/ravn/bde/segment/group.rb, line 37
def initialize( name, **config )
        block = lambda { self.config[:members] || [] }
        super( name, **config, &block )
end
validate( config, mission )

Returns true if the given config is valid in the context of the given mission config.

# File lib/ravn/bde/segment/group.rb, line 13
def self::validate( config, mission )
        super

        self.log.debug "Validating group segment config %p against mission config" % [ config ]

        members = config[ :members ] or
                raise Ravn::BDE::ValidationError, "group segment has no :members config"
        member_set = members.to_set

        mission_callsigns = mission[ :callsigns ]
        if mission_callsigns.nil? || mission_callsigns.empty?
                self.log.warn "Group segments used with auto-generated callsigns"
        end
        mission_callsigns = mission_callsigns.values.to_set

        unless member_set.subset?( mission_callsigns )
                invalid = member_set - mission_callsigns
                raise Ravn::BDE::ValidationError,
                        "group segment contains invalid callsign/s: %s" % [ invalid.join(", ") ]
        end
end