はまったのでメモ。POE::Component::Client::TCPのPODに$heap->{server}にPOE::Wheel::ReadWriteが入ってるとあるが、これは実は100%真実ではない。POE::Component::Client::TCPのセッションにpost()するとタイミングによってはこの$heap->{server}には違うものが入っている(POE::Wheel::SocketFactory)。
なのでここ$heap->{server}がdefinedかどうかなんて調べてもしょうがない。ここは$heap->{connected}を見る。
なのでここ$heap->{server}がdefinedかどうかなんて調べてもしょうがない。ここは$heap->{connected}を見る。
sub _send {
my $stuff_to_send = $_[ARG0];
if (! $_[HEAP]->{connected} && ! $_[HEAP]->{shutdown}) {
# 接続するまで待つなら、ね。
$_[KERNEL]->yield( $_[ARG0] );
return;
}
$_[HEAP]->put( $stuff_to_send );
}
コメント