package NetHirc::Totalitarian; use strict; use warnings; use IO::File; use POE qw(Kernel Session Wheel::ReadWrite); use POSIX (); use YAML (); use NetHirc::BigBrother; use NetHirc::Util; my @events = qw( _start _stop check on off ); sub new { shift; POE::Session->create( 'package_states' => [ 'NetHirc::Totalitarian' => [ @events ] ], 'args' => [ @_ ], ); } sub _start { my ($kernel, $heap, $announce) = @_[KERNEL, HEAP, ARG0]; $kernel->alias_set('nethirc_totalitarian'); my $brother = NetHirc::BigBrother->new(); $brother->{'announce'} = $announce; $heap->{'bigbrother'} = $brother; $heap->{'toggle'} = 0; } sub _stop { my $heap = $_[HEAP]; delete $heap->{'bigbrother'}; } sub check { debug('d', "check"); my ($heap, $text) = @_[HEAP, ARG0]; return unless $heap->{'toggle'}; my $brother = $heap->{'bigbrother'}; debug('d', "maybe revise"); $brother->check($text); } sub on { debug('d', "on"); my $heap = $_[HEAP]; $heap->{'toggle'} = 1; } sub off { debug('d', "off"); my $heap = $_[HEAP]; $heap->{'toggle'} = 0; } 1; __END__