nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

これにより、タイマー、ドメイン ネーム システム(DNS)の解決、TCP ネットワーク トランスポート、UDP ネットワーク トランスポート、raw ネットワーク トランスポートなど、1 つのスレッドからインターネット サービスにアクセスできます。

概要

BSD/POSIX ソケットの場合、イベントの準備状況の通知は、ファイル記述子と、プラットフォーム適応上の従来のポーリング / 選択実装を介して処理されます。

LwIP の場合、イベント準備状況通知は、イベント / メッセージと、イベント / メッセージ システムのプラットフォーム / システム固有のフックを介して処理されます。

コンストラクタとデストラクタ

InetLayer(void)
これは InetLayer デフォルト コンストラクタです。

パブリック タイプ

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
InetLayer オブジェクトの現在の状態。
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

パブリック属性

State
enum nl::Inet::InetLayer::@5
InetLayer オブジェクトの現在の状態。

公開静的属性

sInetEventHandlerDelegate

パブリック関数

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
まだアクティブである可能性のある未解決の DNS クエリ(完了コールバックとアプリケーションの状態が一致する場合)をキャンセルします。
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
指定された IP アドレスのインターフェース識別子を取得します。
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
指定されたリンクまたはインターフェースのリンクローカル IPv6 アドレスを取得します。
GetPlatformData(void)
void *
インスタンスに割り当てられているクライアント固有のプラットフォーム データがすべて返されます(すでに設定されている場合)。
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
select 呼び出しからの I/O を処理します。
Init(Weave::System::Layer & aSystemLayer, void *aContext)
これは InetLayer の明示的イニシャライザです。
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
指定した IPv6 アドレスとローカルに設定されたすべての IPv6 アドレスの間にプレフィックス一致があるかどうかを確認します。
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
特定の IP バージョンとプロトコル用に新しい RawEndPoint オブジェクトを作成します。
NewTCPEndPoint(TCPEndPoint **retEndPoint)
新しい TCPEndPoint オブジェクトを作成します。
NewTunEndPoint(TunEndPoint **retEndPoint)
新しい TunEndPoint オブジェクトを作成します。
NewUDPEndPoint(UDPEndPoint **retEndPoint)
新しい UDPEndPoint オブジェクトを作成します。
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
select() が処理するファイル記述子のセットを準備します。
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
指定されたホスト名の IP アドレスを解決します。
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
指定されたホスト名の IP アドレスを解決します。
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
指定されたホスト名の IP アドレスを解決します。
SetPlatformData(void *aPlatformData)
void
これにより、指定したクライアント固有のプラットフォーム データがインスタンスに設定され、後でクライアント プラットフォームが取得できるようになります。
Shutdown(void)
これは InetLayer の明示的な逆イニシャライザであり、インスタンス化された InetLayer インスタンスを破棄する前に呼び出す必要があります。
SystemLayer(void) const

静的パブリック関数

HandleInetLayerEvent(Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument)
Weave::System::Error
IsDroppableEvent(Weave::System::EventType aType)
bool
UpdateSnapshot(nl::Weave::System::Stats::Snapshot & aSnapshot)
void

パブリック タイプ

@5

 @5

InetLayer オブジェクトの現在の状態。

プロパティ
kState_Initialized

初期化された状態。

kState_NotInitialized

初期化されていない状態。

kState_ShutdownInProgress

シャットダウンがトリガーされた状態。

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

パブリック属性

状態

enum nl::Inet::InetLayer::@5 State

InetLayer オブジェクトの現在の状態。

[読み取り専用] 現在の状態。

公開静的属性

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

パブリック関数

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

まだアクティブである可能性のある未解決の DNS クエリ(完了コールバックとアプリケーションの状態が一致する場合)をキャンセルします。

詳細
パラメータ
[in] onComplete
DNS リクエストが完了したときのコールバック関数へのポインタ。
[in] appState
引数としてコールバック関数に渡されるアプリケーション状態オブジェクトへのポインタ。

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

INET_ERROR GetInterfaceFromAddr(
  const IPAddress & addr,
  InterfaceId & intfId
)

指定された IP アドレスのインターフェース識別子を取得します。

インターフェース識別子を導出できない場合は、INET_NULL_INTERFACEID に設定されます。

詳細
パラメータ
[in] addr
IPAddress オブジェクトへの参照。
[out] intfId
InterfaceId オブジェクトへの参照。
戻り値
INET_NO_ERROR を無条件に生成します。

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

