nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

Các đối tượng của lớp này đại diện cho các điểm cuối của giao thức IP không thể tạo thực thể.

Tóm tắt

Tính kế thừa

Kế thừa từ: nl::Inet::EndPointBasis
Lớp học con đã biết trực tiếp:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

Loại công khai

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
enum
Trạng thái động cơ bản của điểm cuối cơ bản.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
Cờ tuỳ chọn truyền cho phương thức SendMsg.
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
Loại chức năng xử lý sự kiện nhận tin nhắn văn bản.
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
Loại hàm xử lý sự kiện lỗi tiếp nhận.

Các thuộc tính công khai

OnMessageReceived
Hàm uỷ quyền xử lý sự kiện nhận tin nhắn của điểm cuối.
OnReceiveError
Điểm cuối nhận được uỷ quyền chức năng xử lý sự kiện lỗi.
mState
enum nl::Inet::IPEndPointBasis::@8
Trạng thái động cơ bản của điểm cuối cơ bản.

Thuộc tính được bảo vệ

mBoundIntfId
InterfaceId

Hàm công khai

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Tham gia một nhóm phát đa hướng IP.
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
Rời khỏi một nhóm phát đa hướng IP.
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
Thiết lập xem có nên lặp lại lưu lượng truy cập đa hướng IP hay không.

Hàm được bảo vệ

Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO(uint16_t aPort)
void
Init(InetLayer *aInetLayer)
void
PrepareIO(void)
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

Hàm tĩnh công khai

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

Hàm tĩnh được bảo vệ

GetPacketInfo(Weave::System::PacketBuffer *buf)
Nhận thông tin về địa chỉ đích và nguồn của lớp IP LwIP.

Loại công khai

@8

 @8

Trạng thái động cơ bản của điểm cuối cơ bản.

Các đối tượng được khởi tạo trong giai đoạn "sẵn sàng" chuyển sang phần "ràng buộc" trạng thái sau khi liên kết với địa chỉ giao diện cục bộ thì chuyển sang quá trình "nghe" trạng thái khi chúng có các thành phần tiếp tục được đăng ký để xử lý các sự kiện nhận thông báo ICMP.

Lưu ý: Bản liệt kê trạng thái kBasisState_Closed được liên kết với kState_Ready vì các lý do trước đây liên quan đến khả năng tương thích nhị phân. kState_Closed hiện có tồn tại để xác định riêng biệt sự khác biệt giữa "chưa mở" và "đã mở trước đó hiện đã đóng" đã tồn tại trước đây ở trạng thái kState_ReadykState_Closed.

Thuộc tính
kState_Bound

Điểm cuối bị ràng buộc nhưng không lắng nghe.

kState_Closed

Đã đóng điểm cuối, sẵn sàng phát hành.

kState_Listening

Điểm cuối nhận gói dữ liệu.

kState_Ready

Đã khởi chạy điểm cuối nhưng chưa mở.

@9

 @9

Cờ tuỳ chọn truyền cho phương thức SendMsg.

Thuộc tính
kSendFlag_RetainBuffer

Đừng trực tiếp thêm thư vào hàng đợi gây thiệt hại.

Thêm một bản sao vào danh sách chờ.

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

Loại chức năng xử lý sự kiện nhận tin nhắn văn bản.

Cung cấp hàm thuộc loại này cho thành viên được uỷ quyền OnMessageReceived để xử lý các sự kiện nhận tin nhắn văn bản trên endPoint, trong đó msg là nội dung tin nhắn nhận được từ người gửi tại senderAddr.

Thông tin chi tiết
Tham số
[in] endPoint
Điểm cuối liên kết với sự kiện.
[in] msg
Nội dung tin nhắn đã nhận được.
[in] senderAddr
Địa chỉ IP của người gửi.

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

Loại hàm xử lý sự kiện lỗi tiếp nhận.

Cung cấp một hàm thuộc loại này cho thành viên được uỷ quyền OnReceiveError để xử lý các sự kiện lỗi tiếp nhận trên endPoint. Đối số err cung cấp thông tin chi tiết cụ thể về loại lỗi.

Thông tin chi tiết
Tham số
[in] endPoint
Điểm cuối liên kết với sự kiện.
[in] err
Nguyên nhân lỗi.

Các thuộc tính công khai

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

Hàm uỷ quyền xử lý sự kiện nhận tin nhắn của điểm cuối.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Điểm cuối nhận được uỷ quyền chức năng xử lý sự kiện lỗi.

mState

enum nl::Inet::IPEndPointBasis::@8 mState

Trạng thái động cơ bản của điểm cuối cơ bản.

