[perl] AnyEvent::Handle を使ってみて気づいたこと
AnyEvent::Handle を使って困ったことや気づいたことについて。
on_read や push_read していない場合など、read watcher が止まっている時は、クライアント切断時に on_error や on_eof が即座には呼ばれず、push_write した時になる。さらに、push_write しなければ、ずっとエラーを検出できない。対策: あらかじめ手動で start_read しておく。
AnyEvent::Handle 内に独自の wbuf (write buffer), rbuf (read buffer) を持っているので、いったん使い始めたら、途中で使うのをやめる時には注意が必要。
push_shutdown は on_drain を黙って上書きする。on_read と push_read は別々に存在できて、push_read したキューがなくなったら on_read になるのにちょっと困る。内部に read queue のような write queue が存在しないことを理解すれば仕方ないと分かる。
on_read や push_read していない場合など、read watcher が止まっている時は、クライアント切断時に on_error や on_eof が即座には呼ばれず、push_write した時になる。さらに、push_write しなければ、ずっとエラーを検出できない。対策: あらかじめ手動で start_read しておく。
AnyEvent::Handle 内に独自の wbuf (write buffer), rbuf (read buffer) を持っているので、いったん使い始めたら、途中で使うのをやめる時には注意が必要。
push_shutdown は on_drain を黙って上書きする。on_read と push_read は別々に存在できて、push_read したキューがなくなったら on_read になるのにちょっと困る。内部に read queue のような write queue が存在しないことを理解すれば仕方ないと分かる。
コメント
コメントを投稿