Why doesn't on_eof get called on this example?
Alexander Karelas
alex.karelas at gmail.com
Tue Jun 24 12:22:40 CEST 2014
On 06/24/2014 09:54 AM, Konstantin A. Pustovalov wrote:
> On 24.06.2014 00:47, Alexander Karelas wrote:
>> http://stackoverflow.com/questions/24373840/why-isnt-on-eof-called-in-this-anyeventhandle-example
>>
>>
>> I notice that when there is on on_read function, then on_eof doesn't
>> get called when the telnet client connects and immediately disconnects.
>>
>> However when an $hdl->on_read(sub{ say "READ!" }); statement is
>> executed, then the on_eof event gets called even though the on_read
>> event never gets called.
>>
>> So why is on_read needed for on_eof, if it doesn't get executed?
>> Should this be in the documentation? Maybe this could be classified
>> as a bug?
>
> You should read
> http://search.cpan.org/~mlehmann/AnyEvent-7.07/lib/AnyEvent/Handle.pm#NONFREQUENTLY_ASKED_QUESTIONS
>
> Also, manual says about read queue:
>
> > It can be used in two ways, the "simple" way, using only|on_read|and
> the "complex" way, using a queue.
>
> I think that when there is no on_read handler and read queue is empty
> ( there is no outstanding push_read requests ) AE::Handle is unable to
> decide whether to call on_eof or on_error. You should be able to
> construct AE::handle with no on_read and empty queue. Then make
> push_read( line => ) request and get on_error called.
Why is AE::Handle unable to decide? Why couldn't it just call on_eof in
that case?
- Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.schmorp.de/pipermail/anyevent/attachments/20140624/bf869299/attachment.html>
More information about the anyevent
mailing list