nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

這個類別的物件代表不穩定的 IP 通訊協定端點。

摘要

繼承

沿用自: nl::Inet::EndPointBasis
直接已知的子類別:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

公開類型

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
列舉
底層端點的基本動態狀態。
@9{
  kSendFlag_RetainBuffer = 0x0040
}
列舉
SendMsg 方法的傳送選項旗標。
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
訊息文字接收事件處理函式的類型。
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
接收錯誤事件處理函式的類型。

公開屬性

OnMessageReceived
端點的訊息接收事件處理函式委派。
OnReceiveError
端點接收錯誤事件處理函式委派。
mState
enum nl::Inet::IPEndPointBasis::@8
底層端點的基本動態狀態。

受保護的屬性

mBoundIntfId
InterfaceId

公開函式

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
加入 IP 多點傳播群組。
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
離開 IP 多點傳播群組。
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
設定是否應循環播放 IP 多點傳播流量。

受保護的函式

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)

公開的靜態函式

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

受保護的靜態函式

GetPacketInfo(Weave::System::PacketBuffer *buf)
取得 LwIP IP 層來源和目的地定址資訊。

公開類型

8 人

 @8

底層端點的基本動態狀態。

物件會在「就緒」狀態中初始化接著繼續進入「繫結」狀態繫結至本機介面位址後的狀態,請繼續「監聽」狀態。

注意:基於過往的二進位檔相容性原因,kBasisState_Closed 狀態列舉會對應至 kState_Ready。現有的 kState_Closed 用於區分「尚未開啟」的不同之處以及「先前開啟過」 已停業」之前存在於 kState_ReadykState_Closed 狀態下的存在。

屬性
kState_Bound

端點已繫結,但未受到監聽。

kState_Closed

端點已關閉,已可發布。

kState_Listening

端點接收資料元。

kState_Ready

端點已初始化,但尚未開啟。

9 分

 @9

SendMsg 方法的傳送選項旗標。

屬性
kSendFlag_RetainBuffer

請勿以破壞性的方式直接排入訊息佇列。

將副本排入佇列。

OnMessageReceivedFunct

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

訊息文字接收事件處理函式的類型。

OnMessageReceived 委派成員提供這種類型的函式,以處理 endPoint 上的訊息文字接收事件,其中 msg 是寄件者在 senderAddr 收到的訊息文字。

詳細資料
參數
[in] endPoint
與事件相關聯的端點。
[in] msg
收到的訊息文字。
[in] senderAddr
寄件者的 IP 位址。

OnReceiveErrorFunct

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

接收錯誤事件處理函式的類型。

OnReceiveError 委派成員提供此類型的函式,以處理 endPoint 上的接待錯誤事件。err 引數會提供錯誤類型的特定詳細資料。

詳細資料
參數
[in] endPoint
與事件相關聯的端點。
[in] err
錯誤原因。

公開屬性

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

端點的訊息接收事件處理函式委派。

OnReceiveError

OnReceiveErrorFunct OnReceiveError

端點接收錯誤事件處理函式委派。

mState

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

底層端點的基本動態狀態。

物件會在「就緒」狀態中初始化接著繼續進入「繫結」狀態繫結至本機介面位址後的狀態,請繼續「監聽」狀態。

注意:基於過往的二進位檔相容性原因,kBasisState_Closed 狀態列舉會對應至 kState_Ready。現有的 kState_Closed 用於區分「尚未開啟」的不同之處以及「先前開啟過」 已停業」之前存在於 kState_ReadykState_Closed 狀態下的存在。

受保護的屬性

mBoundIntfId

InterfaceId mBoundIntfId

公開函式

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

加入 IP 多點傳播群組。

將端點加入指定介面上提供的多點傳播群組。

詳細資料
參數
[in] aInterfaceId
要新增至多點傳播群組的網路介面指標
[in] aAddress
將介面新增到多點傳播群組
傳回值
INET_NO_ERROR
成功:已移除多點傳播群組
INET_ERROR_UNKNOWN_INTERFACE
不明的網路介面,aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress不是「kIPAddressType_IPv4」或「kIPAddressType_IPv6」或非多點傳播
other
其他系統或平台錯誤

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

離開 IP 多點傳播群組。

從指定介面上提供的多點傳播群組移除端點。

詳細資料
參數
[in] aInterfaceId
要從多點傳播群組中移除的網路介面指標
[in] aAddress
移除多點傳播群組
傳回值
INET_NO_ERROR
成功:已移除多點傳播群組
INET_ERROR_UNKNOWN_INTERFACE
不明的網路介面,aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress不是「kIPAddressType_IPv4」或「kIPAddressType_IPv6」或非多點傳播
other
其他系統或平台錯誤

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

設定是否應循環播放 IP 多點傳播流量。

設定 IP 多點傳播流量是否應循環回這個端點。

詳細資料
參數
[in] aIPVersion
[in] aLoop
傳回值
INET_NO_ERROR
成功:多點回送行為設定
other
其他系統或平台錯誤

受保護的函式

繫結

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
)

公開的靜態函式

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

受保護的靜態函式

GetPacketInfo

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

取得 LwIP IP 層來源和目的地定址資訊。

使用與封包相關的 LwIP 資訊「隱藏」時會在封包緩衝區的資料開頭之前預留的空間。此為必要操作,因為系統層事件只有兩個引數,而在本例中用於傳送指向終點的指標和緩衝區的指標。

詳細資料
參數
[in] aBuffer
包含 IP 訊息的封包緩衝區
傳回
順利解決地址資訊問題否則,如果封包用於位址資訊的封包空間不足,則傳回 NULL。

大多數情況下,這種儲存資訊的做法在資料有效前就存在,因為 LwIP IP 訊息的第一個緩衝區包含了用於乙太網路/IP/UDP 標頭的空間。不過,由於目前 IPPacketInfo 結構的大小 (40 個位元組),沒有足夠的空間將結構與酬載儲存在單一封包緩衝區中。實際上,只有在傳送極大的 IPv4 封包不含乙太網路標頭時,才會發生這種情況。