Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

nl::Inet::Inetlayer

#include <src/inet/InetLayer.h>

Điều này cung cấp quyền truy cập vào các dịch vụ Internet, như bộ tính giờ, độ phân giải Hệ thống tên miền (DNS), truyền tải mạng TCP, truyền tải mạng UDP và truyền tải mạng thô, cho một luồng.

Tóm tắt

Đối với Cổng BSD/POSIX, thông báo về trạng thái sẵn sàng của sự kiện được xử lý thông qua phần mô tả tệp và cách triển khai cuộc thăm dò ý kiến / lựa chọn truyền thống khi thích ứng với nền tảng.

Đối với LwIP, thông báo trạng thái sẵn sàng của sự kiện được xử lý thông qua các sự kiện / tin nhắn cũng như các mối liên kết cụ thể theo nền tảng và hệ thống cho hệ thống sự kiện / thông báo.

Hàm dựng và hàm phá hủy

InetLayer(void)
Đây là hàm dựng mặc định Inetlayer.

Loại công khai

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
Trạng thái hiện tại của đối tượng Inetlayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Thuộc tính công khai

State
enum nl::Inet::InetLayer::@5
Trạng thái hiện tại của đối tượng Inetlayer.

Thuộc tính tĩnh công khai

sInetEventHandlerDelegate

Hàm công khai

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Hủy bất kỳ truy vấn DNS chưa xử lý nào (đối với lệnh gọi lại hoàn thành và trạng thái ứng dụng trùng khớp) vẫn có thể đang hoạt động.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Lấy giá trị nhận dạng giao diện cho địa chỉ IP chỉ định.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Nhận địa chỉ IPv6 cục bộ cho liên kết hoặc giao diện đã chỉ định.
GetPlatformData(void)
void *
Thao tác này sẽ trả về mọi dữ liệu nền tảng dành riêng cho ứng dụng được chỉ định cho phiên bản này, nếu dữ liệu đã được đặt trước đó.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Xử lý I/O trong một cuộc gọi đã chọn.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Đây là trình khởi tạo rõ ràng Inetlayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Kiểm tra xem có địa chỉ IPv6 đã chỉ định nào khớp với địa chỉ IPv6 đã định cấu hình hay không.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Tạo đối tượng RawEndPoint mới cho một phiên bản và giao thức IP cụ thể.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Tạo đối tượng TCPEndPoint mới.
NewTunEndPoint(TunEndPoint **retEndPoint)
Tạo một đối tượng TunEndPoint mới.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Tạo một đối tượng UDPEndPoint mới.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Chuẩn bị tập hợp các nhãn mô tả tệp để select() hoạt động.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.
SetPlatformData(void *aPlatformData)
void
Thao tác này sẽ đặt dữ liệu của nền tảng dành riêng cho ứng dụng thành phiên bản để nền tảng ứng dụng truy xuất sau này.
Shutdown(void)
Đây là trình hủy kích hoạt Inetlayer và phải được gọi trước khi xử lý thực thể InetOverlay đã tạo bản sao.
SystemLayer(void) const

Hàm tĩnh công khai

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

Loại công khai

@5

 @5

Trạng thái hiện tại của đối tượng Inetlayer.

Thuộc tính
kState_Initialized

Trạng thái đã khởi tạo.

kState_NotInitialized

Trạng thái chưa khởi tạo.

kState_ShutdownInProgress

Trạng thái đã tắt tính năng Tắt.

Hoàn thành DNS

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Thuộc tính công khai

Tiểu bang

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

Trạng thái hiện tại của đối tượng Inetlayer.

[CHỈ CÓ THỂ ĐỌC] Trạng thái hiện tại.

Thuộc tính tĩnh công khai

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Hàm công khai

Sự kiện CanEnQueuedroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

Hủy phân giải địa chỉ của máy chủ

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Hủy bất kỳ truy vấn DNS chưa xử lý nào (đối với lệnh gọi lại hoàn thành và trạng thái ứng dụng trùng khớp) vẫn có thể đang hoạt động.

Thông tin chi tiết
Các thông số
[in] onComplete
Con trỏ đến hàm callback khi một yêu cầu DNS hoàn tất.
[in] appState
Con trỏ đến đối tượng trạng thái ứng dụng để chuyển đến hàm callback dưới dạng đối số.

