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
}
列挙型
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
選択呼び出しからの 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 オブジェクトの現在の状態。

Properties
kState_Initialized

初期化状態。

kState_NotInitialized

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

kState_ShutdownInProgress

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

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

パブリック属性

状態

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

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

[READ-ONLY] 現在の状態。

公開静的属性

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
)

選択呼び出しからの 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(マッチローカル IPv6 サブネット)

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。それ以外の場合は、シャットダウンの失敗の理由を示す特定のエラー。

システムレイヤ

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
)