nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
このクラスのオブジェクトは TCP トランスポート エンドポイントを表します。
概要
Nest Inet Layer は、システムが適切に構成されている場合、TCP トランスポート エンドポイント(Linux および BSD 派生システムの SOCK_STREAM ソケット)または LwIP TCP プロトコル制御ブロックとやり取りするためのメソッドをカプセル化します。
継承
継承元: nl::Inet::EndPointBasis
パブリック タイプ |
|
---|---|
@10{
|
enum 基盤となるエンドポイントの基本的な動的状態。 |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
接続受け入れエラーイベント処理関数のタイプ。 |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
接続確立イベント処理関数のタイプ。 |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
接続確立イベント処理関数のタイプ。 |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
接続受信イベント処理関数のタイプ。 |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
データ受信イベント処理関数のタイプ。 |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
データ転送イベント処理関数のタイプ。 |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
半クローズ受信イベント処理関数のタイプ。 |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
TCP SendIdle 変更信号処理関数のタイプ。 |
パブリック属性 |
|
---|---|
OnAcceptError
|
エンドポイントの接続受け入れイベント処理関数のデリゲート。
|
OnConnectComplete
|
エンドポイントの接続確立イベント処理関数のデリゲート。
|
OnConnectionClosed
|
エンドポイントのクローズ イベント処理関数のデリゲート。
|
OnConnectionReceived
|
エンドポイントの接続受信イベント処理関数のデリゲート。
|
OnDataReceived
|
エンドポイントのメッセージ テキスト受信イベント処理関数のデリゲート。
|
OnDataSent
|
エンドポイントのメッセージ テキスト送信イベント処理関数のデリゲート。
|
OnPeerClose
|
エンドポイントの半クローズ受信イベント処理関数のデリゲート。
|
OnTCPSendIdleChanged
|
TCP 接続の送信チャネルのアイドル状態が変化したときのエンドポイント シグナリングのイベント処理機能がデリゲートします。
|
ReceiveEnabled
|
bool
アプリがデータを受信しているかどうかを示す制御スイッチ。
|
State
|
enum nl::Inet::TCPEndPoint::@10
基盤となるエンドポイントの基本的な動的状態。
|
パブリック関数 |
|
---|---|
Abort(void)
|
void
エンドポイントを中断して閉じます(RST パケットを送信します)。
|
AckReceive(uint16_t len)
|
メッセージ テキストの受信を承認します。
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
エンドポイントをインターフェース IP アドレスにバインドします。
|
Close(void)
|
TCP フルクローズを開始します。つまり、送信と受信の両方を終了します。
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
TCP 接続を開始します。
|
DisableKeepAlive(void)
|
TCP の「キープアライブ」オプションを無効にします。
|
DisableReceive(void)
|
void
受信を無効にします。
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
TCP の「keep-alive」オプションを有効にする。
|
EnableNoDelay(void)
|
EnableNoDelay。
|
EnableReceive(void)
|
void
受信を有効にします。
|
Free(void)
|
void
TCP 完全クローズを開始(または続行)し、エラーを無視します。
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
ローカル エンドポイントの IP アドレスと TCP ポートを抽出します。
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
リモート エンドポイントの IP アドレスと TCP ポートを抽出します。
|
IsConnected(void) const
|
bool
TCP 接続が確立されているかどうかを抽出します。
|
Listen(uint16_t backlog)
|
TCP メッセージを受信するようにエンドポイントを準備します。
|
LogId(void)
|
uint16_t
エンドポイントの識別子を取得します。
|
MarkActive(void)
|
void
アクティビティを記録します。つまり、アイドル タイマーをリセットします。
|
PendingReceiveLength(void)
|
uint32_t
未確認の受信データの長さを抽出します。
|
PendingSendLength(void)
|
uint32_t
最初の送信を待機しているデータの長さを抽出します。
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
メッセージ テキストを受信キューの先頭にプッシュします。
|
Send(Weave::System::PacketBuffer *data, bool push)
|
TCP 接続でメッセージ テキストを送信します。
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Connect が成功するかエラーを返すまでのタイムアウトを設定します。
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
TCP TCP_USER_TIMEOUT ソケット オプションを設定します。
|
Shutdown(void)
|
TCP ハーフクローズを開始します。つまり、送信を終了します。
|
パブリック タイプ
10
@10
基盤となるエンドポイントの基本的な動的状態。
オブジェクトは「準備完了」状態で初期化され、TCP トランスポート ステートマシンの状態の単純化に対応する後続の状態に進みます。
注: 過去のバイナリ互換性の理由から、kBasisState_Closed
状態列挙型は kState_Ready
にマッピングされています。既存の kState_Closed
は、これまで kState_Ready
状態と kState_Closed
状態であった「まだ開いていない」と「前回開いた後、閉じた状態」を別々に識別するために存在します。
プロパティ | |
---|---|
kState_Bound
|
エンドポイントはバインドされていますが、リッスンしていません。 |
kState_Closed
|
エンドポイントが閉じ、リリースの準備ができています。 |
kState_Closing
|
エンドポイントが双方向で閉じられる。 |
kState_Connected
|
エンドポイントが接続され、送信/受信の準備ができています。 |
kState_Connecting
|
接続を試行しているエンドポイント。 |
kState_Listening
|
接続を受信するエンドポイント。 |
kState_Ready
|
エンドポイントは初期化されましたが、バインドされていません。 |
kState_ReceiveShutdown
|
エンドポイントが半クローズに応答。 |
kState_SendShutdown
|
エンドポイントが半クローズを開始しました。 |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
接続受け入れエラーイベント処理関数のタイプ。
endPoint
で接続承認エラーイベントを処理するために、このタイプの関数を OnAcceptError
委譲メンバーに提供します。err
引数は、エラーの種類に関する具体的な詳細を提供します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
接続確立イベント処理関数のタイプ。
このタイプの関数を OnConnectComplete
委譲メンバーに渡して、endPoint
での接続確立イベントを処理します。err
引数は、成功した接続と失敗を区別します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
接続確立イベント処理関数のタイプ。
このタイプの関数を OnConnectionClosed
委譲メンバーに渡して、endPoint
での接続終了イベントを処理します。err
引数は、正常な終了と失敗を区別します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
接続受信イベント処理関数のタイプ。
このタイプの関数を OnConnectionReceived
デリゲート メンバーに渡して、listeningEndPoint
で接続受信イベントを処理します。新しく受信したエンドポイント conEndPoint
は、IP アドレス peerAddr
と TCP ポート peerPort
にあります。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
データ受信イベント処理関数のタイプ。
この型の関数を OnDataReceived
委譲メンバーに提供して、endPoint
でのデータ受信イベントを処理します。ここで、data
は受信したメッセージ テキストです。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
データ受信イベント ハンドラは、AckReceive
メソッドを使用して処理されたデータの確認応答を行う必要があります。代わりに PutBackReceivedData
を使用する場合を除き、データバッファの Free
メソッドも呼び出す必要があります。
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
データ転送イベント処理関数のタイプ。
このタイプの関数を OnDataSent
委譲メンバーに提供して、endPoint
でデータ転送イベントを処理します。ここで、len
は、基盤となるネットワーク スタックによる送信の対象となる、TCP 送信ウィンドウに追加されたメッセージ テキストの長さです。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
半クローズ受信イベント処理関数のタイプ。
このタイプの関数を OnPeerClose
委譲メンバーに渡して、endPoint
での接続終了イベントを処理します。
詳細 | |||
---|---|---|---|
パラメータ |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
TCP SendIdle 変更信号処理関数のタイプ。
このタイプの関数を OnTCPSendIdleChanged
委譲メンバーに提供して、TCPEndPoint の送信チャネルがアイドル状態かアイドル状態でないかを切り替えるイベントを処理します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
パブリック属性
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
TCP 接続の送信チャネルのアイドル状態が変化したときのエンドポイント シグナリングのイベント処理機能がデリゲートします。
上位レイヤは、これを利用して、送信されたデータがピアに確実に配信されたかどうかに基づいて適切なアクションを実行します。
ReceiveEnabled
bool ReceiveEnabled
アプリがデータを受信しているかどうかを示す制御スイッチ。
状態
enum nl::Inet::TCPEndPoint::@10 State
基盤となるエンドポイントの基本的な動的状態。
オブジェクトは「準備完了」状態で初期化され、TCP トランスポート ステートマシンの状態の単純化に対応する後続の状態に進みます。
注: 過去のバイナリ互換性の理由から、kBasisState_Closed
状態列挙型は kState_Ready
にマッピングされています。既存の kState_Closed
は、これまで kState_Ready
状態と kState_Closed
状態であった「まだ開いていない」と「前回開いた後、閉じた状態」を別々に識別するために存在します。
パブリック関数
中止(abort)
void Abort( void )
エンドポイントを中断して閉じます(RST パケットを送信します)。
AckReceive
INET_ERROR AckReceive( uint16_t len )
メッセージ テキストの受信を承認します。
このメソッドは、受信したデータのすべてまたは一部の受信を確認するために使用します。len
が未確認の受信データの合計よりも大きい場合、オペレーション セマンティクスは未定義になります。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
バインド
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
エンドポイントをインターフェース IP アドレスにバインドします。
指定されたネットワーク インターフェース IP アドレスにエンドポイントをバインドします。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
LwIP では、LwIP スタックロックがすでに取得されている状態でこのメソッドを呼び出すことはできません。
閉じる
INET_ERROR Close( void )
TCP フルクローズを開始します。つまり、送信と受信の両方を終了します。
詳細 | |||||||
---|---|---|---|---|---|---|---|
戻り値 |
|
交流
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
TCP 接続を開始します。
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
TCP の「キープアライブ」オプションを無効にします。
関連する TCP 接続で TCP キープアライブ プローブを無効にします。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
戻り値 |
|
注: このメソッドは、エンドポイントが接続状態のいずれかにある場合にのみ呼び出すことができます。エンドポイントでキープアライブが有効になっていない場合、このメソッドは何も行いません。
DisableReceive
void DisableReceive( void )
受信を無効にします。
すべてのイベント ハンドラを無効にします。受信を無効にするエンドポイントに送信されたデータは、受信ウィンドウを使い切るまで確認応答されます。
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
TCP の「keep-alive」オプションを有効にする。
interval
秒ごとに TCP の「キープアライブ」プローブ セグメントの自動送信を開始します。接続は、否定的なレスポンスを受信した後、または肯定的なレスポンスを受信せずに timeoutCount
プローブ セグメントを送信した後、自動的に中止されます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
仕様の詳細については、RFC 1122 のセクション 4.2.3.6 をご覧ください。
関連付けられた TCP 接続で TCP キープアライブ プローブを有効にします。
注: このメソッドは、エンドポイントが接続状態のいずれかにある場合にのみ呼び出すことができます。キープアライブ間隔またはタイムアウト数を調整するために、このメソッドを複数回呼び出すことができます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay。
TCP_NODELAY ソケット オプションを設定して、TCP の Nagle バッファリング アルゴリズムをオフにします。
EnableReceive
void EnableReceive( void )
受信を有効にします。
すべてのイベント ハンドラを有効にする。受信を無効にするエンドポイントに送信されたデータは、受信ウィンドウを使い切るまで確認応答されます。
無料
void Free( void )
TCP 完全クローズを開始(または続行)し、エラーを無視します。
オブジェクトは空きプールに戻され、残りのユーザー参照はすべて無効になります。
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
ローカル エンドポイントの IP アドレスと TCP ポートを抽出します。
どちらの引数にも NULL
ポインタ値を使用しないでください。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
リモート エンドポイントの IP アドレスと TCP ポートを抽出します。
どちらの引数にも NULL
ポインタ値を使用しないでください。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
IsConnected
bool IsConnected( void ) const
TCP 接続が確立されているかどうかを抽出します。
読み上げる
INET_ERROR Listen( uint16_t backlog )
TCP メッセージを受信するようにエンドポイントを準備します。
State
がすでに kState_Listening
の場合、オペレーションは実行されません。それ以外の場合は、State
が kState_Listening
に設定され、プラットフォームのセマンティクスに従って、TCP メッセージを受信する準備が整います。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
プラットフォームによっては、backlog
引数は使用されません(キューの深さは固定されており、一度に受け入れられる接続は 1 つだけです)。
LwIP システムでは、すでに取得済みの LwIP スタックロックでこのメソッドを呼び出してはならない
LogId
uint16_t LogId( void )
エンドポイントの識別子を取得します。
詳細 | |
---|---|
戻り値 |
使用ログの不透明な一意の識別子を返します。
|
MarkActive
void MarkActive( void )
アクティビティを記録します。つまり、アイドル タイマーをリセットします。
アイドル タイマーをゼロにリセットします。
PendingReceiveLength
uint32_t PendingReceiveLength( void )
PendingSendLength
uint32_t PendingSendLength( void )
最初の送信を待機しているデータの長さを抽出します。
詳細 | |
---|---|
戻り値 |
送信キュー内の未送信バイト数。
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
メッセージ テキストを受信キューの先頭にプッシュします。
このメソッドは、データの未確認の部分を受信キューに戻すためにのみ、データ受信イベント ハンドラによって呼び出すことができます。呼び出し元がデータ受信イベント ハンドラのスコープ外にある場合、data
がハンドラに提供された Weave::System::PacketBuffer
でない場合、または data
に以前の AckReceive(uint16_t len)
メソッドの呼び出しによって確認されたバイトの後に残っている未確認部分が含まれていない場合、オペレーション セマンティクスは未定義です。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
送信
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
TCP 接続でメッセージ テキストを送信します。
Weave::System::PacketBuffer::Free
メソッドは、送信が成功したかどうかにかかわらず、data
引数で呼び出されます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Connect が成功するかエラーを返すまでのタイムアウトを設定します。
詳細 | |||
---|---|---|---|
パラメータ |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
TCP TCP_USER_TIMEOUT ソケット オプションを設定します。
値が 0 より大きい場合、TCP が対応する接続を強制的に閉じるまでに、送信されたデータが確認応答されないままとなる最長時間をミリ秒単位で指定します。このオプションの値を 0 に指定すると、TCP はシステムのデフォルトを使用します。詳しくは、RFC 5482 をご覧ください。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
TCP ユーザー タイムアウト ソケット オプションを設定します。
値が 0 より大きい場合、TCP が対応する接続を強制的に閉じるまでに、送信されたデータが確認応答されないままとなる最長時間をミリ秒単位で指定します。このオプションの値を 0 に指定すると、TCP はシステムのデフォルトを使用します。詳しくは、RFC 5482 をご覧ください。
注: このメソッドは、エンドポイントが接続状態のいずれかにある場合にのみ呼び出すことができます。キープアライブ間隔またはタイムアウト数を調整するために、このメソッドを複数回呼び出すことができます。
シャットダウン
INET_ERROR Shutdown( void )
TCP ハーフクローズを開始します。つまり、送信を終了します。
詳細 | |||||||
---|---|---|---|---|---|---|---|
戻り値 |
|