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)
يمكنك الحصول على معلومات عن مصدر عنوان IP ووجهة LwIP.

الأنواع المتاحة للجميع

بسرعة 8

 @8

الحالة الديناميكية الأساسية لنقطة النهاية الأساسية.

يتم إعداد العناصر بحالة "&&;;جاهزة&و;;;;للمتابعة", انتقل إلى الحالة "&&;;bound" ; بعد ربطها بعنوان واجهة محلية ثم تابع إلى الحالة "&&;&;;listing" عند تسجيلها تسلسلات للتعامل مع أحداث استقبال رسائل ICMP.

ملاحظة: يتم ربط تعداد kBasisState_Closed بالقيمة kState_Ready لأسباب تتعلّق بالتوافق الثنائي السابق. تهدف kState_Closed الحالية إلى التمييز بشكلٍ منفصل بين &علامة التبويب التي لم يتم فتحها بعد&و;&وتم افتتاحها سابقًا وهي مغلقة الآن&وعلى أنّها كانت في السابق في حالتَي kState_Ready وkState_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 للمُرسِل.

OnReceivedErrorFunct

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

نوع وظيفة معالجة حدث الاستقبال.

يمكنك توفير وظيفة من هذا النوع لعضو مفوَّض OnReceiveError لمعالجة أحداث خطأ الاستقبال في endPoint. تقدم الوسيطة err تفاصيل محددة حول نوع الخطأ.

التفاصيل
المعلَمات
[in] endPoint
نقطة النهاية المرتبطة بالحدث.
[in] err
سبب الخطأ.

السمات العامة

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

مفوَّض وظيفة معالجة حدث استقبال الرسائل في "نقطة النهاية"

خطأ في الاستلام

OnReceiveErrorFunct OnReceiveError

يتلقّى مفوِّض نقطة النهاية "التعامل مع أحداث الخطأ"

mState

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

الحالة الديناميكية الأساسية لنقطة النهاية الأساسية.

يتم إعداد العناصر بحالة "&&;;جاهزة&و;;;;للمتابعة", انتقل إلى الحالة "&&;;bound" ; بعد ربطها بعنوان واجهة محلية ثم تابع إلى الحالة "&&;&;;listing" عند تسجيلها تسلسلات للتعامل مع أحداث استقبال رسائل ICMP.

ملاحظة: يتم ربط تعداد kBasisState_Closed بالقيمة kState_Ready لأسباب تتعلّق بالتوافق الثنائي السابق. تهدف kState_Closed الحالية إلى التمييز بشكلٍ منفصل بين &علامة التبويب التي لم يتم فتحها بعد&و;&وتم افتتاحها سابقًا وهي مغلقة الآن&وعلى أنّها كانت في السابق في حالتَي kState_Ready وkState_Closed.

السمات المحمية

mBoundIntfId

InterfaceId mBoundIntfId

وظائف عامة

الانضمام إلى البث المتعدد

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
خطأ آخر في النظام أو النظام الأساسي

مغادرة البث المتعدد

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
خطأ آخر في النظام أو النظام الأساسي

ضبط MultiCastLoopback

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
)

التجليد

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

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

مقبض البيانات المُستلمة

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

اسم الحساب في انتظار المراجعة

void HandlePendingIO(
  uint16_t aPort
)

إنيت

void Init(
  InetLayer *aInetLayer
)

التحضير

SocketEvents PrepareIO(
  void
)

إرسال الرسالة

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

الدوال الثابتة العامة

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

دوال ثابتة محمية

الحصول على معلومات

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

يمكنك الحصول على معلومات عن مصدر عنوان IP ووجهة LwIP.

عند استخدام معلومات LwIP حول الحزمة في 'hidden' في المساحة المحجوزة قبل بدء البيانات في المخزن المؤقت للحزمة. ويُعدّ ذلك ضروريًا لأنّ أحداث طبقة النظام لا تتضمّن سوى وسيطتَين، يتم استخدامهما في هذه الحالة لنقل المؤشر إلى نقطة النهاية والمؤشر إلى المخزن المؤقت.

التفاصيل
المعلَمات
[in] aBuffer
المخزن المؤقت للحزمة يحتوي على رسالة IP
المرتجعات
يشير إلى معلومات العنوان بنجاح، وبخلاف ذلك، فارغ في حال عدم وجود مساحة كافية في الحزمة لمعلومات العنوان.

في معظم الحالات، تحتوي هذه الخدعة على تخزين المعلومات قبل عمل البيانات لأن المخزن المؤقت الأول في رسالة IP لـ LwIP يحتوي على المساحة التي تم استخدامها لعناوين إيثرنت/IP/UDP. ومع ذلك، بالنظر إلى الحجم الحالي للبنية IPPacketInfo (40 بايت)، من الممكن عدم وجود مساحة كافية لتخزين البنية مع الحمولة في المخزن المؤقت لحزمة واحدة. عمليًا، يجب أن يحدث ذلك فقط لحِزم IPv4 الكبيرة جدًا التي تصل بدون عنوان إيثرنت.