CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
クラス nn::pia::transport::UnreliableProtocol

信頼性の無い(データ欠落の可能性がある)プロトコルのクラスです。 UnreliableProtocol は、データ到着の順序を保証しません。 送信側がデータを Send() した順で受信側がデータを Receive() できるとは限りません。 [詳細]

+ nn::pia::transport::UnreliableProtocolに対する継承グラフ

Public メソッド

void Finalize (void)
 インスタンスの終了処理を実行します。
 
uint32_t GetDataSizeLimit (void)
 一度に送信可能なデータサイズの上限を取得します。単位はバイトです。
 
Result Initialize (uint32_t recvBufNum=32)
 インスタンスを初期化します。
 
bool IsInCommunication (void) const
 通信可能な状態であるかどうかを判定します。
 
Result Receive (StationId *pSrcId, void *pRecvBuf, uint32_t *pRecvDataSize, uint32_t recvBuffSize)
 受信したデータをバッファに読み取ります。
 
Result Send (StationId destId, const void *pData, uint32_t dataSize)
 データを特定のステーションに向けて送信します。
 
Result SendToAll (const void *pData, uint32_t dataSize)
 データを全ステーションに向けて送信します。
 
virtual void Trace (uint64_t flag) const
 デバッグに有用な情報をプリントします。
 

Static Public 変数

static const uint32_t MaxDataSize = common::ProtocolMessgaePayloadSizeMax
 UnreliableProtocol で一度に送信/受信が可能なデータサイズの最大値です。単位はバイトです。
 

説明

信頼性の無い(データ欠落の可能性がある)プロトコルのクラスです。 UnreliableProtocol は、データ到着の順序を保証しません。 送信側がデータを Send() した順で受信側がデータを Receive() できるとは限りません。

関数

void nn::pia::transport::UnreliableProtocol::Finalize ( void  )

インスタンスの終了処理を実行します。

Initialize() が呼び出されていない状態でこの関数を呼び出した場合は、何もせずに返ります。

参照
Initialize
uint32_t nn::pia::transport::UnreliableProtocol::GetDataSizeLimit ( void  )

一度に送信可能なデータサイズの上限を取得します。単位はバイトです。

この API 呼び出しで返される値は、アプリケーションによる MTU 値の設定や、 パケットへの署名の有無に影響されます。 この関数はスレッドセーフです。

アプリケーションがメッシュを使用する場合は、メッシュのスタートアップ処理が 完了した後でこの API を呼び出す必要があります。これよりも早いタイミングで 呼び出すと、正しい値が返されません。

アプリケーションがセッションを使用する場合は、セッション参加後にこの API を 呼び出す必要があります。これよりも早いタイミングで呼び出すと、正しい値が 返されないことがあります。

戻り値
Send(), SendToAll() で一度に送信可能なデータサイズの上限が返されます。単位はバイトです。
参照
Send, SendToAll
Result nn::pia::transport::UnreliableProtocol::Initialize ( uint32_t  recvBufNum = 32)

インスタンスを初期化します。

BeginSetup()EndSetup() 間で呼び出す必要があります。

引数
[in]recvBufNum受信バッファの個数。受信バッファ1個につき、約 1500 バイトのメモリが使用されます。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized transport モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAllocationFailed メモリ確保に失敗しました。 common::Initialize() 呼び出し時に、より多くのメモリを供給することを検討してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAlreadyInitialized UnreliableProtocol は既に初期化されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が誤っています。 recvBufNum に 0 を指定するなどした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidState BeginSetup()EndSetup() 間で呼び出されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

参照
Finalize
bool nn::pia::transport::UnreliableProtocol::IsInCommunication ( void  ) const

通信可能な状態であるかどうかを判定します。

戻り値
通信が可能な状態であれば true 、そうでなければ false が返されます。
Result nn::pia::transport::UnreliableProtocol::Receive ( StationId pSrcId,
void *  pRecvBuf,
uint32_t *  pRecvDataSize,
uint32_t  recvBuffSize 
)

受信したデータをバッファに読み取ります。

