enhydraの日記: Net::YahooMessenger α3リリース
今度はイベントのハンドリング回りの修正とサンプルスクリプトの差し換えです。
今回のイベントハンドラはVisitorパターンを採用した。つまりイベントハンドラの定義をVisitorクラスで行い、そのインスタンスをEventオブジェクトにaccept()させる。表からはそれらが表れないように単純にVisitorのインスタンスを喰わせて設定が完了する。
#!perl
use Net::YahooMessenger;
use Net::YahooMessenger::CommandLineEventVisitor;
use strict;my $yahoo = Net::YahooMessenger->new;
$yahoo->id($YAHOO_ID);
$yahoo->password($PASSWORD);$yahoo->event_visitor(
Net::YahooMessenger::CommandLineEventVisitor->new
);$yahoo->login;
$yahoo->start;
__END__
ってな感じ。
Net::YahooMessenger::CommanndLineEventVisitorの方ではNet::YahooMessenger::EventVisitorを継承して、各Visitメソッドをオーバーライドしておく。イベントが発生するたびにそれぞれ適切なメソッドがコールされる寸法。
Net::IRCのようにイベント名と対応するクロージャを設定するスタイルを取らなかったのは、クロージャスタイルの場合イベント間で状態情報を共有したい時に大域変数に頼る必要が生まれ、コードの可読性が下がる恐れが有るため。Visitorスタイルは状態情報をオブジェクトの状態として共有できる。受け取ったメッセージの数や最後にメッセージを受け取った時間 etc...の扱いが楽になるはずだ。
もう一つの変更点、ymsgのリプレースは正義のCGI開発組織ゴッドトマトプロジェクトの木村君による修正版。ちょっと使いやすくなったようなきがする。
α3リリース Net-YahooMessenger-0.03.tar.gz
現在このバージョンは配付していません。最新バージョンは広報サイトを見てください。
Net::YahooMessenger α3リリース More ログイン