AnyEvent::FileWatchをバージョンアップしました
Filesys::Notify::SimpleのAnyEvent版であるところのAnyEvent::FileWatchですが、色々改修しました。大きくは、以下の2点です。
- 監視方法を大幅に変更(F::N::Simpleの実装を大いに参考にさせていただきました)
- Timerクラスの追加
- ちょっとテストも追加
監視方法について、これまでは指定したパス以下すべてのファイルを監視対象にしていましたが、このアップデートからは、各検知システムの「指定したノード以下の変化を検知する」という特性に従うようにしました。モジュール側では指定したノードのみを登録し、イベント単位で配下のファイル等の変化を探索し、イベントオブジェクトにまとめてコールバックに送るようにしました。これにより、各検知システム毎のコールバックで渡されるイベントオブジェクトのインターフェイスを統一することができるようになりました(AnyEvent::FileWatch::Event)。
また、F::N::Simpleにあったt/non_existent_path.tをクリアするため、A::F::Timerモジュールを作成しました。また、環境変数の名前も整備し、PERL_AF_NO_OPT=1が指定できるようにしました。これによって、*nix系以外の環境であったり、ファイル変更の頻度が高いため、定期的に監視するようにしたいといった場合、A::F::Timerを使えば、コンストラクタの第2引数で指定した秒数単位で監視を行います(ディフォルトは1秒)。
→ GitHub - taiyoh/p5-AnyEvent-FileWatch
残りタスク
今把握してるのでは
- もう一つのテストを通す(t/rm_create.t)
- エラーハンドリングを整備
という感じでしょうか。。。