Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

이 API를 통해 단일 스레드의 타이머 (Domain Name System) 확인, TCP 네트워크 전송, UDP 네트워크 전송, 원시 네트워크 전송을 비롯한 인터넷 서비스에 액세스할 수 있습니다.

요약

BSD/POSIX Sockets의 경우 이벤트 준비 알림은 파일 설명자를 통해 그리고 플랫폼 조정의 기존 설문조사 / 선택 구현을 통해 처리됩니다.

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
)

CancelHostHostAddress

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

핸들 선택 결과

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

선택된 호출의 I/O 처리

이 메서드는 대기 중인 I/O 이벤트를 각 활성 엔드포인트에 등록한 다음 각 엔드포인트의 각 I/O 처리 함수를 호출합니다.

세부정보
매개변수
[in] selectRes
선택된 호출의 반환 값입니다.
[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를 어설션하고 플랫폼별 맞춤설정 또는 데이터 확장자를 InetLayer에 적용하기 위해 Platform::InetLayer::WillInit 및 Platform::IInLayer::DidInit 후크를 사용하도록 설정할 수 있습니다.

세부정보
매개변수
[in] aSystemLayer
Weave 시스템 레이어의 필수 인스턴스가 이미 초기화되었습니다.
[in] aContext
플랫폼별 후크 함수를 통해 호출자에 다시 전달할 선택적 컨텍스트 인수입니다.
반환 값
INET_ERROR_INCORRECT_STATE
InetLayer의 상태가 잘못된 경우
INET_ERROR_NO_MEMORY
InetLayer가 새 타이머에 대한 이 요청의 리소스를 소진한 경우
other
초기화 실패 이유를 나타내는 플랫폼별 오류입니다.
INET_NO_ERROR
성공했습니다.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6서브넷

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
성공했습니다.

새 TCPEndPoint

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
성공했습니다.

새로운 종료점

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
성공했습니다.

새 UDPEndPoint

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
성공했습니다.

준비 선택

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 오류입니다.

플랫폼 플랫폼 데이터 세트

void SetPlatformData(
  void *aPlatformData
)

이렇게 하면 지정된 클라이언트별 플랫폼 데이터가 클라이언트 플랫폼에서 향후 검색할 수 있도록 인스턴스로 설정됩니다.

세부정보
매개변수
[in] aPlatformData
설정할 클라이언트별 플랫폼 데이터입니다.

종료

INET_ERROR Shutdown(
  void
)

InetLayer 명시적 초기화 프로그램이며 인스턴스화된 InetLayer 인스턴스를 폐기하기 전에 호출해야 합니다.

플랫폼은 플랫폼별 구성 헤더에서 INET_CONFIG_will_OVERRIDE_PLATFORM_XTOR_FUNCS를 어설션하고 Platform::InetLayer::willShutdown and Platform::InetLayer::DidShutdown 후크를 사용 설정하여 플랫폼별 맞춤설정 또는 데이터 확장자를 InetLayer에 정리할 수 있습니다.

세부정보
반환
성공 시 INET_NO_ERROR. 종료 실패의 이유를 나타내는 특정 오류

시스템 레이어

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

공개 정적 함수

핸들 InetLayer 이벤트

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
)