Google Analytics

2010-01-15

AnyEvent::Handleの怪

概要

AnyEvent::Handleを使っていて困ったことについて。

本文

on_readやpush_readしていない場合など、read watcher が止まっている時は、クライアント切断時にon_errorやon_eofが即座には呼ばれず、push_writeした時になる。さらに、push_writeしなければ、ずっとエラーを検出できない。対策:手動でstart_readしておく。

独自のwbuf(write buffer), rbuf(read buffer)を持っているので、いったん使い始めたら、途中で使うのをやめる時には注意が必要。

push_shutdownはon_drainを上書きする。on_readとpush_readは別々に存在できたのに困る。内部にwrite queueが存在しないのが原因。

0 コメント:

コメントを投稿