टीसीपी ऐब्स्ट्रैक्शन

इस मॉड्यूल में, बेस टीसीपी एपीआई के ऊपर मौजूद ऐब्स्ट्रैक्शन को इस्तेमाल करना आसान है.

खास जानकारी

गिनती

anonymous enum enum
otTcpCircularSendBufferWrite को भेजे गए फ़्लैग के बारे में बताता है.

टाइपडीफ़

otTcpCircularSendBuffer typedef
टीसीपी एंडपॉइंट के साथ इस्तेमाल करने के लिए, सर्कुलर से भेजने का बफ़र दिखाता है.
otTcpEndpointAndCircularSendBuffer typedef
mbedtls_एसएसएल_set_bio के साथ इस्तेमाल करने के लिए कॉन्टेक्स्ट स्ट्रक्चर.

फ़ंक्शन

otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
टीसीपी से भरे जाने वाले मैसेज के बफ़र को शुरू नहीं करता. अगर वह अटैच हो जाता है, तो वह बफ़र हो जाता है.
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
void
यह सर्कुलर से भेजे जाने वाले बफ़र का सारा डेटा हमेशा के लिए खारिज कर देता है.
otTcpCircularSendBufferGetFreeSpace(const otTcpCircularSendBuffer *aSendBuffer)
size_t
टीसीपी से भेजे जाने वाले सर्कुलर भेजने के बफ़र में खाली जगह की संख्या दिखाता है.
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
void
otTcpForwardPrograd कॉलबैक में, सर्कुलर-send-buffer के हिसाब से हैंडलिंग करता है.
otTcpCircularSendBufferInitialize(otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity)
void
टीसीपी सर्कुलर भेजने के बफ़र को शुरू करता है.
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags)
बफ़रिंग को मैनेज करने के लिए, दिए गए टीसीपी सर्कुलर सेन बफ़र का इस्तेमाल करके, टीसीपी एंडपॉइंट पर डेटा भेजता है.
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_एसएसएल_set_bio को पास करने के लिए कॉलबैक भेजा जाता है.

संरचना

otTcpCircularSendBuffer

टीसीपी एंडपॉइंट के साथ इस्तेमाल करने के लिए, सर्कुलर से भेजने का बफ़र दिखाता है.

otTcpEndpointAndCircularSendBuffer

mbedtls_एसएसएल_set_bio के साथ इस्तेमाल करने के लिए कॉन्टेक्स्ट स्ट्रक्चर.

गिनती

अनाम Enum

 anonymous enum

otTcpCircularSendBufferWrite को भेजे गए फ़्लैग के बारे में बताता है.

टाइपडीफ़

otTcpCircularSendBuffer

struct otTcpCircularSendBuffer otTcpCircularSendBuffer

टीसीपी एंडपॉइंट के साथ इस्तेमाल करने के लिए, सर्कुलर से भेजने का बफ़र दिखाता है.

ईमेल भेजने के लिए सर्कुलर बफ़र का इस्तेमाल करना ज़रूरी नहीं है. ऐप्लिकेशन, टीसीपी एंडपॉइंट का इस्तेमाल करके सीधे otLinkedBuffers को मैनेज करके डेटा भेज सकते हैं. हालांकि, कुछ ऐप्लिकेशन को सर्कुलर सेन बफ़र का इस्तेमाल करना ज़्यादा सुविधाजनक लग सकता है. ऐसे ऐप्लिकेशन otTcpCircularSendBufferWrite() को कॉल कर सकते हैं, ताकि टीसीपी एंडपॉइंट में सर्कुलर सेन बफ़र को "अटैचमेंट" किया जा सके और उस टीसीपी एंडपॉइंट पर डेटा भेजा जा सके. इस दौरान, दिए गए otLinkedBuffers को मैनेज करने के लिए सर्कुलर सेन बफ़र का इस्तेमाल किया जा सकता है.

