• 追加された行はこの色です。
  • 削除された行はこの色です。
[[開発/サブプロジェクト]]

※書きかけ。鋭意、バージョンアップ中。しばし、お待ちください。


*MultiPacketerとは [#oee416ab]
本ツールは、擬似的にシーケンスを再生するツールです。
簡単に言えば、汎用的なパケット送受信ツールです。~
JavaScriptでシーケンスとパケットを定義することにより、どんなパケット(テキストベース)でも、送受信可能です。(SIPでもHTTPでもなんでもOKです。)~
この特性を利用して、簡単なシミュレーションやテストに使用することが出来ます。

JavaScriptにて、記述したシーケンスを再生します。

*使用法 [#w25d0aa6]

**変数とは [#q4e5ef4d]

*使用法 [#w25d0aa6]
**JavaScript内で使用 [#p7377b8c]
JavaScript内で使用できるシステム関数です。最新情報は、[[こちら>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html]]を参照してください。jsFunction_XXXとなっているものが、上記の関数に相当します。~
|CENTER:メソッド|CENTER:意味|
|[[void jsEngine.send(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_send(java.lang.String)]]|Stringを送信します。|
|[[void jsEngine.receive();>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_receive()]]|受信待ちをします。受信できなかった場合、変数TIMEOUT時間後、タイムアウトします。|
|[[void jsEngine.importScript(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_importScript(java.lang.String)]]|Stringで指定したJavaScriptファイルをimportします。|
|[[void jsEngine.print(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_print(java.lang.String)]]|StringをTracerに表示します。|
|[[String1 jsEngine.replaceVariables(String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_replaceVariables(java.lang.String)]]|String2を変数に従って変換したString1を返します。|
|[[void jsEngine.setVar(String1,String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_setVar(java.lang.String, java.lang.String)]]|変数String1にString2をセットします。|
|[[String1 jsEngine.getVar(String2);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_getVar(java.lang.String)]]|変数String2を取得します。|
|[[void jsEngine.setVariablesForSIPByPacket(String);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_setVariablesForSIPByPacket(java.lang.String)]]|変数StringからSIPヘッダーを取得し、ヘッダー名の大文字を変数名としてセットします。例:Toヘッダーは、変数TOにセットされます。|
|[[void jsEngine.sleep(int);>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSEngine.html#jsFunction_sleep(double)]]|intミリ秒停止します。|


**システム変数 [#ece60a8e]
システムが最初から用意している変数一覧です。最新情報は、[[こちら>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html]]を参照してください。~
|CENTER:変数名|CENTER:意味|
|[[ORIGINAL_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#ORIGINAL_PACKET]]|最初に送受信したパケット|
|[[CURRENT_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#CURRENT_PACKET]]|現在の送受信したパケット|
|[[RECEIVE_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_PACKET]]|最後に受信したパケット|
|[[SEND_PACKET>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#SEND_PACKET]]|最後に送信したパケット|
|[[LOCAL_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#LOCAL_IP]]|ローカルIP|
|[[LOCAL_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#LOCAL_PORT]]|ローカルポート|
|[[REMOTE_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#REMOTE_IP]]|リモートIP|
|[[REMOTE_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#REMOTE_PORT]]|リモートポート|
|[[RECEIVE_IP>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_IP]]|VIAのsent-by相当のIP|
|[[RECEIVE_PORT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#RECEIVE_PORT]]|VIAのsent-by相当のポート|
|[[TRANSPORT_TYPE>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#TRANSPORT_TYPE]]|トランスポートタイプ|
|[[IS_RECEIVE_MODE>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#IS_RECEIVE_MODE]]|ローカルIPを使用するかsent-byを使用するか|
|[[TIMEOUT>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/SystemVariables.html#TIMEOUT]]|Socketの待ち受けタイムアウト時間(ms)|

**拡張するには [#t7785419]
[[JSControllerクラス>http://www.siprop.org/ja/javadoc/MultiPacketer/org/siprop/simulator/multiPacketer/JSController.html]]が外部とのインタフェースを担っています。

 〜〜〜〜〜いろいろな処理〜〜〜〜〜
 String result = "いろいろな処理の結果";
 String jsCode = "jsEngine.setVar(\"RESULT\","\" + result  + "\");" +
                "jsEngine.importScript(\"./mainFunc.js\");";
 
 JSController jsCon = new JSController();
 jsCon.execByText(jsCode);

とすることにより、アプリ上からJavaScriptを実行することが出来ます。~
mainFunc.jsには、変数RESULTを処理する内容が書かれているものとします。

**JavaScriptサンプル [#f6d58975]


これは、非常に単純なサンプルです。~
例えば、下記のようにすることにより、1xx応答が複数回来ることに対応可能となります。
 var receivePacket = new String();
 // 200OKパケットであるかをチェック。
 while(receivePacket.indexOf("SIP/2.0 200") != 1) {
   jsEngine.receive();
   receivePacket = jsEngine.getVar("RECEIVE_PACKET");
 }

このように、JavaScriptの関数や機能を使うことにより、さまざまな状況に対応できます。


*インストール法 [#ccda7068]

**必要なライブラリ [#t4f251ca]
-J2SE5.0以上
-[[rhino1_6R2>http://www.mozilla-japan.org/rhino/index.html]]
-[[junit-3.8>http://www.junit.org/index.htm]]
-[[log4j-1.2.8>http://logging.apache.org/log4j/docs/]]

***ビルドに必要なツール [#w6a21124]
-[[Maven2>http://maven.apache.org/]]


**取得 [#l9c1685f]
***ソースファイル [#q087d0c8]
https://svn.sourceforge.net/svnroot/siprop/trunk/subProject/MultiPacketer

***バイナリファイル [#se2e089c]
Jarファイルは、こちらに。


*各種資料 [#j66d3bc8]
--[[Javadoc>http://www.siprop.org/ja/javadoc/MultiPacketer/]]