nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

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

概要

BSD/POSIX ソケットの場合、イベント準備通知は、ファイル ディスクリプタと、プラットフォーム 適応上の従来の poll / select 実装を介して処理されます。

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 アドレスのインターフェース ID を取得します。
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 アドレスのインターフェース ID を取得します。

インターフェース識別子を導出できない場合は、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
セレクトがスリープする時間を指定する構造体へのポインタ

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
)