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__


syntax highlighted by Code2HTML, v. 0.9.1