パスワードを忘れた? アカウント作成
449216 journal

enhydraの日記: Net::YahooMessenger α3リリース

日記 by enhydra

今度はイベントのハンドリング回りの修正とサンプルスクリプトの差し換えです。

今回のイベントハンドラは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
現在このバージョンは配付していません。最新バージョンは広報サイトを見てください。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生unstable -- あるハッカー

読み込み中...