メッセージバンドル機能を制御します。 [詳解]
#include <NetZ/src/Core/DOCore/BundlingPolicy.h>
公開メンバ関数 | |
BundlingPolicy () | |
このコンストラクタはアプリケーション側から呼び出さないでください。 [詳解] | |
virtual | ~BundlingPolicy () |
このデストラクタはアプリケーション側から呼び出さないでください。 [詳解] | |
void | Disable () |
メッセージバンドル機能を無効にします。 [詳解] | |
void | Enable () |
メッセージバンドル機能を有効にします。 [詳解] | |
TimeInterval | GetMaximumFlushDelay () const |
最大遅延時間をミリ秒単位で取得します。 [詳解] | |
qBool | IsEnabled () const |
メッセージバンドル機能が有効になっているかどうかを取得します。 [詳解] | |
qBool | IsEnableUnreliableBundling () |
Unreliableメッセージをバンドリングするかを取得します。 [詳解] | |
void | SetEnableUnreliableBundling (qBool b) |
Unreliableメッセージをバンドリングするか指定します。 [詳解] | |
void | SetMaximumFlushDelay (TimeInterval tiDelay) |
ためられたメッセージを送信するための遅延時間(送信まで どのぐらい待つか)を指定します。 [詳解] | |
静的公開メンバ関数 | |
static BundlingPolicy * | GetInstance () |
BundlingPolicyのインスタンスを取得します。 [詳解] | |
メッセージバンドル機能を制御します。
メッセージバンドルを利用することによってネットワーク帯域幅を節約することが出来ます。 このクラスは、メッセージが送信される前にどのようにバンドルされていくかを制御します。 ローカルのステーションでは、メッセージバンドルはすでにローカルステーションによって存在が確認された ネットワーク越しの各ステーションごとに作成されます。 すべてのメッセージは相手先のステーションに送信される前に、それぞれのメッセージバンドルバッファにためられます。 ただし、DirectTransport/DirectStream経由のメッセージはためられません。
メッセージバンドルは自動的にか、あるいは手動で送信されます。メッセージバンドルが自動的に 送信される場合、送信頻度はSetMaximumFlushDelay() にて設定された最大時間を経過するか 最大のメッセージサイズに達するかで決定されます。 これらのいずれか、あるいは両方の条件を満たした場合、メッセージバンドルは相手先のステーションに向けて送信されます。 一方、手動でメッセージバンドルを送信する場合は、Station::FlushBundle() か、 Station::FlushAllBundles() を利用することで送信することが出来ます。 これら二つの関数はメッセージの最大サイズや、前回送信してからの経過時刻などの設定に関係なく送信されます。
規定値は、有効で、最大遅延時間は0で、Dispatchごとにバンドリングされて送信されます。
メッセージが、全員に送られるUnreliable(到着性を保証しない)メッセージと、Reliable(到着性を保証する)メッセージの場合で、 異なるキューに溜められてバンドリングされます。個別に送られるUnreliableメッセージは、バンドリングされません。
システム定義のReliableメッセージは、特にDOのDuplica同期時に多く生成されます。 ユーザー定義のReliableメッセージは、Reliableで更新することを指定したデータセット、 推定航法の連続性の切断(DataSet::IndicateContinuityBreak())、 CallContext::Flags の中にあるSendUnreliableMessageフラグのついていないRMC(リモートメソッドコール)が挙げられます。
メッセージバンドルについての詳細はNEXプログラミングマニュアルもご覧ください。
nn::nex::BundlingPolicy::BundlingPolicy | ( | ) |
このコンストラクタはアプリケーション側から呼び出さないでください。
このインスタンスは、ローカルのステーションが相手のステーションを発見されるたびに システムによって自動的に作成されます。BunldingPolicyを利用するためには、 GetInstance() メソッドによってインスタンスを取得してください。
|
virtual |
このデストラクタはアプリケーション側から呼び出さないでください。
このオブジェクトは、相手先のステーションとの接続が切れたとき、 あるいはセッションが終了したときに自動的に破棄されます。
|
static |
BundlingPolicyのインスタンスを取得します。
この関数を利用して取得したインスタンスをメッセージバンドルを制御するために利用してください。
void nn::nex::BundlingPolicy::Enable | ( | ) |
void nn::nex::BundlingPolicy::Disable | ( | ) |
qBool nn::nex::BundlingPolicy::IsEnabled | ( | ) | const |
void nn::nex::BundlingPolicy::SetMaximumFlushDelay | ( | TimeInterval | tiDelay | ) |
ためられたメッセージを送信するための遅延時間(送信まで どのぐらい待つか)を指定します。
遅延時間が過ぎるまで、送信されようとしたメッセージはすべて内部的にためられ、送信されません。 この遅延時間が経過したあと、溜められたメッセージはバンドリングされ、次回Dispatch時に実際に送信されます。 その際には、StreamBundlingによるパケットのバンドリングがフラッシュされます。
0の場合には、Dispatchの終わりに行われるパケット送信処理直前までためられてバンドリングされます。 また、StreamBundlingによるパケットのバンドリングをフラッシュしないため、パケットのバンドリングとの併用も可能です。
[in] | tiDelay | 最大遅延時間をミリ秒単位で指定します。0の場合は、Dispatchの終わりに行われるパケット送信処理直前までためられます。 規定値は、0です。 |
TimeInterval nn::nex::BundlingPolicy::GetMaximumFlushDelay | ( | ) | const |
最大遅延時間をミリ秒単位で取得します。
遅延時間が過ぎるまで、送信されようとしたメッセージはすべて内部的にためられ、送信されません。 この遅延時間が経過したあと、それらのバンドルされたメッセージは一度に送信されます。
この関数は、SetMaximumFlushDelay() で指定された値を返します。
void nn::nex::BundlingPolicy::SetEnableUnreliableBundling | ( | qBool | b | ) |
Unreliableメッセージをバンドリングするか指定します。
[in] | b | バンドリングの設定フラグ |
qBool nn::nex::BundlingPolicy::IsEnableUnreliableBundling | ( | ) |
Unreliableメッセージをバンドリングするかを取得します。
デフォルトではTrueです。