'write_buf', # arrayref of scalars, scalarrefs, or coderefs to write
'write_buf_offset', # offset into first array of write_buf to start writing at
'write_buf_size', # total length of data in all write_buf items
- 'write_set_watch', # bool: true if we internally set watch_write rather than by a subclass
'closed', # bool: socket is closed
'event_watch', # bitmask of events the client is interested in (POLLIN,OUT,etc.)
);
push @{$self->{write_buf}}, $bref;
$self->{write_buf_size} += $len;
}
- $self->{write_set_watch} = 1 unless $self->{event_watch} & POLLOUT;
$self->watch_write(1);
return 0;
} elsif ($! == ECONNRESET) {
DebugLevel >= 2 && $self->debugmsg("Wrote ALL %d bytes to %d (nq=%d)",
$written, $self->{fd}, $need_queue);
$self->{write_buf_offset} = 0;
-
- if ($self->{write_set_watch}) {
- $self->watch_write(0);
- $self->{write_set_watch} = 0;
- }
+ $self->watch_write(0);
# this was our only write, so we can return immediately
# since we avoided incrementing the buffer size or
sub on_incomplete_write {
my PublicInbox::DS $self = shift;
- $self->{write_set_watch} = 1 unless $self->{event_watch} & POLLOUT;
$self->watch_write(1);
}
$event &= ~POLLOUT if ! $val;
$event |= POLLOUT if $val;
- if ($val && caller ne __PACKAGE__) {
- # A subclass registered interest, it's now responsible for this.
- $self->{write_set_watch} = 0;
- }
-
# If it changed, set it
if ($event != $self->{event_watch}) {
if ($HaveKQueue) {