otTcpCircularSendBuffer को otTcpEndpoint की ओर से दिए गए otLinkedBuffer-आधारित एपीआई के ऊपर लागू किया जाता है. otTcpEndpoint से जुड़ने के बाद, otTcpCircularSendBuffer कनेक्शन के लिए otLinkedBuffers को मैनेज करने का पूरा काम करता है. इसका मतलब यह है कि किसी otTcpEndpoint से otTcpCircularSendBuffer के अटैच होने के बाद, ऐप्लिकेशन को उस otTcpEndpoint पर otTcpSendByReference() या otTcpSendByExtension() को कॉल नहीं करना चाहिए. इसके बजाय, ऐप्लिकेशन को भेजें बफ़र में डेटा जोड़ने के लिए otTcpCircularSendBufferWrite() का इस्तेमाल करना चाहिए.

otTcpForwardProgress() कॉलबैक की मदद से, उपयोगकर्ताओं को यह जानकारी मिलती है कि सर्कुलर भेजने के बफ़र में स्पेस कब उपलब्ध होता है. जिस otTcpEndpoint से otTcpCircularSendBuffer को अटैच किया गया है उस पर, ऐप्लिकेशन को otTcpForwardProgress() कॉलबैक इंस्टॉल करना ज़रूरी है. साथ ही, कॉलबैक फ़ंक्शन की शुरुआत में, अटैच किए गए otTcpCircularSendBuffer बटन पर otTcpCircularSendBufferHandleForwardProgress() को कॉल करना ज़रूरी है. यह सुझाव दिया जाता है कि उपयोगकर्ता, otTcpSendDone() कॉलबैक इंस्टॉल न करें, क्योंकि otLinkedBuffers का पूरा मैनेजमेंट, सर्कुलर सेंड बफ़र से मैनेज किया जाता है.

ऐप्लिकेशन को सीधे इस स्ट्रक्चर के फ़ील्ड की जांच नहीं करनी चाहिए; इसे इसके साथ सिर्फ़ उन टीसीपी सर्कुलर सेंड बफ़र एपीआई के फ़ंक्शन के ज़रिए इंटरैक्ट करना चाहिए जिनके हस्ताक्षर इस फ़ाइल में दिए गए हैं.

otTcpEndpointAndCircularSendBuffer

struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer

mbedtls_एसएसएल_set_bio के साथ इस्तेमाल करने के लिए कॉन्टेक्स्ट स्ट्रक्चर.

फ़ंक्शन

otTcpCircularSendBufferDeinitialize

otError otTcpCircularSendBufferDeinitialize(
  otTcpCircularSendBuffer *aSendBuffer
)

टीसीपी से भरे जाने वाले मैसेज के बफ़र को शुरू नहीं करता. अगर वह अटैच हो जाता है, तो वह बफ़र हो जाता है.

अगर टीसीपी सर्कुलर भेजने का बफ़र खाली नहीं है, तो यह कार्रवाई नहीं की जा सकेगी.

जानकारी
पैरामीटर
[in] aSendBuffer
इनीशियलाइज़ नहीं करने के लिए, टीसीपी सर्कुलर भेजने का बफ़र.
रिटर्न वैल्यू
OT_ERROR_NONE
टीसीपी से भेजे जाने वाले सर्कुलर भेजने के बफ़र को बंद किया गया.
OT_ERROR_BUSY
सर्कुलर बफ़र में डेटा मौजूद है और इसे शुरू नहीं किया जा सकता.

otTcpCircularSendBufferForceDiscardAll

void otTcpCircularSendBufferForceDiscardAll(
  otTcpCircularSendBuffer *aSendBuffer
)

यह सर्कुलर से भेजे जाने वाले बफ़र का सारा डेटा हमेशा के लिए खारिज कर देता है.

जब टीसीपी कनेक्शन को गलती से खत्म कर दिया जाता है, तब ऐप्लिकेशन इस फ़ंक्शन को कॉल कर सकता है (उदाहरण के लिए, अगर ऐप्लिकेशन otTcpEndpointAbort() को कॉल करता है या otTcpConnectionLost() कॉलबैक के ज़रिए, रीसेट किए जाने की सूचना मिलती है).

इस फ़ंक्शन को ऐसे गैर-ज़रूरी टीसीपी सर्कुलर पर कॉल करने से बफ़र होता है जो टीसीपी एंडपॉइंट से जुड़े होते हैं और तय नहीं की गई होती है.

