ملخصات TCP

تتضمن هذه الوحدة ملخصات سهلة الاستخدام أعلى واجهة برمجة تطبيقات TCP الأساسية.

ملخّص

التعدادات

anonymous enum تعداد
تعريف العلامات التي تم تمريرها إلى otTcpCircularSendBufferWrite.

أنواع المحددات

otTcpCircularSendBuffer typedef
تمثل المخزن المؤقت للإرسال الدائري للاستخدام مع نقطة نهاية TCP.
otTcpEndpointAndCircularSendBuffer typedef
بنية السياق المطلوب استخدامها مع mbedtls_ssl_set_bio

الدوال

otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
تعمل على إعداد المخزن المؤقت للإرسال الدائري لبروتوكول TCP بهدف الإعداد، مع فصله في حال إرفاقه.
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
void
يتجاهل جميع البيانات بشدة في المخزن المؤقت للإرسال الدائري.
otTcpCircularSendBufferGetFreeSpace(const otTcpCircularSendBuffer *aSendBuffer)
size_t
لعرض مقدار المساحة الفارغة في المخزن المؤقت للإرسال الدائري لبروتوكول TCP.
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
void
تنفِّذ معالجة خاصة بالتخزين المؤقت لإرسال البيانات بشكل مؤقت في استدعاء otTcpForwardProgress.
otTcpCircularSendBufferInitialize(otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity)
void
لإعداد المخزن المؤقت للإرسال الدائري لبروتوكول TCP
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags)
تُرسِل البيانات على نقطة نهاية TCP، باستخدام المخزن المؤقت للإرسال الدائري لبروتوكول TCP المُقدَّم لإدارة التخزين المؤقت.
otTcpMbedTlsSslRecvCallback(void *aCtx, unsigned char *aBuf, size_t aLen)
int
يمكن تلقّي معاودة الاتصال بدون حظر للوصول إلى mbedtls_ssl_set_bio.
otTcpMbedTlsSslSendCallback(void *aCtx, const unsigned char *aBuf, size_t aLen)
int
لا يتم إرسال رد الاتصال بدون حظر إلى mbedtls_ssl_set_bio.

هياكل

otTcpCiricalSendBuffer

تمثل المخزن المؤقت للإرسال الدائري للاستخدام مع نقطة نهاية TCP.

otTcpEndpointAndCiricalSendBuffer

بنية السياق المطلوب استخدامها مع mbedtls_ssl_set_bio

التعدادات

تعداد مجهول

 anonymous enum

تعريف العلامات التي تم تمريرها إلى otTcpCircularSendBufferWrite.

أنواع المحددات

otTcpCiricalSendBuffer

struct otTcpCircularSendBuffer otTcpCircularSendBuffer

تمثل المخزن المؤقت للإرسال الدائري للاستخدام مع نقطة نهاية TCP.

استخدام المخزن المؤقت للإرسال الدائري اختياري. يمكن للتطبيقات استخدام نقطة نهاية TCP لإرسال البيانات من خلال إدارة otLinkedBuffers مباشرةً. ومع ذلك، قد تجد بعض التطبيقات أنّه من الأسهل توفُّر مخزن مؤقّت للإرسال الدائري، حيث يمكن لهذه التطبيقات استدعاء otTcpCiricalSendBufferwrite() من أجل "إرفاق" المخزن المؤقت للإرسال الدائري إلى نقطة نهاية TCP وإرسال بيانات عن نقطة نهاية بروتوكول TCP هذه، بناءً على المخزن المؤقت للإرسال الدائري لإدارة otLinkedBuffers.

يتم تنفيذ otTcpCiricalSendBuffer بالإضافة إلى واجهة برمجة التطبيقات المستندة إلى otLinkedBuffer التي يتم تقديمها من خلال otTcpEndpoint. بعد الربط بنقطة otTcpEndpoint، ينفِّذ الأمر otTcpCiricalSendBuffer كل إدارة إدارة otLinkedBuffer. ويعني ذلك أنه بعد إرفاق otTcpCirlogicalSendBuffer بـ otTcpEndpoint، يجب ألا يستدعي التطبيق otTcpSendByReference() أو otTcpSendByExtension() على otTcpEndpoint. بدلاً من ذلك، يجب أن يستخدم التطبيق otTcpCiricalSendBufferwrite() لإضافة بيانات إلى المخزن المؤقت للإرسال.

وتمكّن استدعاء otTcpForwardProgress() المستخدمين من معرفة وقت توفر المساحة في المخزن المؤقت للإرسال الدائري. في otTcpEndpoint الذي تم إرفاق otTcpCirlogicalSendBuffer به، يجب أن يثبِّت التطبيق رد الاتصال otTcpForwardProgress() ويتم استدعاء otTcpCiricalSendBufferHandleForwardProgress() في otTcpCiricalSendBuffer المرفق في بداية دالة رد الاتصال. ننصح المستخدم بعدم تثبيت استدعاء otTcpSendDone()، حيث يتم التعامل مع جميع إدارة otLinkedBuffers من خلال المخزن المؤقت للإرسال الدائري.

