TCP বিমূর্ততা

এই মডিউলটি বেস TCP API-এর উপরে সহজে ব্যবহারযোগ্য বিমূর্ততা অন্তর্ভুক্ত করে।

সারসংক্ষেপ

গণনা

anonymous enum enum
otTcpCircularSendBufferWrite এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে।

Typedefs

otTcpCircularSendBuffer typedef
একটি 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 সার্কুলার সেন্ড বাফার খালি না থাকলে, এই অপারেশন ব্যর্থ হবে।

বিস্তারিত
পরামিতি
[in] aSendBuffer
টিসিপি সার্কুলার ডিনিটিয়ালাইজ করার জন্য বাফার পাঠায়।
রিটার্ন মান
OT_ERROR_NONE
TCP সার্কুলার সেন্ড বাফার সফলভাবে ডিইনিশিয়ালাইজ করুন।
OT_ERROR_BUSY
সার্কুলার বাফারে ডেটা থাকে এবং ডিনিটিয়ালাইজ করা যায় না।

otTcpCircularSendBufferForceDiscardAll

void otTcpCircularSendBufferForceDiscardAll(
  otTcpCircularSendBuffer *aSendBuffer
)

সার্কুলার সেন্ড বাফারের সমস্ত ডেটা জোরপূর্বক বাতিল করে।

