AnySan
view release on metacpan or search on metacpan
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 )