जानकारी
पैरामीटर
[in] aSendBuffer
वह टीसीपी सर्कुलर भेजें बफ़र जिसका डेटा खारिज करना है.

otTcpCircularSendBufferGetFreeSpace

size_t otTcpCircularSendBufferGetFreeSpace(
  const otTcpCircularSendBuffer *aSendBuffer
)

टीसीपी से भेजे जाने वाले सर्कुलर भेजने के बफ़र में खाली जगह की संख्या दिखाता है.

यह कार्रवाई हमेशा सफल होगी.

जानकारी
पैरामीटर
[in] aSendBuffer
टीसीपी सर्कुलर भेजने के लिए इस्तेमाल होने वाला वह बफ़र होता है जिसके बदले में देने के लिए खाली जगह होती है.
लौटाए गए सामान
भेजें बफ़र में खाली जगह की संख्या.

otTcpCircularSendBufferHandleForwardProgress

void otTcpCircularSendBufferHandleForwardProgress(
  otTcpCircularSendBuffer *aSendBuffer,
  size_t aInSendBuffer
)

otTcpForwardPrograd कॉलबैक में, सर्कुलर-send-buffer के हिसाब से हैंडलिंग करता है.

इस ऐप्लिकेशन से otTcpEndpoint पर otTcpForwardProgress() कॉलबैक इंस्टॉल करने और सर्कुलर-send-buffer की खास प्रोसेस के लिए, कॉलबैक फ़ंक्शन की शुरुआत में इस फ़ंक्शन को कॉल करने की उम्मीद है.

कॉलबैक फ़ंक्शन में, ऐप्लिकेशन otTcpCircularSendBufferFreeSpace() को कॉल करके या aInSendBuffer की तुलना भेजें बफ़र की क्षमता से करके या otTcpCircularSendBufferInitialize() को कॉल करते समय चुने गए मैसेज के बफ़र में, सर्कुलर भेजे जाने वाले बफ़र में खाली जगह की मात्रा तय कर सकता है.

जानकारी
पैरामीटर
[in] aSendBuffer
उस एंडपॉइंट के लिए टीसीपी सर्कुलर भेजने के बफ़र का पॉइंटर जिसके लिए otTcpForwardProgress() को शुरू किया गया था.
[in] aInSendBuffer
aInSendBuffer की वैल्यू को otTcpForwardProgress() कॉलबैक को पास किया गया है.

otTcpCircularSendBufferInitialize

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

टीसीपी सर्कुलर भेजने के बफ़र को शुरू करता है.

जानकारी
पैरामीटर
[in] aSendBuffer
टीसीपी सर्कुलर का एक पॉइंटर, शुरू करने के लिए बफ़र भेजता है.
[in] aDataBuffer
वह पॉइंट टू मेमोरी जिसका इस्तेमाल, टीसीपी सर्कुलर भेजने के बफ़र में डेटा स्टोर करने के लिए किया जाता है.
[in] aCapacity
टीसीपी सर्कुलर भेजने के बफ़र की बाइट में क्षमता, जो aDataBuffer की ओर से पॉइंट की गई मेमोरी के साइज़ के बराबर होनी चाहिए .

otTcpCircularSendBufferWrite

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

बफ़रिंग को मैनेज करने के लिए, दिए गए टीसीपी सर्कुलर सेन बफ़र का इस्तेमाल करके, टीसीपी एंडपॉइंट पर डेटा भेजता है.

इस फ़ंक्शन को कॉल करने के बाद, aSendBuffer और aEndpoint को एक-दूसरे से "अटैचमेंट" माना जाता है. इन बदलावों के अटैच होने के दौरान, aEndpoint के लिए भेजी गई सभी कार्रवाइयां aSendBuffer का इस्तेमाल करके की जानी चाहिए. साथ ही, aSendBuffer पर की गई सभी कार्रवाइयां aEndpoint से जुड़ी होनी चाहिए.

टीसीपी से गोल आकार में भेजे गए मैसेज के बफ़र और टीसीपी एंडपॉइंट को "अलग" करने का सिर्फ़ यही एक तरीका है कि भेजे जाने वाले बफ़र के पूरी तरह खाली होने तक इंतज़ार करें. ऐसा दो तरीकों से हो सकता है: (1) भेजें बफ़र में मौजूद सारा डेटा टीसीपी प्रोटोकॉल ऑपरेशन के सामान्य तरीके में भेजा जाता है और स्वीकार किया जाता है या (2) कनेक्शन खत्म कर दिया जाता है.

