Rename `pbot.output_queue_flushed` to `pbot.output_queue_empty`

This commit is contained in:
Pragmatic Software 2021-07-05 09:38:37 -07:00
parent 7fb48f9b5d
commit acd9570947
4 changed files with 16 additions and 6 deletions

View File

@ -34,6 +34,11 @@ $VERSION = "0.79";
sub new {
my $proto = shift;
my %args = @_;
if (not $args{pbot}) {
Carp::croak("Missing pbot reference to " . __PACKAGE__);
}
my $self = {
'_conn' => [],
@ -45,6 +50,7 @@ sub new {
'_read' => IO::Select->new(),
'_timeout' => 0,
'_write' => IO::Select->new(),
'_pbot' => $args{pbot},
};
bless $self, $proto;
@ -123,6 +129,8 @@ sub do_one_loop {
$outputevent->content->{coderef}->(@{$outputevent->content->{args}});
}
$nexttimer = $self->outputqueue->head->time if !$self->outputqueue->is_empty();
} else {
$self->{_pbot}->{event_dispatcher}->dispatch_event('pbot.output_queue_empty');
}
# we don't want to bother waiting on input or running

View File

@ -1382,7 +1382,6 @@ sub sl {
if ($seconds == 0) {
$self->{_slcount} = 0;
$self->pbot->{event_dispatcher}->dispatch_event('pbot.output_queue_flushed');
}
### DEBUG DEBUG DEBUG

View File

@ -172,7 +172,7 @@ sub initialize {
}
# prepare the IRC engine
$self->{irc} = PBot::IRC->new;
$self->{irc} = PBot::IRC->new(pbot => $self);
# prepare remaining core PBot modules -- do not change this order
$self->{event_queue} = PBot::EventQueue->new(pbot => $self, name => 'PBot event queue', %conf);

View File

@ -117,7 +117,7 @@ sub initialize {
# receive notification when all messages in IRC output queue have been sent
$self->{pbot}->{event_dispatcher}->register_handler(
'pbot.output_queue_flushed', sub { $self->on_output_queue_flushed(@_) }
'pbot.output_queue_empty', sub { $self->on_output_queue_empty(@_) }
);
}
@ -129,6 +129,9 @@ sub unload {
# remove battleship loop event from event queue
$self->end_game_loop;
# remove event handler
$self->{pbot}->{event_dispatcher}->remove_handler('pbot.output_queue_empty');
}
# the game is paused at the beginning when sending the player boards to all
@ -138,7 +141,7 @@ sub unload {
# disconnected with 'excess flood'). this event handler resumes the game once
# the boards have finished transmitting, unless the game was manually paused
# by a player.
sub on_output_queue_flushed {
sub on_output_queue_empty {
my ($self) = @_; # we don't care about the other event arguments
# unless paused by a player, resume the game
@ -312,7 +315,7 @@ sub cmd_battleship {
$self->{state_data}->{paused} = 1;
# this pause was set by a player.
# this is used by on_output_queue_flushed() to know if it's okay to unpause automatically
# this is used by on_output_queue_empty() to know if it's okay to unpause automatically
$self->{state_data}->{paused_by_player} = 1;
} else {
$self->{state_data}->{paused} = 0;
@ -1394,7 +1397,7 @@ sub state_showboard {
# this is due to output pacing; the messages are trickled out slowly
# to avoid overflowing the ircd's receive queue. we do not want the
# game state to advance while the messages are being sent out. the
# game will resume when the `pbot.output_queue_flushed` notification
# game will resume when the `pbot.output_queue_empty` notification
# is received.
$state->{paused} = 1;