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