Sự kiện thả vào hàng đợi

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

Lấy giá trị nhận dạng giao diện cho địa chỉ IP chỉ định.

Nếu không thể lấy giá trị nhận dạng giao diện, bạn sẽ đặt giá trị này thành INET_NULL_INTERFACEID.

Thông tin chi tiết
Các thông số
[in] addr
Tham chiếu đến đối tượng IPAddress.
[out] intfId
Tham chiếu đến đối tượng Giao diện người dùng.
Trả về
INET_NO_ERROR vô điều kiện.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Nhận địa chỉ IPv6 cục bộ cho liên kết hoặc giao diện đã chỉ định.

Thông tin chi tiết
Các thông số
[in] link
Giao diện mà địa chỉ IPv6 liên kết đang được tìm kiếm.
[out] llAddr
Địa chỉ IPv6 của đường liên kết cho đường liên kết.
Giá trị trả về
INET_ERROR_NOT_IMPLEMENTED
Nếu IPv6 không được hỗ trợ.
INET_ERROR_BAD_ARGS
Nếu địa chỉ cục bộ của đường liên kết là NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Nếu đường liên kết chưa được định cấu hình,
INET_NO_ERROR
Thành công!

Lấy dữ liệu nền tảng

void * GetPlatformData(
  void
)

Thao tác này sẽ trả về mọi dữ liệu nền tảng dành riêng cho ứng dụng được chỉ định cho phiên bản này, nếu dữ liệu đã được đặt trước đó.

Thông tin chi tiết
Trả về
Dữ liệu nền tảng dành riêng cho ứng dụng, nếu đã được đặt trước đó; nếu không, sẽ là NULL.

Xử lý chọn kết quả

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

Xử lý I/O trong một cuộc gọi đã chọn.

Phương thức này đăng ký sự kiện I/O đang chờ xử lý trong mỗi điểm cuối đang hoạt động rồi gọi các hàm xử lý I/O tương ứng cho các điểm cuối đó.

Thông tin chi tiết
Các thông số
[in] selectRes
Giá trị trả về của lệnh gọi chọn.
[in] readfds
Con trỏ đến tập hợp các nhãn mô tả tệp đã đọc.
[in] writefds
Con trỏ đến tập hợp các nhãn mô tả tệp.
[in] exceptfds
Con trỏ đến tập hợp các nhãn mô tả tệp bị lỗi.

Lớp lót

 InetLayer(
  void
)

Đây là hàm dựng mặc định Inetlayer.

Phương thức này thực hiện một số hoạt động khởi tạo thành phần dữ liệu cơ bản; tuy nhiên, vì InetOverlay tuân theo một mẫu thiết kế khởi tạo rõ ràng, nên phương thức InetOverlay::Init phải được gọi thành công trước khi sử dụng đối tượng.

Số nguyên

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

Đây là trình khởi tạo rõ ràng Inetlayer.

Lệnh này phải được gọi và hoàn tất thành công trước khi có thể sử dụng Inetlayer.

Người gọi có thể cung cấp một đối số ngữ cảnh tùy chọn sẽ được chuyển trở lại thông qua bất kỳ hàm móc dành riêng cho nền tảng nào. Đối với các cách điều chỉnh dựa trên LwIP, đây thường sẽ là một con trỏ đến hàng đợi sự kiện liên kết với thực thể Inetlayer.

Các nền tảng có thể chọn xác nhận INET_CONFIG_Will_OVERRIDE_PLATFORM_XTOR_FUNCS trong tiêu đề cấu hình dành riêng cho nền tảng của họ và bật Nền tảng::InetOverlay::WillInit và Platform::Inetlayer::DidInit hook để tác động đến các tùy chỉnh hoặc tiện ích dữ liệu dành riêng cho nền tảng đến InetOverlay.

Thông tin chi tiết
Các thông số
[in] aSystemLayer
Một thực thể bắt buộc của Lớp hệ thống Weave đã được khởi tạo thành công.
[in] aContext
Một đối số ngữ cảnh không bắt buộc sẽ được chuyển trở lại người gọi thông qua bất kỳ hàm móc cụ thể nào của nền tảng.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu InetOverlay ở trạng thái không chính xác.
INET_ERROR_NO_MEMORY
Nếu Inetlayer hết tài nguyên cho yêu cầu này đối với bộ tính giờ mới.
other
Lỗi cụ thể theo nền tảng cho biết lý do lỗi khởi chạy.
INET_NO_ERROR
Thành công!

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

