<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 06/24/2014 09:54 AM, Konstantin A. Pustovalov wrote:<br>
    <blockquote cite="mid:53A9209D.6060809@gmail.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">On 24.06.2014 00:47, Alexander
        Karelas wrote:<br>
      </div>
      <blockquote cite="mid:53A89247.5080201@gmail.com" type="cite"><a
          moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://stackoverflow.com/questions/24373840/why-isnt-on-eof-called-in-this-anyeventhandle-example">http://stackoverflow.com/questions/24373840/why-isnt-on-eof-called-in-this-anyeventhandle-example</a>
        <br>
        <br>
        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. <br>
        <br>
        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. <br>
        <br>
        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? <br>
      </blockquote>
      <br>
      You should read
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://search.cpan.org/%7Emlehmann/AnyEvent-7.07/lib/AnyEvent/Handle.pm#NONFREQUENTLY_ASKED_QUESTIONS">http://search.cpan.org/~mlehmann/AnyEvent-7.07/lib/AnyEvent/Handle.pm#NONFREQUENTLY_ASKED_QUESTIONS</a><br>
      <br>
      Also, manual says about read queue:<br>
      <br>
      > <span style="color: rgb(0, 0, 0); font-family: arial,
        sans-serif; font-size: medium; font-style: normal; font-variant:
        normal; font-weight: normal; letter-spacing: normal;
        line-height: normal; orphans: auto; text-align: start;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
        background-color: rgb(255, 255, 255); display: inline
        !important; float: none;">It can be used in two ways, the
        "simple" way, using only<span class="Apple-converted-space"> </span></span><code
        style="color: rgb(0, 0, 0); font-style: normal; font-variant:
        normal; font-weight: normal; letter-spacing: normal;
        line-height: normal; orphans: auto; text-align: start;
        text-indent: 0px; text-transform: none; white-space: normal;
        widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
        background-color: rgb(255, 255, 255);">on_read</code><span
        style="color: rgb(0, 0, 0); font-family: arial, sans-serif;
        font-size: medium; font-style: normal; font-variant: normal;
        font-weight: normal; letter-spacing: normal; line-height:
        normal; orphans: auto; text-align: start; text-indent: 0px;
        text-transform: none; white-space: normal; widows: auto;
        word-spacing: 0px; -webkit-text-stroke-width: 0px;
        background-color: rgb(255, 255, 255); display: inline
        !important; float: none;"><span class="Apple-converted-space"> </span>and
        the "complex" way, using a queue.</span><br>
      <br>
      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.<br>
    </blockquote>
    <br>
    <br>
    Why is AE::Handle unable to decide? Why couldn't it just call on_eof
    in that case?<br>
    <br>
    - Alex<br>
  </body>
</html>