nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

단일 스레드에 대해 타이머, DNS (도메인 이름 시스템) 변환, TCP 네트워크 전송, UDP 네트워크 전송, 원시 네트워크 전송 등 인터넷 서비스에 대한 액세스를 제공합니다.

요약

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
특정 호출에서 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
)

특정 호출에서 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
)