يجب ألا يفحص التطبيق حقول هذه البنية مباشرةً، ويجب ألا يتفاعل معها إلا من خلال دوال TCP Send Buffer API التي تم تقديم توقيعها في هذا الملف.

otTcpEndpointAndCiricalSendBuffer

struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer

بنية السياق المطلوب استخدامها مع mbedtls_ssl_set_bio

الدوال

otTcpCiricalSendBufferDeFirstNameize

otError otTcpCircularSendBufferDeinitialize(
  otTcpCircularSendBuffer *aSendBuffer
)

تعمل على إعداد المخزن المؤقت للإرسال الدائري لبروتوكول TCP بهدف الإعداد، مع فصله في حال إرفاقه.

إذا لم يكن المخزن المؤقت للإرسال المتعدد لبروتوكول TCP فارغًا، لن تنجح هذه العملية.

التفاصيل
المَعلمات
[in] aSendBuffer
المخزن المؤقت للإرسال الدائري لبروتوكول TCP لإلغاء إعداده.
قيم الإرجاع
OT_ERROR_NONE
تم إنهاء المخزن المؤقت للإرسال الدائري لبروتوكول TCP بنجاح.
OT_ERROR_BUSY
يحتوي المخزن المؤقت الدائري على بيانات ولا يمكن إلغاء تفعيله.

otTcpCiricalSendBufferForceتجاهل الكل

void otTcpCircularSendBufferForceDiscardAll(
  otTcpCircularSendBuffer *aSendBuffer
)

يتجاهل جميع البيانات بشدة في المخزن المؤقت للإرسال الدائري.