हमारा सुझाव है कि इस्तेमाल के पैटर्न के हिसाब से, टीसीपी एंडपॉइंट के साथ सिंगल टीसीपी सर्कुलर सेंड बफ़र का इस्तेमाल करें. साथ ही, उस टीसीपी एंडपॉइंट पर सिर्फ़ इससे जुड़े टीसीपी सर्कुलर बफ़र के ज़रिए डेटा भेजें. इस्तेमाल का यह पैटर्न, ऊपर बताई गई समस्याओं को हल करता है. इसके लिए टीसीपी एंडपॉइंट और टीसीपी सर्कुलर सेन बफ़र का साथ-साथ इस्तेमाल किया जाता है.

अगर गोल आकार में भेजने का बफ़र तय सीमा तक पहुंच जाता है, तो दिए गए डेटा का सिर्फ़ एक प्रीफ़िक्स, सर्कुलर भेजने के बफ़र में कॉपी किया जाता है.

जानकारी
पैरामीटर
[in] aEndpoint
वह टीसीपी एंडपॉइंट जिस पर डेटा भेजना है.
[in] aSendBuffer
टीसीपी सर्कुलर, वह बफ़र भेजता है जिसमें डेटा कॉपी किया जाता है.
[in] aData
टीसीपी सर्कुलर भेजने के बफ़र में डेटा कॉपी करने के लिए पॉइंटर.
[in] aLength
डेटा की वह लंबाई, जिसे टीसीपी से जुड़े सर्कुलर भेजने के बफ़र में कॉपी करने के लिए aData दिखाया गया है.
[out] aWritten
इस फ़ील्ड में, 'भेजने के लिए बफ़र' में कॉपी किए गए डेटा को शामिल किया जाता है. अगर बफ़र की क्षमता खत्म हो जाती है, तो इस बफ़र का साइज़ aLength से कम हो सकता है.
[in] aFlags
इस कार्रवाई के लिए विकल्प बताने वाले फ़्लैग (ऊपर दी गई सूची देखें).
रिटर्न वैल्यू
OT_ERROR_NONE
डेटा को भेजें बफ़र में कॉपी कर दिया गया है और इसे टीसीपी एंडपॉइंट पर भेज दिया गया है.
OT_ERROR_FAILED
टीसीपी एंडपॉइंट पर डेटा नहीं भेजा जा सका.

otTcpMbedTlsSslRecvCallback

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

ब्लॉक न होने पर, mbedtls_SSL_set_bio को पास करने के लिए कॉलबैक पाएं.

जानकारी
पैरामीटर
[in] aCtx
otTcpEndpointAndCircularSendBuffer के लिए पॉइंटर.
[out] aBuf
वह बफ़र जिसमें डेटा पाना है.
[in] aLen
हमें ज़्यादा से ज़्यादा कितना डेटा मिल सकता है.
लौटाए गए सामान
मिलने वाले बाइट की संख्या या कोई mbedtls गड़बड़ी कोड.

otTcpMbedTlsSslSendCallback

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

ब्लॉक न होने से, mbedtls_एसएसएल_set_bio को पास करने के लिए कॉलबैक भेजा जाता है.

जानकारी
पैरामीटर
[in] aCtx
otTcpEndpointAndCircularSendBuffer के लिए पॉइंटर.
[in] aBuf
'भेजें' बफ़र में जोड़ा जाने वाला डेटा.
[in] aLen
भेजें बफ़र में जोड़ा जाने वाला डेटा.
लौटाए गए सामान
भेजी गई बाइट की संख्या या कोई mbedtls गड़बड़ी कोड.

संसाधन

OpenThread API के रेफ़रंस के विषय, सोर्स कोड से मिलते हैं. यह सोर्स GitHub पर उपलब्ध है. ज़्यादा जानकारी या हमारे दस्तावेज़ में योगदान देने के लिए, संसाधन देखें.