nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Nhờ vậy, bạn có thể truy cập vào các dịch vụ Internet, trong đó có bộ tính giờ, hoạt động 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 duy nhất.

Tóm tắt

Đối với Ổ cắm 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 chỉ số mô tả tệp và phương thức triển khai thăm dò / chọn lọc truyền thống trên việc thích ứng 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 / thông báo cũng như các hook dành riêng cho nền tảng và hệ thống cho hệ thống sự kiện / thông báo.

Hàm khởi tạo và hàm phá

InetLayer(void)
Đây là hàm khởi tạo 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
Huỷ mọi truy vấn DNS chưa xử lý (đối với lệnh gọi lại hoàn thành trùng khớp và trạng thái ứng dụng) có thể vẫn đang hoạt động.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Lấy mã nhận dạng giao diện cho địa chỉ IP đã chỉ định.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Lấy địa chỉ IPv6 cục bộ của đường liên kết cho một đường 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 phiên bản này đã đượ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 được 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ó khớp tiền tố giữa địa chỉ IPv6 đã chỉ định và bất kỳ địa chỉ IPv6 nào được định cấu hình cục bộ hay không.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Tạo đối tượng RawEndPoint mới cho một giao thức và phiên bản IP cụ thể.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Tạo đối tượng TCPEndPoint mới.
NewTunEndPoint(TunEndPoint **retEndPoint)
Tạo đối tượng TunEndPoint mới.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Tạo đố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ị bộ chỉ số mô tả tệp để select() xử lý.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
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)
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)
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ẽ thiết lập dữ liệu nền tảng của riêng ứng dụng được chỉ định 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 khởi tạo rõ ràng của InetLayer và phải được gọi trước khi loại bỏ thực thể InetLayer 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 động.

kState_NotInitialized

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

kState_ShutdownInProgress

Trạng thái nơi tính năng Tắt đã được kích hoạt.

DNSResolveCompleteFunct

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.

[READ-ONLY] 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

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

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

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

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

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

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

Nếu không thể lấy mã nhận dạng giao diện, thì mã nhận dạng đó được đặt thành INET_NULL_INTERFACEID.

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

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Lấy địa chỉ IPv6 cục bộ của đường liên kết cho một đường liên kết hoặc giao diện đã chỉ định.

Thông tin chi tiết
Các tham số
[in] link
Giao diện mà địa chỉ IPv6 cục bộ của đường liên kết đang được tìm.
[out] llAddr
Địa chỉ IPv6 cục bộ của đườ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 liên kết chưa có bất kỳ địa chỉ nào được định cấu hình.
INET_NO_ERROR
Khi thành công.

GetPlatformData

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 phiên bản này đã đượ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 thì giá trị là NULL.

HandleSelectResult

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

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

Phương thức này đăng ký sự kiện I/O đang chờ xử lý cho từng điểm cuối đang hoạt động, sau đó 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 tham số
[in] selectRes
Giá trị trả về của lệnh gọi được chọn.
[in] readfds
Con trỏ đến tập hợp các chỉ số mô tả tệp đã đọc.
[in] writefds
Con trỏ chỉ đến tập hợp các chỉ số mô tả tệp ghi.
[in] exceptfds
Con trỏ đến tập hợp chỉ số mô tả tệp có lỗi.

InetLayer

 InetLayer(
  void
)

Đây là hàm khởi tạo mặc định InetLayer.

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

Bắt đầu

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 sử dụng InetLayer.

Phương thức gọi có thể cung cấp một đối số ngữ cảnh không bắt buộc. Đối số này sẽ được trả về thông qua hàm hook dành riêng cho nền tảng bất kỳ. Đối với các hoạt động điều chỉnh dựa trên LwIP, giá trị này thường là con trỏ đến hàng đợi sự kiện được 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 và bật hook::InetLayer::WillInit và Platform::InetLayer::DidInit để tuỳ chỉnh các phần mở rộng dữ liệu hoặc tuỳ chỉnh dành riêng cho nền tảng vào InetLayer.

Thông tin chi tiết
Các tham số
[in] aSystemLayer
Một thực thể bắt buộc của Lớp hệ thống dệt đã được khởi chạy thành công.
[in] aContext
Một đối số ngữ cảnh không bắt buộc sẽ được trả về cho phương thức gọi thông qua bất kỳ hàm hook nào dành riêng cho nền tảng.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu InetLayer ở 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 dành cho bộ tính giờ mới.
other
Lỗi riêng của nền tảng cho biết lý do khởi động không thành công.
INET_NO_ERROR
Khi thành công.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Kiểm tra xem có khớp tiền tố giữa địa chỉ IPv6 đã chỉ định và bất kỳ địa chỉ IPv6 nào được định cấu hình cục bộ hay không.

Thông tin chi tiết
Các tham số
[in] addr
Địa chỉ IPv6 để kiểm tra xem có tiền tố trùng khớp hay không.
Trả về
true nếu tìm thấy kết quả trùng khớp thành công, nếu không thì là false.

NewRawEndPoint

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

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