指定されたリンクまたはインターフェースのリンクローカル IPv6 アドレスを取得します。

詳細
パラメータ
[in] link
リンクローカル IPv6 アドレスが検索されているインターフェース。
[out] llAddr
リンクのリンクローカル IPv6 アドレス。
戻り値
INET_ERROR_NOT_IMPLEMENTED
IPv6 がサポートされていない場合。
INET_ERROR_BAD_ARGS
リンクのローカル アドレスが NULL の場合。
INET_ERROR_ADDRESS_NOT_FOUND
リンクにアドレスが構成されていない場合。
INET_NO_ERROR
成功時。

GetPlatformData

void * GetPlatformData(
  void
)

インスタンスに割り当てられているクライアント固有のプラットフォーム データがすべて返されます(すでに設定されている場合)。

詳細
戻り値
クライアント固有のプラットフォーム データ。以前に設定されている場合は NULL。

HandleSelectResult

void HandleSelectResult(
  int selectRes,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds
)

select 呼び出しからの I/O を処理します。

このメソッドは、保留中の I/O イベントを各アクティブなエンドポイントに登録し、それらのエンドポイントのそれぞれの I/O 処理関数を呼び出します。

詳細
パラメータ
[in] selectRes
select 呼び出しの戻り値。
[in] readfds
読み取りファイル記述子のセットへのポインタ。
[in] writefds
書き込みファイル記述子のセットへのポインタ。
[in] exceptfds
エラーのあるファイル記述子のセットへのポインタ。

InetLayer

 InetLayer(
  void
)

これは InetLayer デフォルト コンストラクタです。

一部の基本的なデータメンバーの初期化が実行されます。ただし、InetLayer は明示的なイニシャライザの設計パターンに従っているため、オブジェクトを使用する前に InetLayer::Init メソッドを正常に呼び出す必要があります。

init

INET_ERROR Init(
  Weave::System::Layer & aSystemLayer,
  void *aContext
)

これは InetLayer の明示的イニシャライザです。

InetLayer を使用するには、この関数を呼び出して正常に完了する必要があります。

呼び出し元は、任意のコンテキスト引数を指定できます。このコンテキスト引数は、プラットフォーム固有のフック関数を介して返されます。LwIP ベースの適応の場合、これは通常、InetLayer インスタンスに関連付けられたイベントキューへのポインタになります。

プラットフォームは、プラットフォーム固有の構成ヘッダーで INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS をアサートし、Platform::InetLayer::WillInit フックと Platform::InetLayer::DidInit フックを有効にして、InetLayer に対するプラットフォーム固有のカスタマイズやデータ拡張を有効にすることもできます。

詳細
パラメータ
[in] aSystemLayer
Weave システムレイヤの必須インスタンスはすでに初期化されています。
[in] aContext
オプションのコンテキスト引数。プラットフォーム固有のフック関数を介して呼び出し元に返されます。
戻り値
INET_ERROR_INCORRECT_STATE
InetLayer が正しくない状態である場合。
INET_ERROR_NO_MEMORY
InetLayer で新しいタイマーのリクエストに対するリソースが不足した場合。
other
初期化に失敗した理由を示すプラットフォーム固有のエラー。
INET_NO_ERROR
成功時。

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

指定した IPv6 アドレスとローカルに設定されたすべての IPv6 アドレスの間にプレフィックス一致があるかどうかを確認します。

詳細
パラメータ
[in] addr
接頭辞の一致を確認する IPv6 アドレス。
戻り値
成功した場合は true、それ以外の場合は false です。

NewRawEndPoint

INET_ERROR NewRawEndPoint(
  IPVersion ipVer,
  IPProtocol ipProto,
  RawEndPoint **retEndPoint
)

特定の IP バージョンとプロトコル用に新しい RawEndPoint オブジェクトを作成します。

詳細
パラメータ
[in] ipVer
IPv4 または IPv6。
[in] ipProto
IP ファミリー内のプロトコル(ICMPv4 または ICMPv6)。
[in,out] retEndPoint
RawEndPoint オブジェクトのポインタへのポインタ。オブジェクト作成の完了時のリターン パラメータになります。*作成に失敗した場合、retEndPoint は NULL です。
戻り値
INET_ERROR_INCORRECT_STATE
InetLayer オブジェクトが初期化されていない場合。
INET_ERROR_NO_ENDPOINTS
InetLayerRawEndPoint プールがいっぱいで、新しいエンドポイントを作成できない場合。
INET_NO_ERROR
成功時。

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

