パケットをどのようにNormalize化するかを議論します。
ここでは、下記の機能を提供します。
メッセージ変換部 から スクリプト へ 送信される「FlatSIP」メッセージとな
り、パケットを抽象化したメッセージに変換することを想定しているものです。
ただし、コントロールメッセージも必要になると思いますので、[[トランスポ
ート層の制御>]]と合わせて、ご覧ください。
具体的な内容としては、パケットとして構成されるべきであろう最小公倍数的に
ヘッダーなどを定義します。
対象としては、下記のようなものとなります。
例えば、下記のようなSIPメッセージがあった場合
UDP x.x.x.x y.y.y.y INVITE yyy@yyy SIP/2.0\r\n To: xxx@xxx;tag=xxx From: yyy@yyy
メッセージ変換部のメッセージのNormalize化処理を行うと
proto:UDP srcIP:x.x.x.x dstIP:y.y.y.y METHOD:INVITE FROM:xxx@xxx TO:yyy@yyy
というようなものになります。
※SIPropの現バージョンにおいては、SIPのみの対応となるため、Stringを渡す
のみという単純な構造とすることも検討しても良いかと思います。
これをどうするかを議論したいと思います。
※Velocityを用いるか、ただのクラスとするかも検討したいです。
パケットの層構造に合わせて、数層構造に分けて、Normalize化処理をすること
も視野に入れていますが、今回の実装では見送るかもしれません。
上記の例で言えば、IP層NormalizerとSIP層Normalizerを作成して、2段階でNormalize化処理を行うことを想定しています。
上記のNormalize化されたメッセージを、具体的なパケット(SIP)に変換するもの
となります。
ただし、コントロールメッセージも必要になると思いますので、[[トランスポ
ート層の制御>]]と合わせて、ご覧ください。
上記のNormalize化されたメッセージに対して、下記のようなものを用意してお くと
INVITE {dstIP} SIP/2.0\r\n From: {FROM} To: {TO};tag=xxx
↓のように出力されるものとなります
INVITE y.y.y.y SIP/2.0\r\n From: xxx.@xxx To: yyy@yyy;tag=yyy
※Velocityを使用する場合は、もっと違う形となりますので、そのVelocityのテ ンプレートの形を議論したいと思います。
外界との接続部分と通信をさせるためにコントロールするための部分となります。
具体的には、TCP/UDPを生成したりする部分となり、それをメッセージ内にある
パラメータのみで制御させることを目的としています。
ここに関しては、まだ、具体的に考慮していない部分です。すみません。
※この制御用のメッセージの種類を議論したいと思います。