ملخصات TCP
تتضمن هذه الوحدة ملخصات سهلة الاستخدام أعلى واجهة برمجة تطبيقات TCP الأساسية.
ملخّص
التعدادات |
|
---|---|
anonymous enum
|
تعداد تعريف العلامات التي تم تمريرها إلى otTcpCircularSendBufferWrite . |
أنواع المحددات |
|
---|---|
otTcpCircularSendBuffer
|
typedefstruct otTcpCircularSendBuffer
تمثل المخزن المؤقت للإرسال الدائري للاستخدام مع نقطة نهاية 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 فارغًا، لن تنجح هذه العملية.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
||||
قيم الإرجاع |
|
otTcpCiricalSendBufferForceتجاهل الكل
void otTcpCircularSendBufferForceDiscardAll( otTcpCircularSendBuffer *aSendBuffer )
يتجاهل جميع البيانات بشدة في المخزن المؤقت للإرسال الدائري.
من المتوقع أن يستدعي التطبيق هذه الدالة عند إنهاء اتصال TCP بشكل غير مقصود (على سبيل المثال، إذا طلب التطبيق otTcpEndpointABort() أو تم إبلاغه بإعادة ضبط اتصال عبر استدعاء otTcpConnectionLost().
يؤدي استدعاء هذه الدالة على المخزن المؤقت المؤقت غير الطويل لبروتوكول TCP المرفق بنقطة نهاية TCP إلى حدوث سلوك غير محدّد.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
otTcpCiricalSendBufferGetFreeSpace
size_t otTcpCircularSendBufferGetFreeSpace( const otTcpCircularSendBuffer *aSendBuffer )
لعرض مقدار المساحة الفارغة في المخزن المؤقت للإرسال الدائري لبروتوكول TCP.
ستنجح هذه العملية دائمًا.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
||
المرتجعات |
مقدار المساحة الخالية في التخزين المؤقت للإرسال.
|
otTcpCiricalSendBufferHandleForwardProgress
void otTcpCircularSendBufferHandleForwardProgress( otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer )
تنفِّذ معالجة خاصة بالتخزين المؤقت لإرسال البيانات بشكل مؤقت في استدعاء otTcpForwardProgress.
يُتوقَّع أن يثبِّت التطبيق استدعاء otTcpForwardProgress() على otTcpEndpoint، وأن يطلب هذه الدالة في بداية دالة رد الاتصال لإجراء معالجة خاصة بالإرسال المؤقت المؤقت.
في دالة رد الاتصال، يمكن للتطبيق تحديد مقدار المساحة الخالية في المخزن المؤقت للإرسال الدائري من خلال استدعاء otTcpCiricalSendBufferFreeSpace()، أو من خلال مقارنة aInSendBuffer
بسعة المخزن المؤقت للإرسال، التي اختارها المستخدم عند استدعاء otTcpCiricalSendBuffer المبدئيةize.
التفاصيل | |||||
---|---|---|---|---|---|
المَعلمات |
|
otTcpCiricalSendBufferFirstNameize
void otTcpCircularSendBufferInitialize( otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity )
لإعداد المخزن المؤقت للإرسال الدائري لبروتوكول TCP
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
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 معًا.
إذا وصلت سعة التخزين المؤقت للإرسال الدائري إلى السعة، سيتم نسخ بادئة البيانات المقدَّمة فقط إلى المخزن المؤقت للإرسال الدائري.
التفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||||||
قيم الإرجاع |
|
otTcpMbedTlsSslRecvCallback
int otTcpMbedTlsSslRecvCallback( void *aCtx, unsigned char *aBuf, size_t aLen )
يمكن تلقّي معاودة الاتصال بدون حظر للوصول إلى mbedtls_ssl_set_bio.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
المرتجعات |
عدد وحدات البايت التي تم استلامها أو رمز خطأ mbedtls
|
otTcpMbedTlsSslSendCallback
int otTcpMbedTlsSslSendCallback( void *aCtx, const unsigned char *aBuf, size_t aLen )
لا يتم إرسال رد الاتصال بدون حظر إلى mbedtls_ssl_set_bio.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
المرتجعات |
عدد وحدات البايت المرسَلة أو رمز خطأ mbedtls
|
الموارد
تبدأ مواضيع مراجع واجهة برمجة تطبيقات OpenThread من رمز المصدر، وهو متاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في المستندات، يمكنك الاطّلاع على المراجع.