যখন একটি TCP সংযোগ অপ্রত্যাশিতভাবে বন্ধ হয়ে যায় (যেমন, যদি অ্যাপ্লিকেশনটি otTcpEndpointAbort() কল করে বা otTcpConnectionLost() কলব্যাকের মাধ্যমে একটি রিসেট সংযোগ সম্পর্কে অবহিত করা হয় তখন অ্যাপ্লিকেশনটি এই ফাংশনটিকে কল করবে বলে আশা করা হয়।

টিসিপি এন্ডপয়েন্টের সাথে সংযুক্ত একটি খালি TCP সার্কুলার সেন্ড বাফারে এই ফাংশনটিকে কল করার ফলে অনির্ধারিত আচরণ হয়।

বিস্তারিত
পরামিতি
[in] aSendBuffer
TCP সার্কুলার সেন্ড বাফার যার ডেটা বাতিল করতে হবে।

otTcpCircularSendBufferGetFreeSpace

size_t otTcpCircularSendBufferGetFreeSpace(
  const otTcpCircularSendBuffer *aSendBuffer
)

TCP সার্কুলার সেন্ড বাফারে ফাঁকা স্থানের পরিমাণ ফেরত দেয়।

এই অপারেশন সবসময় সফল হবে.

বিস্তারিত
পরামিতি
[in] aSendBuffer
টিসিপি সার্কুলার সেন্ড বাফারের একটি পয়েন্টার যার পরিমাণ ফাঁকা স্থান ফেরত দিতে হবে।
রিটার্নস
পাঠান বাফারে ফাঁকা স্থানের পরিমাণ।

otTcpCircularSendBufferHandleForwardProgress

void otTcpCircularSendBufferHandleForwardProgress(
  otTcpCircularSendBuffer *aSendBuffer,
  size_t aInSendBuffer
)

otTcpForwardProgress কলব্যাকে সার্কুলার-সেন্ড-বাফার-নির্দিষ্ট হ্যান্ডলিং সম্পাদন করে।

অ্যাপ্লিকেশনটি otTcpEndpoint- এ একটি otTcpForwardProgress() কলব্যাক ইনস্টল করবে এবং সার্কুলার-সেন্ড-বাফার-নির্দিষ্ট প্রক্রিয়াকরণের জন্য কলব্যাক ফাংশনের শুরুতে এই ফাংশনটিকে কল করবে বলে আশা করা হচ্ছে।

কলব্যাক ফাংশনে, অ্যাপ্লিকেশনটি otTcpCircularSendBufferFreeSpace() কল করে সার্কুলার সেন্ড বাফারে ফাঁকা স্থানের পরিমাণ নির্ধারণ করতে পারে, অথবা সেন্ড বাফারের ক্ষমতার সাথে aInSendBuffer তুলনা করে, যা ব্যবহারকারী দ্বারা otTcpCircularSendBufferInitialize() কল করার সময় বেছে নেওয়া হয়।

বিস্তারিত
পরামিতি
[in] aSendBuffer
TCP সার্কুলার সেন্ড বাফারের একটি পয়েন্টার এন্ডপয়েন্টের জন্য যার জন্য otTcpForwardProgress() আহ্বান করা হয়েছিল।
[in] aInSendBuffer
aInSendBuffer এর মান otTcpForwardProgress() কলব্যাকে পাঠানো হয়েছে।

otTcpCircularSendBufferInitialize

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

একটি TCP সার্কুলার পাঠান বাফার শুরু করে।

বিস্তারিত
পরামিতি
[in] aSendBuffer
টিসিপি সার্কুলার সেন্ড বাফার ইনিশিয়ালাইজ করার জন্য একটি পয়েন্টার।
[in] aDataBuffer
TCP সার্কুলার সেন্ড বাফারে ডেটা সঞ্চয় করার জন্য মেমরির একটি পয়েন্টার।
[in] aCapacity
TCP সার্কুলার সেন্ড বাফারের ক্ষমতা, বাইটে, যা aDataBuffer দ্বারা নির্দেশিত মেমরির আকারের সমান হতে হবে।

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 সার্কুলার সেন্ড বাফার একসাথে ব্যবহার করে উপরে বর্ণিত সমস্যাগুলিকে পাশ কাটিয়ে যায়।

সার্কুলার সেন্ড বাফার ধারণক্ষমতায় পৌঁছালে, প্রদত্ত ডেটার শুধুমাত্র একটি উপসর্গ সার্কুলার সেন্ড বাফারে কপি করা হয়।

বিস্তারিত
পরামিতি
[in] aEndpoint
TCP এন্ডপয়েন্ট যার উপর ডেটা পাঠাতে হয়।
[in] aSendBuffer
TCP সার্কুলার সেন্ড বাফার যার মধ্যে ডেটা কপি করা যায়।
[in] aData
TCP সার্কুলার সেন্ড বাফারে কপি করার জন্য ডেটার একটি পয়েন্টার।
[in] aLength
টিসিপি সার্কুলার সেন্ড বাফারে কপি করার জন্য aData দ্বারা নির্দেশিত ডেটার দৈর্ঘ্য।
[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
একটি otTcpEndpointAndCircularSendBuffer একটি পয়েন্টার।
[out] aBuf
যে বাফারে ডেটা গ্রহণ করতে হবে৷
[in] aLen
সর্বাধিক পরিমাণ ডেটা যা গ্রহণ করা যেতে পারে।
রিটার্নস
প্রাপ্ত বাইট সংখ্যা, বা একটি mbedtls ত্রুটি কোড.

otTcpMbedTlsSslSendCallback

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

mbedtls_ssl_set_bio-এ পাস করার জন্য নন-ব্লকিং কলব্যাক পাঠান।

বিস্তারিত
পরামিতি
[in] aCtx
একটি otTcpEndpointAndCircularSendBuffer একটি পয়েন্টার।
[in] aBuf
পাঠান বাফারে যোগ করার জন্য ডেটা।
[in] aLen
পাঠান বাফারে যোগ করার জন্য ডেটার পরিমাণ।
রিটার্নস
পাঠানো বাইট সংখ্যা, বা একটি mbedtls ত্রুটি কোড.

সম্পদ

OpenThread API রেফারেন্স বিষয়গুলি উৎস কোড থেকে উদ্ভূত হয়, যা GitHub- এ উপলব্ধ। আরও তথ্যের জন্য, বা আমাদের ডকুমেন্টেশনে অবদান রাখতে, সম্পদ দেখুন।