Firewall-Config-Element
view release on metacpan or search on metacpan
lib/Firewall/Config/Element/ServiceGroup/Role.pm view on Meta::CPAN
package Firewall::Config::Element::ServiceGroup::Role;
#------------------------------------------------------------------------------
# å è½½æ©å±æ¨¡å
#------------------------------------------------------------------------------
use Moose::Role;
#------------------------------------------------------------------------------
# å¼å
¥ Firewall::Config::Element::ServiceGroup::Role è§è²
#------------------------------------------------------------------------------
with 'Firewall::Config::Element::Role';
#------------------------------------------------------------------------------
# Firewall::Config::Element::ServiceGroup::Role éç¨å±æ§
#------------------------------------------------------------------------------
has srvGroupName => ( is => 'ro', isa => 'Str', required => 1, );
has srvGroupMembers => (
is => 'ro',
does => 'HashRef[ Firewall::Config::Element::Service::Role | Firewall::Config::Element::ServiceGroup::Role | Undef ]',
default => sub { {} },
);
has dstPortRangeMap => ( is => 'ro', isa => 'HashRef[Firewall::Utils::Set]', default => sub { {} }, );
has refnum => ( is => 'ro', isa => 'Int', default => 0 );
has range => ( is => 'ro', isa => 'Firewall::Utils::Set', lazy => 1, builder => '_buildRange', );
#------------------------------------------------------------------------------
# addSrvGroupMember æ·»å æå¡ç«¯å£ç»æå
#------------------------------------------------------------------------------
sub addSrvGroupMember {
my ( $self, $srvGroupMemberName, $obj ) = @_;
confess "ERROR: srvGroupMemberName must defined" if not defined $srvGroupMemberName;
unless ( not defined $obj
or $obj->does('Firewall::Config::Element::Service::Role')
or $obj->does('Firewall::Config::Element::ServiceGroup::Role') )
{
confess
"ERROR: åæ° obj åªè½æ¯ Firewall::Config::Element::Service::Role or Firewall::Config::Element::ServiceGroup::Role or Undef";
}
$self->{srvGroupMembers}{$srvGroupMemberName} = $obj;
if ( defined $obj ) {
for my $protocol ( keys %{$obj->dstPortRangeMap} ) {
if ( not defined $self->dstPortRangeMap->{$protocol} ) {
$self->dstPortRangeMap->{$protocol} = Firewall::Utils::Set->new;
}
$self->dstPortRangeMap->{$protocol}->mergeToSet( $obj->dstPortRangeMap->{$protocol} );
}
}
} ## end sub addSrvGroupMember
#------------------------------------------------------------------------------
# éå Firewall::Config::Element::Role => _buildRange æ¹æ³
#------------------------------------------------------------------------------
sub _buildRange {
my $self = shift;
my $range = Firewall::Utils::Set->new;
for my $service ( values %{$self->srvGroupMembers} ) {
$range->mergeToSet( $service->range );
}
return $range;
}
1;
( run in 1.525 second using v1.01-cache-2.11-cpan-39bf76dae61 )