mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-20 02:49:49 +01:00
IRC/Connection: sl() now dispatches pbot.output_queue_flushed
pacing time gets reset
This commit is contained in:
parent
d41b91fb3e
commit
abaf0a29f0
@ -54,6 +54,7 @@ my %autoloaded = (
|
||||
'hostname' => undef,
|
||||
'pacing' => undef,
|
||||
'utf8' => undef,
|
||||
'pbot' => undef,
|
||||
'ssl' => undef,
|
||||
'ssl_ca_path' => undef,
|
||||
'ssl_ca_file' => undef,
|
||||
@ -89,6 +90,7 @@ sub new {
|
||||
_ssl_ca_file => undef,
|
||||
_utf8 => 0,
|
||||
_format => {'default' => "[%f:%t] %m <%d>",},
|
||||
_pbot => undef,
|
||||
};
|
||||
|
||||
bless $self, $proto;
|
||||
@ -232,6 +234,7 @@ sub connect {
|
||||
$self->pacing($arg{'Pacing'}) if exists $arg{'Pacing'};
|
||||
$self->debug($arg{'Debug'}) if exists $arg{'Debug'};
|
||||
$self->utf8($arg{'UTF8'}) if exists $arg{'UTF8'};
|
||||
$self->pbot($arg{'PBot'}) if exists $arg{'PBot'};
|
||||
$self->ssl($arg{'SSL'}) if exists $arg{'SSL'};
|
||||
$self->ssl_ca_path($arg{'SSL_ca_path'}) if exists $arg{'SSL_ca_path'};
|
||||
$self->ssl_ca_file($arg{'SSL_ca_file'}) if exists $arg{'SSL_ca_file'};
|
||||
@ -1357,9 +1360,11 @@ sub sl {
|
||||
|
||||
unless (@_) { croak "Not enough arguments to sl()"; }
|
||||
|
||||
if (!$self->pacing) { return $self->sl_real($line); }
|
||||
if (!$self->pacing) {
|
||||
return $self->sl_real($line);
|
||||
}
|
||||
|
||||
if ($self->{_slcount} < 14) {
|
||||
if ($self->{_slcount} < 10) {
|
||||
$self->{_slcount}++;
|
||||
$self->{_lastsl} = time;
|
||||
return $self->schedule_output_event(0, \&sl_real, $line);
|
||||
@ -1367,12 +1372,18 @@ sub sl {
|
||||
|
||||
# calculate how long to wait before sending this line
|
||||
my $time = time;
|
||||
if ($time - $self->{_lastsl} > $self->pacing) { $self->{_lastsl} = $time; }
|
||||
else { $self->{_lastsl} += $self->pacing; }
|
||||
if ($time - $self->{_lastsl} > $self->pacing) {
|
||||
$self->{_lastsl} = $time;
|
||||
} else {
|
||||
$self->{_lastsl} += $self->pacing;
|
||||
}
|
||||
|
||||
my $seconds = $self->{_lastsl} - $time;
|
||||
|
||||
if ($seconds == 0) { $self->{_slcount} = 0; }
|
||||
if ($seconds == 0) {
|
||||
$self->{_slcount} = 0;
|
||||
$self->pbot->{event_dispatcher}->dispatch_event('pbot.output_queue_flushed');
|
||||
}
|
||||
|
||||
### DEBUG DEBUG DEBUG
|
||||
if ($self->{_debug}) { print STDERR "S-> $seconds $line\n"; }
|
||||
|
10
PBot/PBot.pm
10
PBot/PBot.pm
@ -61,9 +61,6 @@ use PBot::Users;
|
||||
use PBot::Utils::ParseDate;
|
||||
use PBot::WebPaste;
|
||||
|
||||
# unbuffer stdout stream
|
||||
STDOUT->autoflush(1);
|
||||
|
||||
# set standard output streams to encode as utf8
|
||||
binmode(STDOUT, ":utf8");
|
||||
binmode(STDERR, ":utf8");
|
||||
@ -247,9 +244,9 @@ sub connect {
|
||||
|
||||
while (
|
||||
not $self->{conn} = $self->{irc}->newconn(
|
||||
Nick => $self->{registry}->get_value('irc', 'randomize_nick') ? $self->random_nick : $self->{registry}->get_value('irc', 'botnick'),
|
||||
Username => $self->{registry}->get_value('irc', 'username'),
|
||||
Ircname => $self->{registry}->get_value('irc', 'realname'),
|
||||
Nick => $self->{registry}->get_value('irc', 'randomize_nick') ? $self->random_nick : $self->{registry}->get_value('irc', 'botnick'),
|
||||
Username => $self->{registry}->get_value('irc', 'username'),
|
||||
Ircname => $self->{registry}->get_value('irc', 'realname'),
|
||||
Server => $server,
|
||||
Port => $port,
|
||||
Pacing => 1,
|
||||
@ -258,6 +255,7 @@ sub connect {
|
||||
SSL_ca_file => $self->{registry}->get_value('irc', 'ssl_ca_file'),
|
||||
SSL_ca_path => $self->{registry}->get_value('irc', 'ssl_ca_path'),
|
||||
Debug => $self->{registry}->get_value('irc', 'debug'),
|
||||
PBot => $self,
|
||||
)
|
||||
)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user