Skip to main content
メッセージ送信時のローカル キューイング動作を変更するためのオプションの構成パラメーターです。

Syntax

Members

priority   int8_t チャット データや他のローカル エンドポイントから送信されるメッセージとの関係における、ローカルにキューイングされたメッセージの優先度です。 priorityc_minSendMessageQueuingPriority 以上 c_maxSendMessageQueuingPriority 以下の値でなければなりません。数値が大きいほど、低い数値に対して相対的な優先度が高い (先に送信される) ことを表します。PartySendMessageQueuingConfiguration 構造体が PartyLocalEndpoint::SendMessage() に提供されない場合の既定値は c_defaultSendMessageQueuingPriority で、符号付き整数範囲のちょうど中央 (ゼロ) にあります。

送信キューの優先度は、特定のローカル エンドポイントから送信されたメッセージが送信または配信される順序を変更しません。異なるローカル エンドポイントからのメッセージ間の順序、またはエンドポイントと内部的に送信されるチャット データ (優先度 c_chatSendMessageQueuingPriority を使用) との間の順序にのみ影響します。最も高い優先度値のメッセージを持つローカル エンドポイントの送信キューが、最初に送信可能となるメッセージを持ちます。ローカル エンドポイントによってキューイングされた残りのメッセージがすべて同じ優先度である場合、個々のメッセージは、それらの PartyLocalEndpoint::SendMessage() 呼び出しが発生したのと同じ順序で送信可能となります。

この動作を考える 1 つの方法は、高優先度メッセージは、同じローカル エンドポイントからの過去のすべてのメッセージの優先度を自動的に同じ値に引き上げ、高優先度メッセージのタイムリーな配信を保証しつつ、ローカル エンドポイントによって以前送信されたメッセージの順次配信の期待を破らないようにする、というものです。他のローカル エンドポイントには独自の送信シーケンスがあり、そのような順序保証はありません (ただし Party ライブラリは、可能な限り元の送信順序を保持するようにベストエフォートで試みます)。

メッセージの送信キューの優先度は、接続品質や受信側の応答性のために、送信すべきバイト数が接続でサポートできる量を超える場合に重要になります。より重要なメッセージをより高い優先度で送信することで、限られたネットワーク リソースを最初に使用する機会が確保されます。送信を成功できる速度よりも速くメッセージを送り続けると、低優先度メッセージが「飢餓状態」になり、関連するローカル エンドポイントの送信キューが増え続ける可能性があります。PartyLocalEndpoint::CancelMessages() で不要なメッセージをキャンセルする、timeoutInMilliseconds フィールドを使用して長時間キューに残されたメッセージを自動的にタイムアウトさせる、または単に PartyLocalEndpoint::SendMessage() 呼び出しのサイズや頻度を減らすなどして、そのような潜在的な増加を確実に管理してください。
identityForCancelFilters   uint32_t キャンセル フィルター式に対するメッセージの適用可能性を評価するときに使用する、呼び出し元定義の値です。 このメッセージ識別値は、呼び出し元固有の意味を持つことができ、Party ライブラリによっては、PartyLocalEndpoint::CancelMessages() がオプションで提供されるキャンセル フィルター式に対してメッセージが一致するかどうかを評価するときに使用される以外には解釈されません。

PartySendMessageQueuingConfiguration 構造体が PartyLocalEndpoint::SendMessage() に提供されない場合、既定値のゼロが使用されます。

メッセージのキャンセルは、ネットワーク状態が悪いときにローカル送信キューが過度に増加するのを防ぐのに役立ちます。特定のフィルター式に一致するメッセージ識別をキャンセルすることは、最新の情報で定期的に送信されるメッセージのカテゴリがあり、まだ送信の機会を待っている以前にキューイングされた古いメッセージを置き換える必要がある場合に効果的です。キャンセルはまた、損失が致命的ではなく、より価値のあるキューイング済みメッセージの代わりに送信を試みる帯域幅の価値がない、日和見的メッセージのインスタンスやカテゴリを持つ場合にも役立ちます。

このローカル識別値は送信されるデータ ペイロードの一部ではありません。メッセージが送信を開始すると適用されなくなり、PartyLocalEndpoint::CancelMessages() によってローカル送信キューから削除できなくなります。
timeoutInMilliseconds   uint32_t メッセージが送信の機会を待って Party 管理の送信キューにとどまることが許可される最大時間 (ミリ秒) です。 接続品質や受信側の応答性のために、このタイムアウトが経過してもメッセージの送信が開始されていない場合、メッセージは中止され、送信されずにキューから削除されます。

timeoutInMilliseconds 値がゼロの場合、タイムアウトがなく、メッセージが正常に送信されるか、明示的にキャンセルされるか、リモート切断などの送信失敗が発生するまで、キューに残ることを示します。PartySendMessageQueuingConfiguration 構造体が PartyLocalEndpoint::SendMessage() に提供されない場合、ゼロが既定値です。

メッセージ送信キュー タイムアウトは、ネットワーク状態が悪いときに送信キューが過度に増加するのを防ぐのに役立ちます。時間的制約のある定期的なデータを含むメッセージで、新しい完全な置換メッセージが定期的に送信されるため古いメッセージを送信するのは帯域幅の無駄であり、個々のメッセージの損失が致命的ではない場合によく機能します。

このタイムアウト値は、Party 管理の送信キューイングにのみ影響します。実際にメッセージを送信するのに要する時間 (環境レイテンシ) には影響せず、該当する場合の受信側による送信確認応答を待つ時間も変更しません。

このタイムアウト値は、直接ピア接続を持たないターゲットに送信する場合、2 回評価されます。1 回目は送信クライアントの透過的クラウド リレーへのローカル送信キューに対して、ローカルの環境状態やリレーへの送信速度の影響を受けて評価されます。2 回目はリレー自体で評価されます。リレーは、リモート ターゲットのネットワーク状態、送信速度、応答性の違いに基づいて、転送前にメッセージをキューイングする必要がある場合があります。

Requirements

Header: Party.h

See also

Party members
PartyLocalEndpoint::SendMessage
最終更新日 2026年8月13日