開発/設計
クラス関係 †
起動&初期化部 †
B2BUAMainクラス †
Providerインタフェース †
Repositoryインタフェース †
- 層(Managerインタフェース)単位で、初期化を行う
メッセージ部 †
Messageインタフェース †
Contextインタフェース †
- 層間をまたぐ情報を保持するインタフェース
- 対向UAから受信して、対向UAに送信されるまでの情報
- SIP的には、ダイアログレベルの情報を表す
- 内部に、Packetインターフェースを複数持つことが想定されている
Packetインタフェース †
- 層内でのみ、保持される情報を保持するインタフェース
- Routerから受信して、Routerに送信されるまでの情報
- 下記のインタフェース群を保持していることが想定されている
FlatMessageインタフェース †
- 完全なメッセージを表すインタフェース
- Packetインタフェース内に保持されることが想定されている
Infoインタフェース †
- 完全なメッセージ(FlatMessageインタフェース)から、必要な情報だけを持つインタフェース
- Packetインタフェース内に保持されることが想定されている
ControlMessageインタフェース †
- 層に対して、どのように動作すべきかの情報を与えるためのインタフェース
- 例えば、UA層に対して、どのCommandを呼ぶべきか?などの情報を保持している
- 層分、保持されていることが想定されているが、nullである可能性もある
- Packetインタフェース内に保持されることが想定されている
Router部 †
Routerインタフェース †
- ルーティング処理をするインタフェース
- ルーティング情報は、MessageRouterControlMessageクラスに保持される
RouterInfoインタフェース †
- ルート情報を保持しているインタフェース
- 下記のインタフェース群を保持していることが想定されている
RouterListenerインタフェース †
- ルーティング先のエントリポイントを表すインタフェース
- Managerインタフェースにより継承されているため、利用する場合は、Managerインタフェース経由となる
RouteKeyインタフェース †
- Routerインタフェースが、使用するルーティング情報を保持するインタフェース
- SendToKeyクラスとして、MessageRouterControlMessageクラスに保持されている
次期のステータス †
- ServiceMixベースに置き換え予定
- この書き換えのため、全体の公開が遅れています。orz
B2BUA層 †
B2BUAManagerインタフェース †
- スーパークラスは、RouterListenerインタフェースであり、B2BUA層のためのRouterインタフェースのエントリポイントとなるインタフェース
B2BUAModuleインタフェース †
- B2BUAとしての動作(シーケンス)を定義するためのインタフェース
- 内部的には、スクリプタブルな動作をするようになっている
- 具体的には、UACommandの呼び出し順などを定義する
- いずれは、スクリプト化することが目標
- AsteriskB2BUAなど、必要に応じて、定義することとなる
B2BUAContextインタフェース †
- B2BUAとしての動作するときに必要なダイアログ情報を保持するためのインタフェース
- B2BUAInfoインタフェースを、複数保持することが想定される
B2BUAInfoインタフェース †
- メッセージ単位で、情報を保持するためのインタフェース
UA層 †
UAManagerインタフェース †
- スーパークラスは、RouterListenerインタフェースであり、UA層のためのRouterインタフェースのエントリポイントとなるインタフェース
UACommandインタフェース †
- メッセージの操作を定義し、処理するインタフェース
- 動作(シーケンス)上、必要なメッセージの書き換えなどを処理
- 例えば、Inviteリクエストのauthヘッダーが正しいかをチェックしたい場合、InviteUA.do_Invite_check_auth() として、必要な処理を定義する
- B2BUA層より、UAMessageControlを利用して、呼び出されることが想定されている
UAContextインタフェース †
- UAとしての動作するときに必要なダイアログ情報を保持するためのインタフェース
- B2BUA層を利用したくない場合やUAの動作として必要な動作を定義するために、B2BUA層のB2BUAModuleインタフェースの代わりに使用される
- UAInfoインタフェースを、複数保持することが想定される
UAInfoインタフェース †
- メッセージ単位で、情報を保持するためのインタフェース
Stack層 †
StackManagerインタフェース †
- スーパークラスは、RouterListenerインタフェースであり、Stack層のためのRouterインタフェースのエントリポイントとなるインタフェース
TransactionUserインタフェース †
- SIP的なTUそのものを表すインタフェース
- Proxy動作するためのTransactionUserなどの拡張をすることが想定されている
TransactionControllerインタフェース †
- フォーキングコントロールのために存在するインタフェース
- 1つのIDのトランザクションが、複数に分岐する可能性がある場合に使用される
TransactionEntryインタフェース †
- 具体的なトランザクション処理を記述するためのインタフェース
- InviteServerTransactionなどが、実装されている
TransactionInfoインタフェース †
- TransactionEntryで必要な情報を保持するためのインタフェース
Transport層 †
- MINAベース
- TransportManagerインタフェース以降は、MINAに依存
TransportManagerインタフェース †
- スーパークラスは、RouterListenerインタフェースであり、Transport層のためのRouterインタフェースのエントリポイントとなるインタフェース