データを受信します。ただし、この関数呼び出しが無線モジュールの受信処理実行のトリガーとなっている わけではありません。 無線モジュールからパケットを受信する処理は、 Pia 内部の受信スレッドによって定期的に実行されています。 この受信スレッドが受信したパケットは、 PiaTransport のディスパッチ処理が実行されるタイミングで パケット解析処理用バッファにコピーされ、データが復元されます。 この関数は、このようにして復元されたデータをアプリケーション側で用意したバッファにコピーする処理を実行します。

引数
[out]pSrcId読み取ったデータの送信元 StationId が書き込まれます。
[out]pRecvBufデータの読み取り先バッファです。
[out]pRecvDataSize実際に読み取ることのできたデータサイズが書き込まれます。単位はバイトです。
[in]recvBuffSizeデータの読み取り先バッファのサイズを指定します。単位はバイトです。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultBufferShortage 読み取りバッファのサイズが不足しています。 recvBuffSize で指定したサイズを上回る大きさのデータが到着していた場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNoData 受信バッファが空っぽで、読み取ることのできるデータがありませんでした。アプリケーションで適切にハンドリングしてください。

ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。

ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。

参照
Send, SendToAll, MaxDataSize
Result nn::pia::transport::UnreliableProtocol::Send ( StationId  destId,
const void *  pData,
uint32_t  dataSize 
)

データを特定のステーションに向けて送信します。

データを送信します。ただし、この関数を呼び出しただけでは実際のデータ送信は行われません。 この関数は、アプリケーションが渡したデータを Pia 内部のパケット生成処理用バッファにコピーします。 その後、 PiaTransport のディスパッチ処理が実行されることで、パケット生成処理用バッファにコピー されていたデータ群がパケットにまとめられ、 Pia 内部の送信スレッドに渡されます。実際の送信処理は、 この送信スレッドが定期的にパケットを無線モジュールに渡すことで行われます。

引数
[in]destId送信先の StationId 。
[in]pData送信したいデータの先頭を指すポインタ。
[in]dataSize送信データサイズ。単位はバイトです。 GetDataSizeLimit() が返す値を超過してはいけません。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。

ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。

ResultNotFound 指定された送信先が見つかりません。

参照
SendToAll, Receive, MaxDataSize, GetDataSizeLimit, IsInCommunication
Result nn::pia::transport::UnreliableProtocol::SendToAll ( const void *  pData,
uint32_t  dataSize 
)

データを全ステーションに向けて送信します。

データを送信します。ただし、この関数を呼び出しただけでは実際のデータ送信は行われません。 この関数は、アプリケーションが渡したデータを Pia 内部のパケット生成処理用バッファにコピーします。 その後、 PiaTransport のディスパッチ処理が実行されることで、パケット生成処理用バッファにコピー されていたデータ群がパケットにまとめられ、 Pia 内部の送信スレッドに渡されます。実際の送信処理は、 この送信スレッドが定期的にパケットを無線モジュールに渡すことで行われます。

引数
[in]pData送信したいデータの先頭を指すポインタ。
[in]dataSize送信データサイズ。単位はバイトです。 GetDataSizeLimit() が返す値を超過してはいけません。
戻り値
成功すれば、 IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。

ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。

参照
Send, Receive, MaxDataSize, GetDataSizeLimit, IsInCommunication
virtual void nn::pia::transport::UnreliableProtocol::Trace ( uint64_t  flag) const
virtual

デバッグに有用な情報をプリントします。

引数
[in]flagトレースフラグの論理和。詳細は TraceFlag 型を参照してください。

nn::pia::transport::Protocolを再定義しています。

nn::pia::transport::RoundRobinUnreliableProtocolで再定義されています。

変数

const uint32_t nn::pia::transport::UnreliableProtocol::MaxDataSize = common::ProtocolMessgaePayloadSizeMax
static

UnreliableProtocol で一度に送信/受信が可能なデータサイズの最大値です。単位はバイトです。

この定数値は 1440 ですが、アプリケーションが小さめの MTU 値を設定した場合には、実際に 送受信可能なデータサイズはこの値よりも小さくなります。