int NET_WaitUntilStreamSocketDrained(NET_StreamSocket *sock, Sint32 timeout);
| NET_StreamSocket * | sock | 送信完了を待つストリームソケット |
| Sint32 | timeout | 接続の完了まで待つ時間(ミリ秒). -1のとき無限に待つ. 0のとき待たずにチェックする |
NET_WriteToStreamSocket()は即座に全てのデータを送れなかったとき, 後で送るためにキューに入れる. アプリケーションはこの関数で全てのデータを送信するまで待つことができる.
この関数は接続の完了までどれだけ待つかのミリ秒単位のタイムアウト時間を引数とする. タイムアウト時間に-1を指定すると無限に待ち, 0を指定すると現在の状態をチェックして即座に戻る(これは機能的にはNET_GetStreamSocketPendingWritesと同等である).
プログラムをブロックしたくない場合は, NET_GetConnectionStatusを0以下を戻すまで定期的に呼び出すこと.
接続に失敗すると(リモート側の切断や, 様々な種類のネットワーク障害の発生により), この関数は-1を戻して失敗を報告する. ストリームソケットが失敗を報告するのは回復不能な場合のみであるため, 一度ソケットが失敗すると使用することはできないとみなし, NET_DestroyStreamSocket()で破棄する必要がある.
同じソケットを複数のスレッドから同期を行わずに使用してはならない. しかし, 異なるスレッドから別々のソケットに同時にアクセスすることは問題ない.