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