nl:: Inet:: IPEndPointBasis
#include <src/inet/IPEndPointBasis.h>
這個類別的物件代表不執行個體的 IP 通訊協定端點。
摘要
繼承
繼承自: nl::Inet::EndPointBasis直接已知子類別:
nl::Inet::RawEndPoint
nl::Inet::UDPEndPoint
公開類型 |
|
---|---|
@8{
|
列舉 基礎端點的基本動態狀態。 |
@9{
|
列舉 傳送 SendMsg 方法的選項旗標。 |
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
|
typedefvoid(*
訊息文字接收事件處理函式的類型。 |
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
|
typedefvoid(*
接收錯誤事件處理函式的類型。 |
公開屬性 |
|
---|---|
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
基礎端點的基本動態狀態。
物件會初始化為「就緒」狀態,繫結至本機介面位址後繼續進行「繫結」狀態,然後在物件已註冊處理接收 ICMP 訊息的事件時,繼續進行「監聽」狀態。
注意:基於歷來二進位檔相容性因素,kBasisState_Closed
狀態列舉對應至 kState_Ready
。現有的 kState_Closed
可單獨識別 kState_Ready
和 kState_Closed
狀態中「尚未開啟」和「先前已開啟現已關閉」的區別。
屬性 | |
---|---|
kState_Bound
|
端點已繫結,但沒有監聽。 |
kState_Closed
|
端點已關閉,可發布。 |
kState_Listening
|
接收資料元組的端點。 |
kState_Ready
|
端點已初始化,但尚未開啟。 |
OnMessageReceivedFunct
void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
訊息文字接收事件處理函式的類型。
將這個類型的函式提供給 OnMessageReceived
委派成員,以處理 endPoint
上的訊息文字接收事件,其中 msg
是寄件者在 senderAddr
收到的訊息文字。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
OnReceiveErrorFunct
void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
接收錯誤事件處理函式的類型。
將這個類型的函式提供給 OnReceiveError
委派成員,以處理 endPoint
的接收錯誤事件。err
引數提供錯誤類型的特定詳細資料。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
公開屬性
mState
enum nl::Inet::IPEndPointBasis::@8 mState
基礎端點的基本動態狀態。
物件會初始化為「就緒」狀態,繫結至本機介面位址後繼續進行「繫結」狀態,然後在物件已註冊處理接收 ICMP 訊息的事件時,繼續進行「監聽」狀態。
注意:基於歷來二進位檔相容性因素,kBasisState_Closed
狀態列舉對應至 kState_Ready
。現有的 kState_Closed
可單獨識別 kState_Ready
和 kState_Closed
狀態中「尚未開啟」和「先前已開啟現已關閉」的區別。
受保護的屬性
mBoundIntfId
InterfaceId mBoundIntfId
公用函式
JoinMulticastGroup
INET_ERROR JoinMulticastGroup( InterfaceId aInterfaceId, const IPAddress & aAddress )
加入 IP 多點傳播群組。
在指定介面中,將端點加入提供的多點傳播群組。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
LeaveMulticastGroup
INET_ERROR LeaveMulticastGroup( InterfaceId aInterfaceId, const IPAddress & aAddress )
離開 IP 多點傳播群組。
從指定介面中的多點傳播群組中移除端點。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
SetMulticastLoopback
INET_ERROR SetMulticastLoopback( IPVersion aIPVersion, bool aLoopback )
設定是否應循環播放 IP 多點傳送流量。
設定是否應將 IP 多點傳送流量迴圈回這個端點。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
受保護的函式
繫結
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 資訊時,系統會在保留空間中「隱藏」在封包緩衝區中的資料開始之前。之所以需要這麼做,是因為系統層事件只有兩個引數,在此情況下,這些引數會用來傳送指標至終點和緩衝區的指標。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
會指向成功時位址資訊的指標;否則,如果封包中位址資訊的空間不足,則為 NULL。
|
在大多數情況下,由於 LwIP IP 訊息的第一個緩衝區含有乙太網路/IP/UDP 標頭所使用的空間,因此在資料開始作業前就將資訊儲存起來會相當麻煩。不過,由於 IPPacketInfo 結構目前的大小 (40 位元組) 不足,可能無法將結構與酬載儲存在單一封包緩衝區中。實際上,只有在沒有乙太網路標頭的情況下送達的極大 IPv4 封包時,才會發生這種情形。