Thông tin chi tiết
Các tham số
[in] ipVer
IPv4 hoặc IPv6.
[in] ipProto
Một giao thức trong họ IP (ví dụ: ICMPv4 hoặc ICMPv6).
[in,out] retEndPoint
Con trỏ đến con trỏ của đối tượng RawEndPoint. Đây là tham số trả về sau khi hoàn tất quá trình tạo đối tượng. *retEndPoint là NULL nếu quá trình tạo không thành công.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetLayer không được khởi động.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetLayerRawEndPoint đã đầy và không thể tạo điểm cuối mới.
INET_NO_ERROR
Khi 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 tham số
[in,out] retEndPoint
Con trỏ đến con trỏ của đối tượng TCPEndPoint. Đây là tham số trả về sau khi hoàn tất quá trình tạo đối tượng. *retEndPoint là NULL nếu quá trình tạo không thành công.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetLayer không được khởi động.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetLayerTCPEndPoint đã đầy và không thể tạo điểm cuối mới.
INET_NO_ERROR
Khi thành công.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

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

Thông tin chi tiết
Các tham số
[in,out] retEndPoint
Con trỏ đến con trỏ của đối tượng TunEndPoint. Đây là tham số trả về sau khi hoàn tất quá trình tạo đối tượng. *retEndPoint là NULL nếu quá trình tạo không thành công.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetLayer không được khởi động.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetLayerTunEndPoint đã đầy và không thể tạo nhóm mới nào.
INET_NO_ERROR
Khi thành công.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

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

Thông tin chi tiết
Các tham số
[in,out] retEndPoint
Con trỏ đến con trỏ của đối tượng UDPEndPoint. Đây là tham số trả về sau khi hoàn tất quá trình tạo đối tượng. *retEndPoint là NULL nếu quá trình tạo không thành công.
Giá trị trả về
INET_ERROR_INCORRECT_STATE
Nếu đối tượng InetLayer không được khởi động.
INET_ERROR_NO_ENDPOINTS
Nếu nhóm InetLayerUDPEndPoint đã đầy và không thể tạo điểm cuối mới.
INET_NO_ERROR
Khi thành công.

PrepareSelect

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

Chuẩn bị bộ chỉ số mô tả tệp để select() xử lý.

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

ResolveHostAddress

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

Phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các tham số
[in] hostName
Con trỏ đến một chuỗi C không kết thúc bằng NULL đại diện cho tên máy chủ cần được 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 quá trình phân giải tên máy chủ lưu trữ.
                    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ố địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ đến bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi hoàn tất yêu cầu DNS.
[in] appState
Con trỏ đến trạng thái ứng dụng sẽ được chuyển đến onComplete khi yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu nhóm trình 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ủ lưu trữ 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 quá trình phân giải DNS không được bật trên nền tảng cơ bản.
other
Lỗi mạng hoặc lỗi hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

ResolveHostAddress

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

Phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các tham số
[in] hostName
Con trỏ đến một chuỗi C không kết thúc bằng NULL đại diện cho tên máy chủ cần được truy vấn.
[in] hostNameLen
Độ dài chuỗi của tên máy chủ.
[in] maxAddrs
Số địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ đến bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi hoàn tất yêu cầu DNS.
[in] appState
Con trỏ đến trạng thái ứng dụng sẽ được chuyển đến onComplete khi yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu nhóm trình 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ủ lưu trữ 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 quá trình phân giải DNS không được bật trên nền tảng cơ bản.
other
Lỗi mạng hoặc lỗi hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

ResolveHostAddress

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

Phân giải địa chỉ IP của tên máy chủ đã chỉ định.

Thông tin chi tiết
Các tham số
[in] hostName
Con trỏ đến một chuỗi C kết thúc bằng NULL đại diện cho tên máy chủ cần được truy vấn.
[in] maxAddrs
Số địa chỉ tối đa cần lưu trữ trong bảng DNS.
[in] addrArray
Con trỏ đến bảng DNS.
[in] onComplete
Con trỏ đến hàm callback khi hoàn tất yêu cầu DNS.
[in] appState
Con trỏ đến trạng thái ứng dụng sẽ được chuyển đến onComplete khi yêu cầu DNS hoàn tất.
Giá trị trả về
INET_NO_ERROR
nếu yêu cầu DNS được xử lý thành công.
INET_ERROR_NO_MEMORY
nếu nhóm trình 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ủ lưu trữ 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 quá trình phân giải DNS không được bật trên nền tảng cơ bản.
other
Lỗi mạng hoặc lỗi hệ điều hành POSIX trả về khi triển khai trình phân giải DNS cơ bản.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Thao tác này sẽ thiết lập dữ liệu nền tảng của riêng ứng dụng được chỉ định 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 tham số
[in] aPlatformData
Dữ liệu nền tảng cụ thể của ứng dụng cần đặt.

Tắt

INET_ERROR Shutdown(
  void
)

Đây là trình khởi tạo rõ ràng của InetLayer và phải được gọi trước khi loại bỏ thực thể InetLayer 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 mình và bật hook::InetLayer::WillShutdown và Platform::InetLayer:::DidShutdown để xoá các phần tuỳ chỉnh dành riêng cho nền tảng hoặc phần mở rộng dữ liệu sang InetLayer.

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

SystemLayer

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

Hàm tĩnh công khai

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
)