TCP বিমূর্ততা
এই মডিউলটি বেস TCP API-এর উপরে সহজে ব্যবহারযোগ্য বিমূর্ততা অন্তর্ভুক্ত করে।
সারসংক্ষেপ
গণনা | |
---|---|
anonymous enum | enumotTcpCircularSendBufferWrite এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে। |
Typedefs | |
---|---|
otTcpCircularSendBuffer | typedefstruct otTcpCircularSendBuffer একটি TCP এন্ডপয়েন্টের সাথে ব্যবহারের জন্য একটি সার্কুলার সেন্ড বাফারের প্রতিনিধিত্ব করে। |
otTcpEndpointAndCircularSendBuffer | typedef mbedtls_ssl_set_bio-এর সাথে ব্যবহার করার জন্য প্রসঙ্গ কাঠামো। |
ফাংশন | |
---|---|
otTcpCircularSendBufferDeinitialize ( otTcpCircularSendBuffer *aSendBuffer) | একটি টিসিপি সার্কুলার সেন্ড বাফার ডিইনিশিয়ালাইজ করে, যদি সংযুক্ত থাকে তাহলে এটিকে বিচ্ছিন্ন করে। |
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-এ পাস করার জন্য নন-ব্লকিং কলব্যাক পাঠান। |
কাঠামো | |
---|---|
otTcpCircularSendBuffer | একটি TCP এন্ডপয়েন্টের সাথে ব্যবহারের জন্য একটি সার্কুলার সেন্ড বাফারের প্রতিনিধিত্ব করে। |
otTcpEndpointAndCircularSendBuffer | mbedtls_ssl_set_bio-এর সাথে ব্যবহার করার জন্য প্রসঙ্গ কাঠামো। |
গণনা
বেনামী enum
anonymous enum
otTcpCircularSendBufferWrite
এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে।
Typedefs
otTcpCircularSendBuffer
struct otTcpCircularSendBuffer otTcpCircularSendBuffer
একটি TCP এন্ডপয়েন্টের সাথে ব্যবহারের জন্য একটি সার্কুলার সেন্ড বাফারের প্রতিনিধিত্ব করে।
একটি সার্কুলার সেন্ড বাফার ব্যবহার করা ঐচ্ছিক। সরাসরি otLinkedBuffers পরিচালনা করে ডেটা পাঠাতে অ্যাপ্লিকেশনগুলি একটি TCP এন্ডপয়েন্ট ব্যবহার করতে পারে। যাইহোক, কিছু অ্যাপ্লিকেশন একটি বৃত্তাকার পাঠান বাফার আছে এটি আরো সুবিধাজনক মনে হতে পারে; এই ধরনের অ্যাপ্লিকেশনগুলি otTcpCircularSendBufferWrite() কে একটি TCP এন্ডপয়েন্টে একটি সার্কুলার সেন্ড বাফার "সংযুক্ত" করতে কল করতে পারে এবং অন্তর্নিহিত otLinkedBuffers পরিচালনা করতে সার্কুলার সেন্ড বাফারের উপর নির্ভর করে সেই TCP এন্ডপয়েন্টে ডেটা পাঠাতে পারে।
otTcpCircularSendBuffer একটি otTcpEndpoint দ্বারা প্রদত্ত otLinkedBuffer-ভিত্তিক API-এর উপরে প্রয়োগ করা হয়েছে। একবার একটি otTcpEndpoint এর সাথে সংযুক্ত হলে, একটি otTcpCircularSendBuffer সংযোগের জন্য otLinkedBuffers পরিচালনার সমস্ত কাজ সম্পাদন করে। এর মানে হল, একবার একটি otTcpCircularSendBuffer একটি otTcpEndpoint- এর সাথে সংযুক্ত হয়ে গেলে, অ্যাপ্লিকেশনটিকে সেই otTcpEndpoint- এ otTcpSendByReference() বা otTcpSendByExtension() কল করা উচিত নয়। পরিবর্তে, অ্যাপ্লিকেশনটি পাঠাতে বাফারে ডেটা যোগ করতে otTcpCircularSendBufferWrite() ব্যবহার করা উচিত।
otTcpForwardProgress() কলব্যাক হল সার্কুলার সেন্ড বাফারে স্পেস পাওয়া গেলে ব্যবহারকারীদের শেখার জন্য উদ্দিষ্ট উপায়। একটি otTcpEndpoint যেখানে একটি otTcpCircularSendBuffer সংযুক্ত আছে, অ্যাপ্লিকেশনটিকে অবশ্যই একটি otTcpForwardProgress() কলব্যাক ইনস্টল করতে হবে এবং কলব্যাক ফাংশনের শুরুতে সংযুক্ত otTcpCircularSendBuffer- এ otTcpCircularSendBufferHandleForwardProgress() কল করতে হবে৷ এটি সুপারিশ করা হয় যে ব্যবহারকারী একটি otTcpSendDone() কলব্যাক ইনস্টল করবেন না, কারণ otLinkedBuffers-এর সমস্ত ব্যবস্থাপনা সার্কুলার সেন্ড বাফার দ্বারা পরিচালিত হয়।
অ্যাপ্লিকেশনটি সরাসরি এই কাঠামোর ক্ষেত্রগুলি পরিদর্শন করা উচিত নয়; এটি শুধুমাত্র TCP সার্কুলার সেন্ড বাফার API ফাংশনের মাধ্যমে এটির সাথে ইন্টারঅ্যাক্ট করবে যার স্বাক্ষর এই ফাইলে দেওয়া আছে।
otTcpEndpointAndCircularSendBuffer
struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer
mbedtls_ssl_set_bio-এর সাথে ব্যবহার করার জন্য প্রসঙ্গ কাঠামো।
ফাংশন
otTcpCircularSendBufferDeinitialize
otError otTcpCircularSendBufferDeinitialize( otTcpCircularSendBuffer *aSendBuffer )
একটি টিসিপি সার্কুলার সেন্ড বাফার ডিইনিশিয়ালাইজ করে, যদি সংযুক্ত থাকে তাহলে এটিকে বিচ্ছিন্ন করে।
TCP সার্কুলার সেন্ড বাফার খালি না থাকলে, এই অপারেশন ব্যর্থ হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpCircularSendBufferForceDiscardAll
void otTcpCircularSendBufferForceDiscardAll( otTcpCircularSendBuffer *aSendBuffer )
সার্কুলার সেন্ড বাফারের সমস্ত ডেটা জোরপূর্বক বাতিল করে।
যখন একটি TCP সংযোগ অপ্রত্যাশিতভাবে বন্ধ হয়ে যায় (যেমন, যদি অ্যাপ্লিকেশনটি otTcpEndpointAbort() কল করে বা otTcpConnectionLost() কলব্যাকের মাধ্যমে একটি রিসেট সংযোগ সম্পর্কে অবহিত করা হয় তখন অ্যাপ্লিকেশনটি এই ফাংশনটিকে কল করবে বলে আশা করা হয়।
টিসিপি এন্ডপয়েন্টের সাথে সংযুক্ত একটি খালি TCP সার্কুলার সেন্ড বাফারে এই ফাংশনটিকে কল করার ফলে অনির্ধারিত আচরণ হয়।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
otTcpCircularSendBufferGetFreeSpace
size_t otTcpCircularSendBufferGetFreeSpace( const otTcpCircularSendBuffer *aSendBuffer )
TCP সার্কুলার সেন্ড বাফারে ফাঁকা স্থানের পরিমাণ ফেরত দেয়।
এই অপারেশন সবসময় সফল হবে.
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | পাঠান বাফারে ফাঁকা স্থানের পরিমাণ। |
otTcpCircularSendBufferHandleForwardProgress
void otTcpCircularSendBufferHandleForwardProgress( otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer )
otTcpForwardProgress কলব্যাকে সার্কুলার-সেন্ড-বাফার-নির্দিষ্ট হ্যান্ডলিং সম্পাদন করে।
অ্যাপ্লিকেশনটি otTcpEndpoint- এ একটি otTcpForwardProgress() কলব্যাক ইনস্টল করবে এবং সার্কুলার-সেন্ড-বাফার-নির্দিষ্ট প্রক্রিয়াকরণের জন্য কলব্যাক ফাংশনের শুরুতে এই ফাংশনটিকে কল করবে বলে আশা করা হচ্ছে।
কলব্যাক ফাংশনে, অ্যাপ্লিকেশনটি otTcpCircularSendBufferFreeSpace() কল করে সার্কুলার সেন্ড বাফারে ফাঁকা স্থানের পরিমাণ নির্ধারণ করতে পারে, অথবা সেন্ড বাফারের ক্ষমতার সাথে aInSendBuffer
তুলনা করে, যা ব্যবহারকারী দ্বারা otTcpCircularSendBufferInitialize() কল করার সময় বেছে নেওয়া হয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
otTcpCircularSendBufferInitialize
void otTcpCircularSendBufferInitialize( otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity )
একটি TCP সার্কুলার পাঠান বাফার শুরু করে।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
otTcpCircularSendBufferWrite
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
সাথে যুক্ত করতে হবে৷
একটি টিসিপি সার্কুলার সেন্ড বাফার এবং একটি টিসিপি এন্ডপয়েন্ট "বিচ্ছিন্ন" করার একমাত্র উপায় হল সেন্ড বাফার সম্পূর্ণ খালি হওয়ার জন্য অপেক্ষা করা। এটি দুটি উপায়ে ঘটতে পারে: (1) প্রেরণ বাফারের সমস্ত ডেটা TCP প্রোটোকল অপারেশনের স্বাভাবিক কোর্সে পাঠানো এবং স্বীকার করা হয়, বা (2) সংযোগটি বন্ধ হয়ে যায়।
প্রস্তাবিত ব্যবহারের প্যাটার্ন হল একটি টিসিপি এন্ডপয়েন্ট সহ একটি একক 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 API রেফারেন্স বিষয়গুলি উৎস কোড থেকে উদ্ভূত হয়, যা GitHub- এ উপলব্ধ। আরও তথ্যের জন্য, বা আমাদের ডকুমেন্টেশনে অবদান রাখতে, সম্পদ দেখুন।