本節では,ステートマネージャの設計について述べる.
4.4.1 ステート
ステートとは,コンテクストツリーをどこまで辿ったのかを表す情報である.
本ミドルウェアでは,複数のイベントからコンテクストを生成するため,必要なイベント は保持しておかなければならない.しかし,リーダから送信されたイベント情報を時系列順 に保持しておく方法では,全てのイベントパターンに関して一致しているかどうかを調べな ければならない.例えば,4階層の条件だった場合には直前4つのイベント情報を取り出し て,それぞれのイベントが一致しているかどうかを調べる必要があるため効率が悪い.
そこで,本ミドルウェアではステートを利用してツリーのどこまで条件が一致したかを保 持する.図4.5で示すように,ステートはコンテクストツリーのどの節にいるのかを表すポ インタである.イベント情報を受信すると,現在指し示している節の条件と一致しているか を調べ,もし一致していた場合は次の節へ移動し,一致していない場合にはコンテクストの 条件不成立と判断して破棄される.コンテクストツリーの最下端である葉まで到達した場合 には,そこに記述されているコンテクストが生成される.
図 4.5: ステート
4.4.2 ステートリスト
本ミドルウェアでは,ステートがリストで保持される.
先に生成されたステートが最下端に到達するよりも前に,別の条件に一致するイベント情 報が到達する可能性が考えられる.そのためステートは複数保持することが可能でなければ ならない.
また,ステートはイベント情報を受信する度に次の節に移動するための条件を満たしてい るかどうかを判断する必要があるため頻繁にアクセスされる.さらに全てのステートに関し てチェックをしなければならない.そのため,ステートはプログラム内部でリストとして保 持されている.
4.5 まとめ
本章では,複合コンテクスト管理ミドルウェアの設計について述べた.
次章では本章での設計を踏まえ,具体的な実装について述べていく.
実装
本章では,第4章で述べたシステム設計をもとに,複合コンテクスト管理ミドルウェアの 実装について述べる.