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 の完全クローズ、つまり送受信の両方で完了した TCP を開始します。
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
TCP 接続を開始します。
|
DisableKeepAlive(void)
|
TCP「keep-alive」を無効にする選択します。
|
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
は、「まだ開いていません」との区別を区別するために存在します。および「previously open now(現在
終了」以前の kState_Ready
状態と kState_Closed
状態に存在していた新しい UDM 値を返します。
プロパティ | |
---|---|
kState_Bound
|
エンドポイントにバインドされていますが、リッスンしていません。 |
kState_Closed
|
エンドポイントが閉じ、リリースの準備ができました。 |
kState_Closing
|
エンドポイントが双方向に閉じる。 |
kState_Connected
|
エンドポイントが接続され、TX/RX の準備ができました。 |
kState_Connecting
|
接続を試行するエンドポイント。 |
kState_Listening
|
接続を受信するエンドポイント。 |
kState_Ready
|
エンドポイントは初期化されていますが、バインドされていません。 |
kState_ReceiveShutdown
|
エンドポイントがハーフクローズに応答しました。 |
kState_SendShutdown
|
エンドポイントがハーフクローズを開始しました。 |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
接続受け入れエラーイベント処理関数のタイプ。
このタイプの関数を OnAcceptError
委任メンバーに提供して、endPoint
での接続承認エラーイベントを処理します。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
は、「まだ開いていません」との区別を区別するために存在します。および「previously open now(現在
終了」以前の kState_Ready
状態と kState_Closed
状態に存在していた新しい UDM 値を返します。
パブリック関数
中止
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 の完全クローズ、つまり送受信の両方で完了した 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「keep-alive」を無効にする選択します。
TCPEndPoint::DisableKeepAlive.
関連する TCP 接続で TCP キープアライブ プローブを無効にします。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
戻り値 |
|
注: このメソッドは、エンドポイントがいずれかの接続状態にある場合にのみ呼び出すことができます。 エンドポイントでキープアライブが有効になっていない場合、このメソッドは何も行いません。
DisableReceive
void DisableReceive( void )
受信を無効にする。
すべてのイベント ハンドラを無効にします。受信を無効にするエンドポイントに送信されたデータは、受信ウィンドウが終了するまで確認応答されます。
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
TCP の「keep-alive」を有効にする選択します。
TCP「keep-alive」の送信を自動的に開始するinterval
秒ごとにプローブ セグメントを失います。否定的なレスポンスを受け取った後、または肯定的なレスポンスを受け取らずに timeoutCount
プローブ セグメントを送信した後に、接続が自動的に中止されます。
詳細 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||
戻り値 |
|
仕様の詳細については、RFC 1122 のセクション 4.2.3.6 をご覧ください。
関連する TCP 接続で TCP キープアライブ プローブを有効にします。
注: このメソッドは、エンドポイントがいずれかの接続状態にある場合にのみ呼び出すことができます。 このメソッドは、キープアライブ間隔またはタイムアウト カウントを調整するため複数回呼び出すことができます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay。
TCP_NODELAY ソケット オプションを設定して、TCP でネイグル バッファリング アルゴリズムをオフにします。
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
でない場合、あるいは AckReceive(uint16_t len)
メソッドへの前回の呼び出しで確認されたバイトの後に残っている未確認部分が data
に含まれていない場合、オペレーション セマンティクスは未定義になります。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
送信
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 のハーフクローズ、つまり送信を開始する。
詳細 | |||||||
---|---|---|---|---|---|---|---|
戻り値 |
|