Khớp mạng cục bộ

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Kiểm tra xem có địa chỉ IPv6 đã chỉ định nào khớp với địa chỉ IPv6 đã định cấu hình hay không.

Thông tin chi tiết
Các thông số
[in] addr
Địa chỉ IPv6 để kiểm tra việc so khớp tiền tố.
Trả về
true nếu tìm thấy kết quả phù hợp, nếu không thì sai.

NewRawEndPoint

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

Tạo đối tượng RawEndPoint mới cho một phiên bản và giao thức IP cụ thể.

Thông tin chi tiết
Các thông số
[in] ipVer
IPv4 hoặc IPv6.
[in] ipProto
Giao thức trong nhóm IP (ví dụ: ICMPv4 hoặc ICMPv6.
[in,out] retEndPoint
Con trỏ đến đối tượng RawEndPoint là thông số trả về sau khi tạo đối tượng. *retEndPoint là NULL nếu không tạo được.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetOverlay chưa được khởi tạo.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetOverlayRawEndPoint đã đầy và không thể tạo điểm cuối mới nào.
INET_NO_ERROR
Thành công!

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Tạo đối tượng TCPEndPoint mới.

Thông tin chi tiết
Các thông số
[in,out] retEndPoint
Con trỏ đến đối tượng TCPEndPoint là thông số trả về sau khi tạo đối tượng. *retEndPoint là NULL nếu không tạo được.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetOverlay chưa được khởi tạo.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetOverlayTCPEndPoint đã đầy và không thể tạo điểm cuối mới nào.
INET_NO_ERROR
Thành công!

Điểm mới

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Tạo một đối tượng TunEndPoint mới.

Thông tin chi tiết
Các thông số
[in,out] retEndPoint
Con trỏ đến đối tượng TunEndPoint là thông số trả về sau khi tạo đối tượng. *retEndPoint là NULL nếu không tạo được.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetOverlay chưa được khởi tạo.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetOverlayTunEndPoint đã đầy và không thể tạo nhóm mới.
INET_NO_ERROR
Thành công!

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Tạo một đối tượng UDPEndPoint mới.

Thông tin chi tiết
Các thông số
[in,out] retEndPoint
Con trỏ đến đối tượng UDPEndPoint là thông số trả về sau khi tạo đối tượng. *retEndPoint là NULL nếu không tạo được.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetOverlay chưa được khởi tạo.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetOverlayUDPEndPoint đã đầy và không thể tạo điểm cuối mới nào.
INET_NO_ERROR
Thành công!

Chuẩn bị chọn

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

Chuẩn bị tập hợp các nhãn mô tả tệp để select() hoạt động.

Thông tin chi tiết
Các thông số
[out] nfds
Phạm vi của trình mô tả tệp trong bộ mô tả tệp.
[in] readfds
Con trỏ đến tập hợp các nhãn mô tả tệp dễ đọc.
[in] writefds
Con trỏ đến tập hợp các nhãn mô tả tệp có thể ghi.
[in] exceptfds
Con trỏ đến tập hợp các nhãn mô tả tệp bị lỗi.
[in] sleepTimeTV
Con trỏ đến một cấu trúc chỉ định khoảng thời gian ngủ sẽ chọn

PlayHostaddress

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

Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các thông số
[in] hostName
Con trỏ tới chuỗi C không bị chấm dứt NULL đại diện cho tên máy chủ cần truy vấn.
[in] hostNameLen
Độ dài chuỗi của tên máy chủ.
[in] options
Một giá trị số nguyên kiểm soát cách thực hiện độ phân giải tên máy chủ.
                    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
Số lượng địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ tới bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi một yêu cầu DNS hoàn tất.
[in] appState
Con trỏ đến trạng thái của ứng dụng cần chuyển sang oncomplete khi một yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu một yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu bộ phân giải lớp Inet đầy.
INET_ERROR_HOST_NAME_TOO_LONG
nếu tên máy chủ được yêu cầu quá dài.
INET_ERROR_HOST_NOT_FOUND
nếu không thể phân giải tên máy chủ yêu cầu thành một địa chỉ.
INET_ERROR_DNS_TRY_AGAIN
nếu máy chủ định danh trả về chỉ báo lỗi tạm thời; hãy thử lại sau.
INET_ERROR_DNS_NO_RECOVERY
nếu máy chủ định danh trả về lỗi không thể khôi phục.
INET_ERROR_NOT_IMPLEMENTED
nếu không phân giải DNS trên nền tảng cơ bản.
other
Lỗi mạng hoặc hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

PlayHostaddress

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

Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các thông số
[in] hostName
Con trỏ tới chuỗi C không bị chấm dứt NULL đại diện cho tên máy chủ cần truy vấn.
[in] hostNameLen
Độ dài chuỗi của tên máy chủ.
[in] maxAddrs
Số lượng địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ tới bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi một yêu cầu DNS hoàn tất.
[in] appState
Con trỏ đến trạng thái của ứng dụng cần chuyển sang oncomplete khi một yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu một yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu bộ phân giải lớp Inet đầy.
INET_ERROR_HOST_NAME_TOO_LONG
nếu tên máy chủ được yêu cầu quá dài.
INET_ERROR_HOST_NOT_FOUND
nếu không thể phân giải tên máy chủ yêu cầu thành một địa chỉ.
INET_ERROR_DNS_TRY_AGAIN
nếu máy chủ định danh trả về chỉ báo lỗi tạm thời; hãy thử lại sau.
INET_ERROR_DNS_NO_RECOVERY
nếu máy chủ định danh trả về lỗi không thể khôi phục.
INET_ERROR_NOT_IMPLEMENTED
nếu không phân giải DNS trên nền tảng cơ bản.
other
Lỗi mạng hoặc hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

PlayHostaddress

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

Thực hiện độ phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các thông số
[in] hostName
Con trỏ tới chuỗi C kết thúc bằng NULL đại diện cho tên máy chủ cần truy vấn.
[in] maxAddrs
Số lượng địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ tới bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi một yêu cầu DNS hoàn tất.
[in] appState
Con trỏ đến trạng thái của ứng dụng cần chuyển sang oncomplete khi một yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu một yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu bộ phân giải lớp Inet đầy.
INET_ERROR_HOST_NAME_TOO_LONG
nếu tên máy chủ được yêu cầu quá dài.
INET_ERROR_HOST_NOT_FOUND
nếu không thể phân giải tên máy chủ yêu cầu thành một địa chỉ.
INET_ERROR_DNS_TRY_AGAIN
nếu máy chủ định danh trả về chỉ báo lỗi tạm thời; hãy thử lại sau.
INET_ERROR_DNS_NO_RECOVERY
nếu máy chủ định danh trả về lỗi không thể khôi phục.
INET_ERROR_NOT_IMPLEMENTED
nếu không phân giải DNS trên nền tảng cơ bản.
other
Lỗi mạng hoặc hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

Đặt dữ liệu nền tảng

void SetPlatformData(
  void *aPlatformData
)

Thao tác này sẽ đặt dữ liệu của nền tảng dành riêng cho ứng dụng thành phiên bản để nền tảng ứng dụng truy xuất sau này.

Thông tin chi tiết
Các thông số
[in] aPlatformData
Dữ liệu nền tảng dành riêng cho khách hàng được đặt.

Tắt

INET_ERROR Shutdown(
  void
)

Đây là trình hủy kích hoạt Inetlayer và phải được gọi trước khi xử lý thực thể InetOverlay đã tạo bản sao.

Các nền tảng có thể chọn xác nhận INET_CONFIG_Will_OVERRIDE_PLATFORM_XTOR_FUNCS trong tiêu đề cấu hình dành riêng cho nền tảng của họ và bật các Nền tảng::Inetlayer::WillWilldown và Platform::Inetlayer::WillShutdown sẽ giúp xóa các tùy chỉnh hoặc phần mở rộng dữ liệu theo nền tảng cụ thể thành InetOverlay.

Thông tin chi tiết
Trả về
INET_NO_ERROR về thành công; nếu không, lỗi cụ thể cho biết lý do tắt.

Lớp hệ thống

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

Hàm tĩnh công khai

Sự kiện lớpIInetlayer

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

Sự kiện thả xuống

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

Ảnh chụp nhanh

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