ここでは PiaTransport と深く関わりのある部分のトレースについて解説します。トレースの基本的な内容につきましては、2. PiaCommon 編 の2.2. ログ出力 を参照してください。
Pia におけるパケットとは、Pia における通信での送受信単位です。このパケット送信/受信に関連するトレースを出力する際は、以下のように記述します。
nn::pia::common::Trace::GetInstance()->SetFlag(
nn::pia::common::TraceFlagTransportPacketSend | nn::pia::common::TraceFlagTransportPacketReceive ); |
これらのトレースフラグを有効にしてプログラムを動作させると、送受信されたパケットの情報をログに残すことができます。パケットのトレース出力は以下のようになります。
// 送信のログの例:
[Pia] SendPacket Dest: 1/00000002/ 192.168.87.2:52447/ 0 Size: 84 SID:001c CID:c4 TTL: 0 ProtocolId:20000000 // 受信のログの例: [Pia] ReceivePacket Src: 192.168.87.2:52447/ 0 Size: 84 SID:0044 CID:4c ProtocolId:20000000 |
Pia におけるプロトコルメッセージとは、Pia のプロトコルにおける通信データ単位です。宛先ステーションが同じプロトコルメッセージは1つのパケットにまとめられて送信され(パケットバンドリング)、受信されたパケットはプロトコルメッセージに分解されます。このプロトコルメッセージ送信/受信に関連するトレースを出力する際は、以下のように記述します。
nn::pia::common::Trace::GetInstance()->SetFlag(
nn::pia::common::TraceFlagTransportProtocolmessageSend | nn::pia::common::TraceFlagTransportProtocolmessageReceive ); |
これらのトレースフラグを有効にしてプログラムを動作させると、送受信されたプロトコルメッセージの情報をログに残すことができます。プロトコルメッセージのトレース出力は以下のようになります。
// 送信のログの例:
[Pia] CP Dest: 1/00000002/ 192.168.87.2:52447/ 0 Size: 68 SID:001c CID:c4 [Pia] 0- 56( 33) 20000000 0(00349047)->00000002(B) --- 00000000 // 受信のログの例: [Pia] PP Src: 192.168.87.2:52447/ 0 Size: 68 SID:0045 CID:4c o [Pia] 0- 56( 33) 20000000 1(0034904d)->00000001(B) --- 00000000 |
トレース機能はバグ追跡などの目的には非常に有用ですが、トレースを大量に出力すると、処理限界によって CPU 処理負荷が上昇し、パケロス率が悪化します。ですが、Pia で用意しているコンソール出力のキャッシュ機能を使用すると、この状況を大きく改善できます。詳細は 2.2. ログ出力 のキャッシュプリントについての説明を参照してください。