新しい TCPEndPoint オブジェクトを作成します。

詳細
パラメータ
[in,out] retEndPoint
TCPEndPoint オブジェクトのポインタへのポインタ。オブジェクト作成完了時のリターン パラメータになります。*作成に失敗した場合、retEndPoint は NULL です。
戻り値
INET_ERROR_INCORRECT_STATE
InetLayer オブジェクトが初期化されていない場合。
INET_ERROR_NO_ENDPOINTS
InetLayerTCPEndPoint プールがいっぱいで、新しいエンドポイントを作成できない場合。
INET_NO_ERROR
成功時。

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

新しい TunEndPoint オブジェクトを作成します。

詳細
パラメータ
[in,out] retEndPoint
TunEndPoint オブジェクトのポインタへのポインタ。オブジェクト作成の完了時のリターン パラメータになります。*作成に失敗した場合、retEndPoint は NULL です。
戻り値
INET_ERROR_INCORRECT_STATE
InetLayer オブジェクトが初期化されていない場合。
INET_ERROR_NO_ENDPOINTS
InetLayerTunEndPoint プールがいっぱいで、新しいものを作成できない場合
INET_NO_ERROR
成功時。

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

新しい UDPEndPoint オブジェクトを作成します。

詳細
パラメータ
[in,out] retEndPoint
UDPEndPoint オブジェクトのポインタへのポインタ。オブジェクト作成完了時のリターン パラメータになります。*作成に失敗した場合、retEndPoint は NULL です。
戻り値
INET_ERROR_INCORRECT_STATE
InetLayer オブジェクトが初期化されていない場合。
INET_ERROR_NO_ENDPOINTS
InetLayerUDPEndPoint プールがいっぱいで、新しいエンドポイントを作成できない場合
INET_NO_ERROR
成功時。

PrepareSelect

void PrepareSelect(
  int & nfds,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds,
  struct timeval & sleepTime
)

select() が処理するファイル記述子のセットを準備します。

詳細
パラメータ
[out] nfds
ファイル記述子セット内のファイル記述子の範囲。
[in] readfds
読み取り可能なファイル記述子のセットへのポインタ。
[in] writefds
書き込み可能なファイル記述子のセットへのポインタ。
[in] exceptfds
エラーのあるファイル記述子のセットへのポインタ。
[in] sleepTimeTV
SELECT をスリープさせる期間を指定する構造体へのポインタ

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t options,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

指定されたホスト名の IP アドレスを解決します。

詳細
パラメータ
[in] hostName
クエリ対象のホスト名を表す、NULL で終わっていない C 文字列へのポインタ。
[in] hostNameLen
ホスト名の文字列の長さ。
[in] options
ホスト名の解決方法を制御する整数値。
                    Value should be one of the address family values from the
                    #DNSOptions enumeration:

                    #kDNSOption_AddrFamily_Any
                    #kDNSOption_AddrFamily_IPv4Only
                    #kDNSOption_AddrFamily_IPv6Only
                    #kDNSOption_AddrFamily_IPv4Preferred
                    #kDNSOption_AddrFamily_IPv6Preferred
[in] maxAddrs
DNS テーブルに保存するアドレスの最大数。
[in] addrArray
DNS テーブルへのポインタ。
[in] onComplete
DNS リクエストが完了したときのコールバック関数へのポインタ。
[in] appState
DNS リクエストが完了したときに onComplete に渡されるアプリケーション状態へのポインタ。
戻り値
INET_NO_ERROR
DNS リクエストが正常に処理されたかどうかを表します。
INET_ERROR_NO_MEMORY
Inet レイヤのリゾルバプールがいっぱいの場合
INET_ERROR_HOST_NAME_TOO_LONG
リクエストされたホスト名が長すぎる場合。
INET_ERROR_HOST_NOT_FOUND
リクエストのホスト名をアドレスに解決できなかった場合。
INET_ERROR_DNS_TRY_AGAIN
ネームサーバーが一時的なエラーを示すメッセージを返した場合は、しばらくしてからもう一度お試しください。
INET_ERROR_DNS_NO_RECOVERY
ネームサーバーから回復不能なエラーが返された場合。
INET_ERROR_NOT_IMPLEMENTED
DNS 解決が基盤となるプラットフォームで有効になっていない場合に通知されます。
other
基盤となる DNS リゾルバの実装によって返された POSIX ネットワークまたは OS エラー。

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