من المتوقع أن يستدعي التطبيق هذه الدالة عند إنهاء اتصال TCP بشكل غير مقصود (على سبيل المثال، إذا طلب التطبيق otTcpEndpointABort() أو تم إبلاغه بإعادة ضبط اتصال عبر استدعاء otTcpConnectionLost().

يؤدي استدعاء هذه الدالة على المخزن المؤقت المؤقت غير الطويل لبروتوكول TCP المرفق بنقطة نهاية TCP إلى حدوث سلوك غير محدّد.

التفاصيل
المَعلمات
[in] aSendBuffer
المخزن المؤقت للإرسال الدائري لبروتوكول TCP الذي يتم تجاهل بياناته.

otTcpCiricalSendBufferGetFreeSpace

size_t otTcpCircularSendBufferGetFreeSpace(
  const otTcpCircularSendBuffer *aSendBuffer
)

لعرض مقدار المساحة الفارغة في المخزن المؤقت للإرسال الدائري لبروتوكول TCP.

ستنجح هذه العملية دائمًا.

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

otTcpCiricalSendBufferHandleForwardProgress

void otTcpCircularSendBufferHandleForwardProgress(
  otTcpCircularSendBuffer *aSendBuffer,
  size_t aInSendBuffer
)

تنفِّذ معالجة خاصة بالتخزين المؤقت لإرسال البيانات بشكل مؤقت في استدعاء otTcpForwardProgress.

يُتوقَّع أن يثبِّت التطبيق استدعاء otTcpForwardProgress() على otTcpEndpoint، وأن يطلب هذه الدالة في بداية دالة رد الاتصال لإجراء معالجة خاصة بالإرسال المؤقت المؤقت.

في دالة رد الاتصال، يمكن للتطبيق تحديد مقدار المساحة الخالية في المخزن المؤقت للإرسال الدائري من خلال استدعاء otTcpCiricalSendBufferFreeSpace()، أو من خلال مقارنة aInSendBuffer بسعة المخزن المؤقت للإرسال، التي اختارها المستخدم عند استدعاء otTcpCiricalSendBuffer المبدئيةize.

التفاصيل
المَعلمات
[in] aSendBuffer
مؤشر إلى المخزن المؤقت للإرسال الدائري لبروتوكول TCP لنقطة النهاية التي تم استدعاء otTcpForwardProgress() لها.
[in] aInSendBuffer
تم تمرير قيمة aInSendBuffer إلى استدعاء otTcpForwardProgress().

otTcpCiricalSendBufferFirstNameize

void otTcpCircularSendBufferInitialize(
  otTcpCircularSendBuffer *aSendBuffer,
  void *aDataBuffer,
  size_t aCapacity
)

لإعداد المخزن المؤقت للإرسال الدائري لبروتوكول TCP

التفاصيل
المَعلمات
[in] aSendBuffer
مؤشر إلى المخزن المؤقت للإرسال الدائري لبروتوكول TCP لإعداده
[in] aDataBuffer
مؤشر إلى الذاكرة لاستخدامه لتخزين البيانات في المخزن المؤقت للإرسال الدائري لبروتوكول TCP
[in] aCapacity
هي سعة التخزين بالبايت للمخزن المؤقت للإرسال TCP، والتي يجب أن تساوي حجم الذاكرة التي يشير إليها aDataBuffer .

otTcpCiricalSendBufferكتابة

otError otTcpCircularSendBufferWrite(
  otTcpEndpoint *aEndpoint,
  otTcpCircularSendBuffer *aSendBuffer,
  const void *aData,
  size_t aLength,
  size_t *aWritten,
  uint32_t aFlags
)

تُرسِل البيانات على نقطة نهاية TCP، باستخدام المخزن المؤقت للإرسال الدائري لبروتوكول TCP المُقدَّم لإدارة التخزين المؤقت.

بعد طلب هذه الدالة، يتم اعتبار aSendBuffer وaEndpoint "مرفقين" معًا. أثناء إرفاقها، يجب إجراء جميع عمليات الإرسال التي تخص aEndpoint باستخدام aSendBuffer، ويجب ربط جميع العمليات على aSendBuffer بـ aEndpoint .

والطريقة الوحيدة "لفصل" المخزن المؤقت للإرسال المتعدد لبروتوكول TCP ونقطة نهاية TCP هي الانتظار حتى يصبح المخزن المؤقت للإرسال فارغًا تمامًا. يمكن أن يحدث ذلك بطريقتَين: (1) إرسال جميع البيانات المخزّنة في المخزن المؤقت للإرسال مع الإقرار بها في المسار العادي لعملية بروتوكول TCP أو (2) إنهاء الاتصال.

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

إذا وصلت سعة التخزين المؤقت للإرسال الدائري إلى السعة، سيتم نسخ بادئة البيانات المقدَّمة فقط إلى المخزن المؤقت للإرسال الدائري.

التفاصيل
المَعلمات
[in] aEndpoint
نقطة نهاية TCP التي يمكن إرسال البيانات إليها.
[in] aSendBuffer
المخزن المؤقت للإرسال الدائري لبروتوكول TCP والذي يتم نسخ البيانات إليه.
[in] aData
مؤشر إلى البيانات للنسخ إلى المخزن المؤقت للإرسال الدائري لبروتوكول TCP
[in] aLength
طول البيانات المُشار إليها من قِبل aData للنسخ إلى المخزن المؤقت للإرسال الدائري لبروتوكول TCP
[out] aWritten
وتتم التعبئة بكمية البيانات التي يتم نسخها إلى المخزن المؤقت للإرسال، والتي قد تكون أقل من aLength في حال وصول المخزن المؤقت للإرسال إلى السعة
[in] aFlags
علامات تحدد خيارات هذه العملية (راجع التعداد أعلاه).
قيم الإرجاع
OT_ERROR_NONE
تم نسخ البيانات بنجاح إلى المخزن المؤقت للإرسال وإرسالها إلى نقطة نهاية TCP.
OT_ERROR_FAILED
تعذَّر إرسال البيانات على نقطة نهاية TCP.

otTcpMbedTlsSslRecvCallback

int otTcpMbedTlsSslRecvCallback(
  void *aCtx,
  unsigned char *aBuf,
  size_t aLen
)

يمكن تلقّي معاودة الاتصال بدون حظر للوصول إلى mbedtls_ssl_set_bio.

التفاصيل
المَعلمات
[in] aCtx
[out] aBuf
تمثّل هذه السمة المخزن المؤقت الذي يتم تلقّي البيانات فيه.
[in] aLen
الحد الأقصى لحجم البيانات التي يمكن استلامها.
المرتجعات
عدد وحدات البايت التي تم استلامها أو رمز خطأ mbedtls

otTcpMbedTlsSslSendCallback

int otTcpMbedTlsSslSendCallback(
  void *aCtx,
  const unsigned char *aBuf,
  size_t aLen
)

لا يتم إرسال رد الاتصال بدون حظر إلى mbedtls_ssl_set_bio.

التفاصيل
المَعلمات
[in] aCtx
[in] aBuf
البيانات المطلوب إضافتها إلى المخزن المؤقت للإرسال
[in] aLen
كمية البيانات المطلوب إضافتها إلى المخزن المؤقت للإرسال
المرتجعات
عدد وحدات البايت المرسَلة أو رمز خطأ mbedtls

الموارد

تبدأ مواضيع مراجع واجهة برمجة تطبيقات OpenThread من رمز المصدر، وهو متاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في المستندات، يمكنك الاطّلاع على المراجع.