AnySan

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for Perl extension AnySan

0.10    2013-05-23T18:00:42+09:00
        - use AnyEvent->timer for join channel on connect to IRC Server (kazeburo++)
        - add enable_ssl option on IRC (mix++)
        - interval option of Providor::IRC can be specified 0 (songmu++)

0.09    2013-03-07T20:43:06+09:00
        - add join Excess Flood defender on startup

0.08    2012-06-22T13:55:52+09:00
        - added user option on IRC (kuzuha++)
        - fixed documentation typo (kuzuha++)

eg/XppaiSan.pl  view on Meta::CPAN


my $irc2 = irc
    'chat.xample.net',
    key      => 'example2',
    nickname => 'AnySan2',
    channels => {
        '#anysan1' => {},
        '#anysan2' => {},
    };

my $timer; $timer = AnyEvent->timer(
    interval => 55,
    cb => sub {
        for ('#anysan1', '#anysan2' ) {
            $irc->send_message( '??', channel => $_ );
            $irc2->send_message( '????', channel => $_ );
        }
    }
);

AnySan->register_listener(

lib/AnySan/Provider/IRC.pm  view on Meta::CPAN

        }
    };
    $con->reg_cb( connect => sub {
        my ($con, $err) = @_;
        $on_connect->($con, $err);
        return if defined $err;

        # join channels
        my @channels = keys %{ $config{channels} };
        if ( @channels ) {
            my $join_on_connect; $join_on_connect = AnyEvent->timer(
                after    => $self->{config}{interval},
                interval => $self->{config}{interval},
                cb       => sub {
                    my $channel = shift @channels;
                    warn "join channel: $channel";
                    $self->join_channel( $channel, $config{channels}->{$channel}->{key} );
                    if ( !@channels ) {
                        undef $join_on_connect;
                    }
                }

lib/AnySan/Provider/IRC.pm  view on Meta::CPAN

        $self->_send_raw($send);
    }
}

sub _run {
    my($self, $cb) = @_;
    if (scalar(@{ $self->{SEND_QUEUE} }) >= $self->{config}{wait_queue_size}) {
        return;
    }
    if (time() - $self->{LAST_SEND_TIME} <= 0 || $self->{SEND_TIMER}) {
        $self->{SEND_TIMER} ||= AnyEvent->timer(
            after    => 1,
            interval => $self->{config}{interval},
            cb       => sub {
                (shift @{ $self->{SEND_QUEUE} })->();
                $self->{LAST_SEND_TIME} = time();
                $self->{SEND_TIMER} = undef unless @{ $self->{SEND_QUEUE} };
            },
        );
        push @{ $self->{SEND_QUEUE} }, $cb;
        return;



( run in 0.998 second using v1.01-cache-2.11-cpan-49f99fa48dc )