Các đối tượng được khởi tạo trong giai đoạn "sẵn sàng" chuyển sang phần "ràng buộc" trạng thái sau khi liên kết với địa chỉ giao diện cục bộ thì chuyển sang quá trình "nghe" trạng thái khi chúng có các thành phần tiếp tục được đăng ký để xử lý các sự kiện nhận thông báo ICMP.

Lưu ý: Bản liệt kê trạng thái kBasisState_Closed được liên kết với kState_Ready vì các lý do trước đây liên quan đến khả năng tương thích nhị phân. kState_Closed hiện có tồn tại để xác định riêng biệt sự khác biệt giữa "chưa mở" và "đã mở trước đó hiện đã đóng" đã tồn tại trước đây ở trạng thái kState_ReadykState_Closed.

Thuộc tính được bảo vệ

mBoundIntfId

InterfaceId mBoundIntfId

Hàm công khai

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Tham gia một nhóm phát đa hướng IP.

Kết nối điểm cuối với nhóm truyền đa hướng đã cung cấp trên giao diện được chỉ định.

Thông tin chi tiết
Tham số
[in] aInterfaceId
chỉ báo của giao diện mạng cần thêm vào nhóm phát đa hướng
[in] aAddress
nhóm truyền đa hướng để thêm giao diện vào
Giá trị trả về
INET_NO_ERROR
thành công: nhóm truyền đa hướng đã bị xóa
INET_ERROR_UNKNOWN_INTERFACE
giao diện mạng không xác định, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress không phải là kIPAddressType_IPv4 hoặc kIPAddressType_IPv6 hoặc không phải là phát đa hướng
other
lỗi hệ thống hoặc nền tảng khác

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Rời khỏi một nhóm phát đa hướng IP.

Xoá điểm cuối khỏi nhóm truyền đa hướng đã cung cấp trên giao diện đã chỉ định.

Thông tin chi tiết
Tham số
[in] aInterfaceId
chỉ báo của giao diện mạng cần xoá khỏi nhóm phát đa hướng
[in] aAddress
nhóm truyền đa hướng để xoá giao diện
Giá trị trả về
INET_NO_ERROR
thành công: nhóm truyền đa hướng đã bị xóa
INET_ERROR_UNKNOWN_INTERFACE
giao diện mạng không xác định, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress không phải là kIPAddressType_IPv4 hoặc kIPAddressType_IPv6 hoặc không phải là phát đa hướng
other
lỗi hệ thống hoặc nền tảng khác

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Thiết lập xem có nên lặp lại lưu lượng truy cập đa hướng IP hay không.

Thiết lập xem có nên lặp lại lưu lượng truy cập đa hướng IP đến điểm cuối này hay không.

Thông tin chi tiết
Tham số
[in] aIPVersion
[in] aLoop
Giá trị trả về
INET_NO_ERROR
thành công: thiết lập hành vi lặp lại nhiều hướng
other
lỗi hệ thống hoặc nền tảng khác

Hàm được bảo vệ

Đóng gáy

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindInterface

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

HandleDataReceived

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

Init

void Init(
  InetLayer *aInetLayer
)

PrepareIO

SocketEvents PrepareIO(
  void
)

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

Hàm tĩnh công khai

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

Hàm tĩnh được bảo vệ

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

Nhận thông tin về địa chỉ đích và nguồn của lớp IP LwIP.

Khi sử dụng LwIP, thông tin về gói được "ẩn" trong không gian dành riêng trước khi dữ liệu bắt đầu trong vùng đệm gói. Điều này là cần thiết vì các sự kiện lớp hệ thống chỉ có hai đối số. Trong trường hợp này, các đối số này được dùng để truyền con trỏ đến điểm cuối và con trỏ đến vùng đệm.

Thông tin chi tiết
Tham số
[in] aBuffer
vùng đệm gói có chứa thông báo IP
Trả về
một con trỏ đến thông tin địa chỉ khi thành công; ngược lại sẽ là giá trị NULL nếu không có đủ khoảng trống trong gói cho thông tin địa chỉ.

Trong hầu hết các trường hợp, thủ thuật lưu trữ thông tin này trước khi dữ liệu hoạt động vì vùng đệm đầu tiên trong thông báo IP LwIP chứa không gian được sử dụng cho tiêu đề Ethernet/IP/UDP. Tuy nhiên, với kích thước hiện tại của cấu trúc IPPacketInfo (40 byte), có thể sẽ không có đủ chỗ để lưu trữ cấu trúc cùng với tải trọng trong một bộ đệm gói. Trong thực tế, điều này sẽ chỉ xảy ra cho các gói IPv4 cực lớn đến mà không có tiêu đề Ethernet.