CTR-Pia
5.4.3
Game Communication Engine
|
信頼性の無い(データ欠落の可能性がある)プロトコルのクラスです。 UnreliableProtocol は、データ到着の順序を保証しません。 送信側がデータを Send() した順で受信側がデータを Receive() できるとは限りません。 [詳細]
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 | ) |
uint32_t nn::pia::transport::UnreliableProtocol::GetDataSizeLimit | ( | void | ) |
一度に送信可能なデータサイズの上限を取得します。単位はバイトです。
この API 呼び出しで返される値は、アプリケーションによる MTU 値の設定や、 パケットへの署名の有無に影響されます。 この関数はスレッドセーフです。
アプリケーションがメッシュを使用する場合は、メッシュのスタートアップ処理が 完了した後でこの API を呼び出す必要があります。これよりも早いタイミングで 呼び出すと、正しい値が返されません。
アプリケーションがセッションを使用する場合は、セッション参加後にこの API を 呼び出す必要があります。これよりも早いタイミングで呼び出すと、正しい値が 返されないことがあります。
Result nn::pia::transport::UnreliableProtocol::Initialize | ( | uint32_t | recvBufNum = 32 | ) |
インスタンスを初期化します。
BeginSetup() ~ EndSetup() 間で呼び出す必要があります。
[in] | recvBufNum | 受信バッファの個数。受信バッファ1個につき、約 1500 バイトのメモリが使用されます。 |
ResultNotInitialized transport モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultAllocationFailed メモリ確保に失敗しました。 common::Initialize() 呼び出し時に、より多くのメモリを供給することを検討してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultAlreadyInitialized UnreliableProtocol は既に初期化されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidArgument 引数が誤っています。 recvBufNum に 0 を指定するなどした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidState BeginSetup() ~ EndSetup() 間で呼び出されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
bool nn::pia::transport::UnreliableProtocol::IsInCommunication | ( | void | ) | const |
通信可能な状態であるかどうかを判定します。
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 | データの読み取り先バッファのサイズを指定します。単位はバイトです。 |
ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultBufferShortage 読み取りバッファのサイズが不足しています。 recvBuffSize で指定したサイズを上回る大きさのデータが到着していた場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNoData 受信バッファが空っぽで、読み取ることのできるデータがありませんでした。アプリケーションで適切にハンドリングしてください。
ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。
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() が返す値を超過してはいけません。 |
ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。
ResultNotFound 指定された送信先が見つかりません。
Result nn::pia::transport::UnreliableProtocol::SendToAll | ( | const void * | pData, |
uint32_t | dataSize | ||
) |
データを全ステーションに向けて送信します。
データを送信します。ただし、この関数を呼び出しただけでは実際のデータ送信は行われません。 この関数は、アプリケーションが渡したデータを Pia 内部のパケット生成処理用バッファにコピーします。 その後、 PiaTransport のディスパッチ処理が実行されることで、パケット生成処理用バッファにコピー されていたデータ群がパケットにまとめられ、 Pia 内部の送信スレッドに渡されます。実際の送信処理は、 この送信スレッドが定期的にパケットを無線モジュールに渡すことで行われます。
[in] | pData | 送信したいデータの先頭を指すポインタ。 |
[in] | dataSize | 送信データサイズ。単位はバイトです。 GetDataSizeLimit() が返す値を超過してはいけません。 |
ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。
|
virtual |
デバッグに有用な情報をプリントします。
[in] | flag | トレースフラグの論理和。詳細は TraceFlag 型を参照してください。 |
nn::pia::transport::Protocolを再定義しています。
|
static |
UnreliableProtocol で一度に送信/受信が可能なデータサイズの最大値です。単位はバイトです。
この定数値は 1440 ですが、アプリケーションが小さめの MTU 値を設定した場合には、実際に 送受信可能なデータサイズはこの値よりも小さくなります。