[[開発/設計]] *クラス関係 [#u4970d1e] -継承関係は、[[クラス図>開発/設計/クラス図]]を、参照 -詳細は、[[JavaDoc:http://www.siprop.org/ja/2.0/javadoc/SIProp-2.0]]を、参照 *起動&初期化部 [#cd2a8644] ***B2BUAMainクラス [#z7b2953c] -起動用のmainメソッドがあるクラス --Providerのインスタンス化を行う ***Providerインタフェース [#md4a4842] -すべての初期化を行う --すべてのRepositoryを呼び出し、実行する ***Repositoryインタフェース [#oba57857] -層(Managerインタフェース)単位で、初期化を行う --層内で使用する情報は、ここに保持される *メッセージ部 [#s016dc58] ***Messageインタフェース [#pce9b14f] -すべてのメッセージのスーパークラス ***Contextインタフェース [#qd6d898a] -層間をまたぐ情報を保持するメッセージ --対向UAから受信して、対向UAに送信されるまでの情報 --SIP的には、ダイアログレベルの情報を表す -内部に、Packetインターフェースを複数持つことが想定されている ***Packetインタフェース [#d95684ec] -層内でのみ、保持される情報を保持するメッセージ --Routerから受信して、Routerに送信されるまでの情報 -下記のインタフェース群を保持していることが想定されている ***FlatMessageインタフェース [#sbba46de] -ノーマライズ化されたメッセージを表すメッセージ -Packetインタフェース内に保持されることが想定されている ***Infoインタフェース [#o22ae954] -FlatMessageインタフェースから、必要な情報だけを抜き出したメッセージ -Packetインタフェース内に保持されることが想定されている ***ControlMessageインタフェース [#ea6c941e] -層に対して、どのように動作すべきかの情報を与えるためのメッセージ --例えば、UA層に対して、どのCommandを呼ぶべきか?などの情報を保持している ---そのため、層に強く依存する -Packetインタフェース内に保持されることが想定されている *Router部 [#oa2bddd5] F2バージョンより、ServiceMixでの置き換えが可能となりました。 ***Routerインタフェース [#p54ed2bd] -Messageインタフェースのルーティング処理をする --ルーティング情報は、SendToKeyクラスとして、Packetインタフェースに保持される ***RouterInfoインタフェース [#mde44a0a] -ルーティング情報を保持している -下記のインタフェース群を保持していることが想定されている ***Listenerインタフェース [#k7848e08] -ルーティング先のエントリポイントを表すインタフェース --Managerインタフェースにより継承されているため、利用する場合は、Managerインタフェース経由となる ***RouteKeyインタフェース [#p50c02aa] -Routerインタフェースが、使用するルーティング情報を保持するインタフェース --SendToKeyクラスとして、Packetクラスに保持されている ***SendToKeyクラス [#i9c8624a] -層間のsrcとdstを保持しているクラス --内部に、srcのRouteKeyインタフェースとdstのRouteKeyインタフェースを保持している。 *B2BUA層 [#z03cdbe4] ***B2BUAManagerインタフェース [#ef3feadf] -スーパークラスは、Listenerインタフェースであり、B2BUA層のためのRouterインタフェースのエントリポイントとなるインタフェース ***B2BUAModuleインタフェース [#k4d82648] -B2BUAとしての動作(シーケンス)を定義するためのインタフェース --内部的には、スクリプタブルな動作をするようになっている ---具体的には、UACommandの呼び出し順などを定義する --いずれは、スクリプト化することが目標 -AsteriskB2BUAなど、必要に応じて、定義することとなる ***B2BUAContextインタフェース [#id28ed42] -B2BUAとしての動作するときに必要なダイアログ情報を保持するためのインタフェース -B2BUAInfoインタフェースを、複数保持することが想定される ***B2BUAInfoインタフェース [#b715bb9c] -ControlMessage単位で、情報を保持するためのインタフェース *UA層 [#i1e1bee4] ***UAManagerインタフェース [#jd3c628d] -スーパークラスは、Listenerインタフェースであり、UA層のためのRouterインタフェースのエントリポイントとなるインタフェース ***UACommandインタフェース [#dff0b92b] -メッセージの操作を定義し、処理するインタフェース --動作(シーケンス)上、必要なメッセージの書き換えなどを処理 ---例えば、Inviteリクエストのauthヘッダーが正しいかをチェックしたい場合、InviteUA.do_Invite_check_auth() として、必要な処理を定義する -B2BUA層より、UAMessageControlを利用して、呼び出されることが想定されている ***UAContextインタフェース [#e1fa3777] -UAとしての動作するときに必要なダイアログ情報を保持するためのインタフェース --B2BUA層を利用したくない場合やUAの動作として必要な動作を定義するために、B2BUA層のB2BUAModuleインタフェースの代わりに使用される -UAInfoインタフェースを、複数保持することが想定される ***UAInfoインタフェース [#t8f0b266] -ControlMessage単位で、情報を保持するためのインタフェース *Stack層 [#u5e5996e] ***StackManagerインタフェース [#qc7b9274] -スーパークラスは、Listenerインタフェースであり、Stack層のためのRouterインタフェースのエントリポイントとなるインタフェース ***TransactionUserインタフェース [#ee60a7d3] -SIP的なTUそのものを表すインタフェース --トランサクションの管理を行う -Proxy動作するためのTransactionUserなどの拡張をすることが想定されている ***TransactionControllerインタフェース [#adde9cea] -フォーキングコントロールのために存在するインタフェース --1つのIDのトランザクションが、複数に分岐する可能性がある場合に使用される ***TransactionEntryインタフェース [#tbf367ea] -具体的なトランザクション処理を記述するためのインタフェース --InviteServerTransactionなどが、実装されている ***TransactionInfoインタフェース [#ea32f5e5] -TransactionEntryで必要な情報を保持するためのインタフェース *Transport層 [#sb47ee6a] -MINAベース --TransportManagerインタフェース以降は、MINAに依存 ***TransportManagerインタフェース [#y486409d] -スーパークラスは、RouterListenerインタフェースであり、Transport層のためのRouterインタフェースのエントリポイントとなるインタフェース -スーパークラスは、Listenerインタフェースであり、Transport層のためのRouterインタフェースのエントリポイントとなるインタフェース