指定されたホスト名の IP アドレスを解決します。

詳細
パラメータ
[in] hostName
クエリ対象のホスト名を表す、NULL で終わっていない C 文字列へのポインタ。
[in] hostNameLen
ホスト名の文字列の長さ。
[in] maxAddrs
DNS テーブルに保存するアドレスの最大数。
[in] addrArray
DNS テーブルへのポインタ。
[in] onComplete
DNS リクエストが完了したときのコールバック関数へのポインタ。
[in] appState
DNS リクエストが完了したときに onComplete に渡されるアプリケーション状態へのポインタ。
戻り値
INET_NO_ERROR
DNS リクエストが正常に処理されたかどうかを表します。
INET_ERROR_NO_MEMORY
Inet レイヤのリゾルバプールがいっぱいの場合
INET_ERROR_HOST_NAME_TOO_LONG
リクエストされたホスト名が長すぎる場合。
INET_ERROR_HOST_NOT_FOUND
リクエストのホスト名をアドレスに解決できなかった場合。
INET_ERROR_DNS_TRY_AGAIN
ネームサーバーが一時的なエラーを示すメッセージを返した場合は、しばらくしてからもう一度お試しください。
INET_ERROR_DNS_NO_RECOVERY
ネームサーバーから回復不能なエラーが返された場合。
INET_ERROR_NOT_IMPLEMENTED
DNS 解決が基盤となるプラットフォームで有効になっていない場合に通知されます。
other
基盤となる DNS リゾルバの実装によって返された POSIX ネットワークまたは OS エラー。

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

指定されたホスト名の IP アドレスを解決します。

詳細
パラメータ
[in] hostName
クエリするホスト名を表す NULL で終わる C 文字列へのポインタ。
[in] maxAddrs
DNS テーブルに保存するアドレスの最大数。
[in] addrArray
DNS テーブルへのポインタ。
[in] onComplete
DNS リクエストが完了したときのコールバック関数へのポインタ。
[in] appState
DNS リクエストが完了したときに onComplete に渡されるアプリケーション状態へのポインタ。
戻り値
INET_NO_ERROR
DNS リクエストが正常に処理されたかどうかを表します。
INET_ERROR_NO_MEMORY
Inet レイヤのリゾルバプールがいっぱいの場合
INET_ERROR_HOST_NAME_TOO_LONG
リクエストされたホスト名が長すぎる場合。
INET_ERROR_HOST_NOT_FOUND
リクエストのホスト名をアドレスに解決できなかった場合。
INET_ERROR_DNS_TRY_AGAIN
ネームサーバーが一時的なエラーを示すメッセージを返した場合は、しばらくしてからもう一度お試しください。
INET_ERROR_DNS_NO_RECOVERY
ネームサーバーから回復不能なエラーが返された場合。
INET_ERROR_NOT_IMPLEMENTED
DNS 解決が基盤となるプラットフォームで有効になっていない場合に通知されます。
other
基盤となる DNS リゾルバの実装によって返された POSIX ネットワークまたは OS エラー。

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

これにより、指定したクライアント固有のプラットフォーム データがインスタンスに設定され、後でクライアント プラットフォームが取得できるようになります。

詳細
パラメータ
[in] aPlatformData
設定するクライアント固有のプラットフォーム データ。

シャットダウン

INET_ERROR Shutdown(
  void
)

これは InetLayer の明示的な逆イニシャライザであり、インスタンス化された InetLayer インスタンスを破棄する前に呼び出す必要があります。

プラットフォームは、プラットフォーム固有の構成ヘッダーで INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS をアサートし、Platform::InetLayer::WillShutdown フックと Platform::InetLayer::DidShutdown フックを有効にして、InetLayer に対するプラットフォーム固有のカスタマイズまたはデータ拡張のクリーンアップを有効にすることもできます。

詳細
戻り値
INET_NO_ERROR - 成功した場合。それ以外の場合は、シャットダウンの失敗の理由を示す特定のエラー。

SystemLayer

Weave::System::Layer * SystemLayer(
  void
) const 

静的パブリック関数

HandleInetLayerEvent

Weave::System::Error HandleInetLayerEvent(
  Weave::System::Object & aTarget,
  Weave::System::EventType aEventType,
  uintptr_t aArgument
)

IsDroppableEvent

bool IsDroppableEvent(
  Weave::System::EventType aType
)

UpdateSnapshot

void UpdateSnapshot(
  nl::Weave::System::Stats::Snapshot & aSnapshot
)