টিসিপি
এই মডিউল টিসিপি যোগাযোগ নিয়ন্ত্রণ করে এমন ফাংশন অন্তর্ভুক্ত করে।
সারসংক্ষেপ
গণনা | |
---|---|
anonymous enum | enum otTcpConnect() এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে। |
anonymous enum | enumotTcpSendByReference এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে। |
otTcpDisconnectedReason | enum |
otTcpIncomingConnectionAction { | enum ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে। |
Typedefs | |
---|---|
otLinkedBuffer | typedefstruct otLinkedBuffer TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো। |
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) | typedefvoid(* এই কলব্যাকটি নির্দেশ করে যে TCP সংযোগ এখন দ্বিমুখী যোগাযোগের জন্য প্রস্তুত৷ |
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) | typedef এই কলব্যাকটি নির্দেশ করে যে একটি ইনকামিং সংযোগ যা এই TCP শ্রোতার সাথে মেলে। |
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) | typedefvoid(* এই কলব্যাকটি নির্দেশ করে যে সংযোগটি ভেঙে গেছে এবং আর ব্যবহার করা উচিত নয়, অথবা একটি সংযোগ TIME-WAIT অবস্থায় প্রবেশ করেছে৷ |
otTcpDisconnectedReason | typedefenum otTcpDisconnectedReason |
otTcpEndpoint | typedefstruct otTcpEndpoint |
otTcpEndpointInitializeArgs | typedefstruct otTcpEndpointInitializeArgs otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpEstablished )(otTcpEndpoint *aEndpoint) | typedefvoid(* এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায় যে TCP 3-ওয়ে হ্যান্ডশেক সম্পূর্ণ হয়েছে এবং সংযোগটি এখন প্রতিষ্ঠিত হয়েছে। |
otTcpForwardProgress )(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) | typedefvoid(* সেন্ড বাফার থেকে প্রাপকের কাছে ডেটা স্থানান্তর করার ক্ষেত্রে অগ্রগতি করা হয়েছে কিনা এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায়। |
otTcpIncomingConnectionAction | typedef ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে। |
otTcpListener | typedefstruct otTcpListener |
otTcpListenerInitializeArgs | typedefstruct otTcpListenerInitializeArgs otTcpListenerInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) | typedefvoid(* এই কলব্যাকটি রিসিভ বাফার থেকে ব্যবহারের জন্য উপলব্ধ বাইটের সংখ্যা নির্দেশ করে। |
otTcpSendDone )(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) | typedefvoid(* এই কলব্যাক অ্যাপ্লিকেশনটিকে জানায় যে প্রদত্ত aData এর ডেটা সংযোগ পিয়ার দ্বারা স্বীকার করা হয়েছে এবং aData এবং এতে থাকা ডেটা অ্যাপ্লিকেশন দ্বারা পুনঃ দাবি করা যেতে পারে৷ |
ফাংশন | |
---|---|
otTcpAbort ( otTcpEndpoint *aEndpoint) | এই TCP এন্ডপয়েন্টের সাথে যুক্ত TCP সংযোগ জোর করে শেষ করে। |
otTcpBind ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName) | একটি IP ঠিকানা এবং পোর্টের সাথে TCP এন্ডপয়েন্ট আবদ্ধ করে। |
otTcpCommitReceive ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags) | টিসিপি স্ট্যাককে অবহিত করে যে অ্যাপ্লিকেশনটি রিসিভ বাফারের শুরুতে aNumBytes বাইট ডেটা প্রক্রিয়াকরণ শেষ করেছে এবং টিসিপি স্ট্যাকের রিসিভ বাফারে সেই বাইটগুলি বজায় রাখার প্রয়োজন নেই। |
otTcpConnect ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags) | এই সংযোগের জন্য দূরবর্তী হোস্ট এবং পোর্ট রেকর্ড করে। |
otTcpEndpointDeinitialize ( otTcpEndpoint *aEndpoint) | এই TCP এন্ডপয়েন্ট ডিইনিশিয়ালাইজ করে। |
otTcpEndpointGetContext ( otTcpEndpoint *aEndpoint) | void * প্রারম্ভিককরণের পরে aEndpoint সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টার প্রাপ্ত করে। |
otTcpEndpointGetInstance ( otTcpEndpoint *aEndpoint) | সূচনা করার সময় aEndpoint সাথে যুক্ত otInstance প্রাপ্ত করে। |
otTcpEndpointInitialize ( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs) | একটি TCP শেষ পয়েন্ট শুরু করে। |
otTcpGetLocalAddress (const otTcpEndpoint *aEndpoint) | const otSockAddr * একটি TCP এন্ডপয়েন্টের স্থানীয় হোস্ট এবং পোর্টে একটি পয়েন্টার পায়। |
otTcpGetPeerAddress (const otTcpEndpoint *aEndpoint) | const otSockAddr * একটি টিসিপি এন্ডপয়েন্টের পিয়ার হোস্ট এবং পোর্টে একটি পয়েন্টার পায়। |
otTcpListen ( otTcpListener *aListener, const otSockAddr *aSockName) | এই TCP শ্রোতাদের কলব্যাকগুলিকে ট্রিগার করার জন্য নির্দিষ্ট আইপি ঠিকানা এবং পোর্টের সাথে মেলে ইনকামিং TCP সংযোগের কারণ। |
otTcpListenerDeinitialize ( otTcpListener *aListener) | এই TCP শ্রোতাকে ডিনিটিয়ালাইজ করে। |
otTcpListenerGetContext ( otTcpListener *aListener) | void * সূচনা করার সময় aListener এর সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টারটি পায়। |
otTcpListenerGetInstance ( otTcpListener *aListener) | সূচনা করার পরে aListener এর সাথে যুক্ত otInstance প্রাপ্ত করে। |
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs) | একটি TCP শ্রোতা শুরু করে। |
otTcpReceiveByReference ( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer) | টিসিপি রিসিভ বাফারে বর্তমানে একটি লিঙ্কযুক্ত বাফার চেইন রেফারেন্সিং ডেটা সহ অ্যাপ্লিকেশনটি প্রদান করে। |
otTcpReceiveContiguify ( otTcpEndpoint *aEndpoint) | মেমরিতে সম্পূর্ণরূপে সংলগ্ন হতে রিসিভ বাফারকে পুনর্গঠিত করে। |
otTcpSendByExtension ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags) | নির্দিষ্ট পরিমাণ দ্বারা পাঠান বাফারে চূড়ান্ত otLinkedBuffer এর দৈর্ঘ্য প্রসারিত করে পাঠান বাফারে ডেটা যোগ করে। |
otTcpSendByReference ( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags) | সেন্ড বাফারে aBuffer দ্বারা নির্দেশিত লিঙ্কযুক্ত বাফার দ্বারা উল্লেখ করা ডেটা যোগ করে। |
otTcpSendEndOfStream ( otTcpEndpoint *aEndpoint) | কানেকশন পিয়ারকে জানায় যে এই TCP এন্ডপয়েন্ট আর ডেটা পাঠাবে না। |
otTcpStopListening ( otTcpListener *aListener) | এই TCP শ্রোতাকে ইনকামিং সংযোগের জন্য শোনা বন্ধ করে দেয়। |
কাঠামো | |
---|---|
otLinkedBuffer | TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো। |
otTcpEndpoint | একটি TCP শেষ পয়েন্ট প্রতিনিধিত্ব করে। |
otTcpEndpointInitializeArgs | otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpListener | একজন TCP শ্রোতার প্রতিনিধিত্ব করে। |
otTcpListenerInitializeArgs | otTcpListenerInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
গণনা
বেনামী enum
anonymous enum
otTcpSendByReference
এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে।
otTcpDisconnected Reason
otTcpDisconnectedReason
otTcpIncomingConnectionAction
otTcpIncomingConnectionAction
ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে।
এটি otTcpAcceptReady() কলব্যাকে ব্যবহৃত হয়।
Typedefs
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো।
একটি একক otLinkedBuffer কাঠামো mData এবং mLength এর মাধ্যমে মেমরিতে বাইটের একটি অ্যারে উল্লেখ করে। mNext ক্ষেত্রটি otLinkedBuffer কাঠামোর একটি চেইন তৈরি করতে ব্যবহৃত হয়।
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
এই কলব্যাকটি নির্দেশ করে যে TCP সংযোগ এখন দ্বিমুখী যোগাযোগের জন্য প্রস্তুত৷
TCP ফাস্ট ওপেনের ক্ষেত্রে, এটি TCP কানেকশন হ্যান্ডশেক সম্পূর্ণ হওয়ার আগে হতে পারে। অ্যাপ্লিকেশনটি সংযোগটি গ্রহণকারী TCP শ্রোতার জন্য এবং যে TCP এন্ডপয়েন্টে এটি গ্রহণ করা হয়েছিল উভয়ের জন্য প্রসঙ্গ পয়েন্টার সরবরাহ করা হয়েছে। প্রদত্ত প্রসঙ্গটি টিসিপি শ্রোতার সাথে যুক্ত।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
এই কলব্যাকটি নির্দেশ করে যে একটি ইনকামিং সংযোগ যা এই TCP শ্রোতার সাথে মেলে।
আগত সংযোগ গ্রহণ করার জন্য আবেদনের জন্য সাধারণ প্রতিক্রিয়া। এটি otTcpEndpoint- এ একটি পয়েন্টার সহ aAcceptInto
পপুলেট করে যাতে ইনকামিং সংযোগ গ্রহণ করা যায়। এই otTcpEndpoint ইতিমধ্যেই otTcpEndpointInitialize() ব্যবহার করে আরম্ভ করা আবশ্যক। তারপর, অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT প্রদান করে৷
বিকল্পভাবে, আবেদনটি আগত সংযোগ গ্রহণ করতে অস্বীকার করতে পারে। এটি করার জন্য অ্যাপ্লিকেশনটির জন্য দুটি উপায় রয়েছে। প্রথমত, যদি অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_DEFER ফেরত দেয়, তাহলে OpenThread নীরবে সংযোগ স্থাপনের অনুরোধ উপেক্ষা করে; সংযোগ পিয়ার সম্ভবত অনুরোধটি পুনরায় প্রেরণ করবে, যে সময়ে আবার কলব্যাক কল করা হবে। এটি মূল্যবান যদি বর্তমানে সংযোগ গ্রহণ করার জন্য সংস্থানগুলি উপলব্ধ না হয়, তবে সংযোগ পিয়ার তার সংযোগ স্থাপনের প্রচেষ্টা পুনরায় প্রেরণ করলে সেগুলি উপলব্ধ হতে পারে। দ্বিতীয়ত, যদি অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE ফেরত দেয়, তাহলে OpenThread সেই হোস্টকে একটি "সংযোগ প্রত্যাখ্যান" বার্তা পাঠায় যেটি একটি সংযোগ স্থাপনের চেষ্টা করেছে। যদি অ্যাপ্লিকেশনটি ইনকামিং সংযোগ প্রত্যাখ্যান করে, তাহলে এটি aAcceptInto
পপুলেট করার প্রয়োজন নেই।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্নস | ইনকামিং সংযোগ কিভাবে পরিচালনা করতে হয় তার বর্ণনা। |
otTcp সংযোগ বিচ্ছিন্ন
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
এই কলব্যাকটি নির্দেশ করে যে সংযোগটি ভেঙে গেছে এবং আর ব্যবহার করা উচিত নয়, অথবা একটি সংযোগ TIME-WAIT অবস্থায় প্রবেশ করেছে৷
এটি ঘটতে পারে যদি একটি সংযোগ স্থাপনের প্রচেষ্টা ( otTcpConnect() কল করার মাধ্যমে শুরু করা হয়) ব্যর্থ হয়, বা তার পরে যেকোন বিন্দু (যেমন, সংযোগের সময় শেষ হলে বা সংযোগ পিয়ার থেকে একটি RST সেগমেন্ট পাওয়া যায়)। একবার এই কলব্যাক ফায়ার হয়ে গেলে, অ্যাপ্লিকেশনটি এই সংযোগের জন্য প্রদত্ত সমস্ত সংস্থান (অর্থাৎ, যে কোনও otLinkedBuffers
এবং মেমরি তারা উল্লেখ করেছে, কিন্তু TCP এন্ডপয়েন্ট নিজেই নয় বা রিসিভ বাফারগুলির জন্য স্থান নয়) পুনরুদ্ধার করা যেতে পারে। TIME-WAIT স্থিতিতে প্রবেশের একটি সংযোগের ক্ষেত্রে, এই কলব্যাকটি দুবার বলা হয়, একবার TIME-WAIT অবস্থায় প্রবেশ করার পরে (OT_TCP_DISCONNECTED_REASON_TIME_WAIT সহ, এবং আবার যখন TIME-WAIT অবস্থার মেয়াদ শেষ হয় (OT_TCP_DISCONNECTED_REASON_REASON_NO এর সাথে)।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
otTcpDisconnected Reason
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে।
otTcp প্রতিষ্ঠিত
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায় যে TCP 3-ওয়ে হ্যান্ডশেক সম্পূর্ণ হয়েছে এবং সংযোগটি এখন প্রতিষ্ঠিত হয়েছে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
সেন্ড বাফার থেকে প্রাপকের কাছে ডেটা স্থানান্তর করার ক্ষেত্রে অগ্রগতি করা হয়েছে কিনা এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায়।
সঠিক TCP অপারেশনের জন্য এই কলব্যাকের প্রয়োজন নেই। টিসিপি স্ট্যাক ব্যবহার করা হয়ে গেলে বেশিরভাগ অ্যাপ্লিকেশন লিঙ্কযুক্ত বাফারগুলি পুনরুদ্ধার করতে শুধুমাত্র otTcpSendDone() কলব্যাকের উপর নির্ভর করতে পারে। এই কলব্যাকের উদ্দেশ্য হল অ্যাডভান্সড অ্যাপ্লিকেশানগুলিকে সমর্থন করা যা সংযোগ পিয়ারের কাছে ডেটা স্থানান্তর করার ক্ষেত্রে সংযোগটি কীভাবে অগ্রগতি করছে সে সম্পর্কে সূক্ষ্ম তথ্য থেকে উপকৃত হয়৷
এই কলব্যাকের ক্রিয়াকলাপটি TCP-এর প্রেরণ বাফারের সাথে ঘনিষ্ঠভাবে আবদ্ধ। পাঠান বাফার দুটি অঞ্চল আছে বোঝা যায়. প্রথমত, সেন্ড বাফারের মাথায় (সামনে) "ইন-ফ্লাইট" অঞ্চল রয়েছে। এটি প্রাপকের কাছে পাঠানো ডেটার সাথে মিলে যায়, কিন্তু এখনও স্বীকার করা হয়নি। দ্বিতীয়ত, "ব্যাকলগ" অঞ্চল রয়েছে, যা পাঠান বাফারের সমস্ত ডেটা নিয়ে গঠিত যা "ইন-ফ্লাইট" অঞ্চলে নেই। "ব্যাকলগ" অঞ্চলটি ডেটার সাথে সম্পর্কিত যা পাঠানোর জন্য সারিবদ্ধ, কিন্তু এখনও পাঠানো হয়নি৷
দুই ধরনের ইভেন্টের প্রতিক্রিয়া হিসেবে কলব্যাক আহ্বান করা হয়। প্রথমত, সেন্ড বাফারের "ইন-ফ্লাইট" অঞ্চল সঙ্কুচিত হতে পারে (যেমন, যখন প্রাপক আমাদের আগে পাঠানো ডেটা স্বীকার করে)। দ্বিতীয়ত, পাঠান বাফারের "ব্যাকলগ" অঞ্চল সঙ্কুচিত হতে পারে (যেমন, নতুন ডেটা পাঠানো হয়েছিল)। এই দুটি অবস্থা প্রায়ই একই সময়ে ঘটতে পারে, সংযোগ পিয়ার থেকে একটি ACK সেগমেন্টের প্রতিক্রিয়ায়, যে কারণে তারা একটি একক কলব্যাকে একত্রিত হয়।
TCP স্ট্যাক শুধুমাত্র পাঠান বাফারের লেজে aInSendBuffer
বাইট ব্যবহার করে; যখন aInSendBuffer
একটি পরিমাণ x দ্বারা হ্রাস পায়, এর অর্থ হল যে x অতিরিক্ত বাইটগুলি যা পূর্বে প্রেরণ বাফারের প্রধান ছিল সেগুলি আর প্রেরণ বাফারের অংশ নয় এবং এখন অ্যাপ্লিকেশন দ্বারা পুনরায় দাবি করা যেতে পারে (অর্থাৎ, ওভাররাইট)। মনে রাখবেন যে otLinkedBuffer গঠনটি শুধুমাত্র একবারই পুনরুদ্ধার করা যেতে পারে সমস্ত বাইট যে এটির রেফারেন্স পাঠানো বাফারের অংশ নয়।
এই কলব্যাকটি নিম্নোক্ত অর্থে otTcpSendDone() সাবসুম করে: প্রতিটি লিঙ্কযুক্ত বাফারে কতগুলি বাইট রয়েছে তার সাথে aInSendBuffer
তুলনা করে অ্যাপ্লিকেশনগুলি নির্ধারণ করতে পারে কখন লিঙ্ক করা বাফারগুলি পুনরায় দাবি করা যেতে পারে৷ যাইহোক, আমরা আশা করি otTcpSendDone() , যা সরাসরি বোঝায় যে কোন otLinkedBuffers পুনরায় দাবি করা যেতে পারে, ব্যবহার করা আরও সহজ। যদি উভয় কলব্যাক নিবন্ধিত হয় এবং একই ইভেন্ট দ্বারা ট্রিগার করা হয় (উদাহরণস্বরূপ, একই ACK সেগমেন্ট প্রাপ্ত), তাহলে otTcpSendDone() কলব্যাকটি প্রথমে ট্রিগার হবে, তারপরে এই কলব্যাকটি।
অতিরিক্তভাবে, এই কলব্যাকটি aBacklog
প্রদান করে, যা নির্দেশ করে পাঠায় বাফারে কত বাইট ডেটা এখনও ফ্লাইটে নেই। যে অ্যাপ্লিকেশনগুলি শুধুমাত্র পাঠান বাফারে ডেটা যোগ করতে চায় যখন একটি আশ্বাস আছে যে এটি শীঘ্রই পাঠানো হবে, তখনই ডেটা পাঠানো বাঞ্ছনীয় হতে পারে যখন aBacklog
উপযুক্তভাবে ছোট (0 বা 0 এর কাছাকাছি)। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন aBacklog
ব্যবহার করতে পারে যাতে এটি ডেটার ব্যাকলগ তৈরি এড়াতে ডেটা ড্রপ বা একত্রিত করে সারি তৈরিতে প্রতিক্রিয়া জানাতে পারে।
otTcpSendByReference() বা otTcpSendByExtension() তে একটি ধনাত্মক সংখ্যক বাইট সহ কল করার পর, otTcpForwardProgress() কলব্যাক কল করার নিশ্চয়তা দেওয়া হয়, যাতে সেন্ড বাফারে যোগ করা বাইটগুলি কখন পাঠানো হয় তা নির্দেশ করে৷ otTcpForwardProgress() এ কলটি পাঠানোর বাফারে বাইট যোগ করার পরপরই করা হতে পারে (যদি সেই বাইটগুলির মধ্যে কিছু অবিলম্বে পাঠানো হয়, ব্যাকলগ হ্রাস করে), অথবা ভবিষ্যতে কিছু সময় (একবার সংযোগটি কিছু বা সমস্তটি পাঠালে) তথ্য, ব্যাকলগ হ্রাস)। "অবিলম্বে" দ্বারা আমরা বলতে চাই যে কলব্যাক অবিলম্বে একটি টাস্কলেটে কার্যকর করার জন্য নির্ধারিত হয়েছে; পুনরায় প্রবেশ-সম্পর্কিত জটিলতা এড়াতে, otTcpForwardProgress() কলব্যাক সরাসরি otTcpSendByReference() বা otTcpSendByExtension() ফাংশন থেকে কল করা হয় না।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
otTcpIncomingConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে।
এটি otTcpAcceptReady() কলব্যাকে ব্যবহৃত হয়।
otTcpListener
struct otTcpListener otTcpListener
otTcpListenerInitializeArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
otTcpListenerInitialize() ফাংশনের আর্গুমেন্ট রয়েছে।
otTcpReceive উপলব্ধ
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
এই কলব্যাকটি রিসিভ বাফার থেকে ব্যবহারের জন্য উপলব্ধ বাইটের সংখ্যা নির্দেশ করে।
যখনই রিসিভ বাফারে বাইট যোগ করা হয় এবং যখন স্ট্রীম শেষ হয় তখন এটিকে বলা হয়। যদি স্ট্রীম শেষ হয়ে যায় (অর্থাৎ, যদি আর কোন ডেটা পড়ার জন্য উপলব্ধ না হয় কারণ সংযোগ পিয়ার লেখার জন্য তাদের সংযোগের শেষ বন্ধ করে দিয়েছে), তাহলে aEndOfStream
সত্য। অবশেষে, aBytesRemaining
নির্দেশ করে যে প্রাপ্ত বাফারে অতিরিক্ত ডেটা ধারণ করার জন্য কতটা ক্ষমতা বাকি আছে।
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
এই কলব্যাক অ্যাপ্লিকেশনটিকে জানায় যে প্রদত্ত aData
এর ডেটা সংযোগ পিয়ার দ্বারা স্বীকার করা হয়েছে এবং aData
এবং এতে থাকা ডেটা অ্যাপ্লিকেশন দ্বারা পুনঃ দাবি করা যেতে পারে৷
aData
otTcpSendByExtension() এর মাধ্যমে প্রভাবিত যেকোন এক্সটেনশনগুলি সহ, otTcpSendByReference() এর মাধ্যমে TCP-এ পাস করা ব্যক্তির সাথে অভিন্ন হওয়ার নিশ্চয়তা রয়েছে৷
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
ফাংশন
otTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
এই TCP এন্ডপয়েন্টের সাথে যুক্ত TCP সংযোগ জোর করে শেষ করে।
এটি অবিলম্বে টিসিপি এন্ডপয়েন্টকে অন্য সংযোগের জন্য ব্যবহারের জন্য বিনামূল্যে করে দেয় এবং প্রেরণ এবং গ্রহণ বাফারগুলি খালি করে, otTcpSendByReference() এবং otTcpSendByExtension() কলে অ্যাপ্লিকেশন দ্বারা প্রদত্ত যেকোন ডেটার মালিকানা স্থানান্তর করে৷ টিসিপি এন্ডপয়েন্টের কলব্যাক এবং রিসিভ বাফারের মেমরি টিসিপি এন্ডপয়েন্টের সাথে যুক্ত থাকে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
একটি IP ঠিকানা এবং পোর্টের সাথে TCP এন্ডপয়েন্ট আবদ্ধ করে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpCommitReceive
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
টিসিপি স্ট্যাককে অবহিত করে যে অ্যাপ্লিকেশনটি রিসিভ বাফারের শুরুতে aNumBytes
বাইট ডেটা প্রক্রিয়াকরণ শেষ করেছে এবং টিসিপি স্ট্যাকের রিসিভ বাফারে সেই বাইটগুলি বজায় রাখার প্রয়োজন নেই।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
এই সংযোগের জন্য দূরবর্তী হোস্ট এবং পোর্ট রেকর্ড করে।
aFlags
ব্যবহার করে TCP ফাস্ট ওপেন সক্রিয় বা অক্ষম করতে হবে। যদি এটি নিষ্ক্রিয় করা হয়, তাহলে TCP সংযোগ স্থাপন হ্যান্ডশেক অবিলম্বে শুরু হয়। যদি এটি সক্ষম করা থাকে, তাহলে এই ফাংশনটি কেবল দূরবর্তী হোস্ট এবং পোর্ট রেকর্ড করে এবং TCP সংযোগ স্থাপন হ্যান্ডশেক শুধুমাত্র প্রথম কলে ঘটবে otTcpSendByReference()
।
যদি TCP ফাস্ট ওপেন অক্ষম করা থাকে, তাহলে কলকারীকে অবশ্যই otTcpEstablished
কলব্যাকের জন্য অপেক্ষা করতে হবে যা নির্দেশ করে যে TCP সংযোগ স্থাপন হ্যান্ডশেক করা হয়েছে ডেটা পাঠানো শুরু করার আগে যেমন, otTcpSendByReference()
কল করে।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpEndpointDeinitialize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
এই TCP এন্ডপয়েন্ট ডিইনিশিয়ালাইজ করে।
এর মানে হল যে OpenThread আর এই TCP এন্ডপয়েন্টের ট্র্যাক রাখে না এবং এই TCP এন্ডপয়েন্টের জন্য অভ্যন্তরীণভাবে বরাদ্দ করা সমস্ত সংস্থান ডিলকেট করে। অ্যাপ্লিকেশনটি টিসিপি এন্ডপয়েন্টকে উপযুক্ত মনে করে মেমরিকে ব্যাক করে পুনরায় ব্যবহার করতে পারে।
যদি এটি একটি লাইভ TCP সংযোগের সাথে মিলে যায়, সংযোগটি অপ্রত্যাশিতভাবে বন্ধ করা হয় (যেমন otTcpAbort() )। এই টিসিপি এন্ডপয়েন্টের জন্য অ্যাপ্লিকেশনটি সরবরাহ করেছে এমন সমস্ত সংস্থান (সেন্ড বাফারের জন্য লিঙ্কযুক্ত বাফার, রিসিভ বাফারের জন্য মেমরি, aEndpoint
গঠন নিজেই, ইত্যাদি) অবিলম্বে অ্যাপ্লিকেশনে ফেরত দেওয়া হয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
প্রারম্ভিককরণের পরে aEndpoint
সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টার প্রাপ্ত করে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aEndpoint সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টার। |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
সূচনা করার সময় aEndpoint
সাথে যুক্ত otInstance প্রাপ্ত করে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aEndpoint এর সাথে যুক্ত otInstance পয়েন্টার। |
otTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
একটি TCP শেষ পয়েন্ট শুরু করে।
এই ফাংশনটিকে কল করার ফলে OpenThread টিসিপি এন্ডপয়েন্টের ট্র্যাক রাখে এবং aEndpoint
ভিতরে TCP ডেটা সংরক্ষণ ও পুনরুদ্ধার করে। অ্যাপ্লিকেশনটি aEndpoint
ক্ষেত্রগুলিতে সরাসরি অ্যাক্সেস বা পরিবর্তন করা থেকে বিরত থাকা উচিত। যদি অ্যাপ্লিকেশনটির মেমরি ব্যাকিং aEndpoint
পুনরুদ্ধার করতে হয়, তাহলে এটিকে কল করা উচিত otTcpEndpointDeinitialize() ।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
একটি TCP এন্ডপয়েন্টের স্থানীয় হোস্ট এবং পোর্টে একটি পয়েন্টার পায়।
হোস্ট এবং পোর্টের বিষয়বস্তু বাসি হতে পারে যদি এই সকেটটি সংযুক্ত অবস্থায় না থাকে এবং এটি শেষবার সংযোগ বিচ্ছিন্ন হওয়ার পরে আবদ্ধ না থাকে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aEndpoint স্থানীয় হোস্ট এবং পোর্ট। |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
একটি টিসিপি এন্ডপয়েন্টের পিয়ার হোস্ট এবং পোর্টে একটি পয়েন্টার পায়।
হোস্ট এবং পোর্টের বিষয়বস্তু বাসি হতে পারে যদি এই সকেটটি সংযুক্ত অবস্থায় না থাকে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aEndpoint সংযোগ পিয়ারের হোস্ট এবং পোর্ট। |
otTcp শুনুন
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
এই TCP শ্রোতাদের কলব্যাকগুলিকে ট্রিগার করার জন্য নির্দিষ্ট আইপি ঠিকানা এবং পোর্টের সাথে মেলে ইনকামিং TCP সংযোগের কারণ।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpListenerDeinitialize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
এই TCP শ্রোতাকে ডিনিটিয়ালাইজ করে।
এর মানে হল যে OpenThread আর এই TCP শ্রোতার ট্র্যাক রাখে না এবং এই TCP শ্রোতার জন্য অভ্যন্তরীণভাবে বরাদ্দ করা সমস্ত সংস্থান ডিলকেট করে। অ্যাপ্লিকেশনটি টিসিপি শ্রোতাকে উপযুক্ত মনে করে মেমরিকে সমর্থন করে পুনরায় ব্যবহার করতে পারে।
যদি TCP শ্রোতা বর্তমানে শুনছেন, এটি শোনা বন্ধ করে দেয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
সূচনা করার সময় aListener
এর সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টারটি পায়।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aListener এর সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টার। |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
সূচনা করার পরে aListener
এর সাথে যুক্ত otInstance প্রাপ্ত করে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aListener এর সাথে যুক্ত otInstance পয়েন্টার। |
otTcpListenerInitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
একটি TCP শ্রোতা শুরু করে।
এই ফাংশনটি কল করার ফলে OpenThread টিসিপি শ্রোতার ট্র্যাক রাখতে এবং aListener
ভিতরে TCP ডেটা সংরক্ষণ ও পুনরুদ্ধার করতে পারে। aListener
ক্ষেত্রগুলিতে সরাসরি অ্যাক্সেস বা পরিবর্তন করা থেকে অ্যাপ্লিকেশনটিকে বিরত থাকতে হবে। যদি অ্যাপ্লিকেশনটির মেমরি ব্যাকিং aListener
পুনরুদ্ধার করতে হয় তবে এটিকে কল করা উচিত otTcpListenerDeinitialize() ।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpReceiveByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
টিসিপি রিসিভ বাফারে বর্তমানে একটি লিঙ্কযুক্ত বাফার চেইন রেফারেন্সিং ডেটা সহ অ্যাপ্লিকেশনটি প্রদান করে।
লিঙ্ক করা বাফার চেইনটি বৈধ থাকে যতক্ষণ না "রিসিভ রেডি" কলব্যাকটি পরবর্তীতে আহ্বান করা হয়, অথবা otTcpReceiveContiguify() বা otTcpCommitReceive() কে পরবর্তী কল না করা পর্যন্ত।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpReceiveContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
মেমরিতে সম্পূর্ণরূপে সংলগ্ন হতে রিসিভ বাফারকে পুনর্গঠিত করে।
এটি ঐচ্ছিক; একটি অ্যাপ্লিকেশন সহজভাবে otTcpReceiveByReference
কল করে প্রাপ্ত লিঙ্কযুক্ত বাফার চেইন অতিক্রম করতে পারে। কিছু অ্যাপ্লিকেশন তাদের ডেটা প্রসেসিংকে সহজ করার জন্য রিসিভ বাফারটিকে সংলগ্ন করার জন্য এই ফাংশনটিকে কল করতে পারে, তবে এটি রিসিভ বাফারে ডেটা পুনর্গঠন করার জন্য CPU সময় ব্যয় করে আসে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
নির্দিষ্ট পরিমাণ দ্বারা পাঠান বাফারে চূড়ান্ত otLinkedBuffer এর দৈর্ঘ্য প্রসারিত করে পাঠান বাফারে ডেটা যোগ করে।
যদি পাঠান বাফার খালি থাকে, তাহলে অপারেশন ব্যর্থ হয়।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
সেন্ড বাফারে aBuffer
দ্বারা নির্দেশিত লিঙ্কযুক্ত বাফার দ্বারা উল্লেখ করা ডেটা যোগ করে।
এই ফাংশনে একটি সফল কলের পরে, লিঙ্ক করা বাফার এবং এটির উল্লেখ করা ডেটা TCP স্ট্যাকের মালিকানাধীন হয়; যতক্ষণ না একটি "পাঠানো হয়েছে" কলব্যাক অ্যাপ্লিকেশনটিতে সেই বস্তুগুলির মালিকানা ফেরত না দেয় ততক্ষণ পর্যন্ত সেগুলিকে অ্যাপ্লিকেশন দ্বারা সংশোধন করা উচিত নয়৷ পাঠানোর সারিতে অন্য লিঙ্কযুক্ত বাফার যোগ করার জন্য এই ফাংশনটিকে কল করা গ্রহণযোগ্য, এমনকি যদি এই ফাংশনের পূর্ববর্তী আহ্বানের জন্য "পাঠানো হয়েছে" কলব্যাকটি এখনও চালু না হয়।
মনে রাখবেন যে aBuffer
শৃঙ্খলিত করা উচিত নয়; এর mNext ক্ষেত্রটি NULL হওয়া উচিত। যদি এই কলের ঠিক পরে অতিরিক্ত ডেটা যোগ করা হয়, তাহলে OT_TCP_SEND_MORE_TO_COME পতাকা টিসিপি বাস্তবায়নের ইঙ্গিত হিসাবে ব্যবহার করা উচিত৷
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
কানেকশন পিয়ারকে জানায় যে এই TCP এন্ডপয়েন্ট আর ডেটা পাঠাবে না।
এটি ব্যবহার করা উচিত যখন অ্যাপ্লিকেশনটিতে সংযোগ পিয়ারে পাঠানোর জন্য আর কোনো ডেটা নেই৷ এই সংযোগের জন্য, সংযোগ পিয়ারে ভবিষ্যতের পাঠের ফলে "স্ট্রিমের শেষ" অবস্থা হবে এবং এই সংযোগের শেষ পয়েন্টে ভবিষ্যতের লেখাগুলি ব্যর্থ হবে৷
"স্ট্রিমের সমাপ্তি" শর্তটি শুধুমাত্র তখনই প্রযোজ্য হয় যখন পাঠানোর জন্য TCP স্ট্যাকে পূর্বে সরবরাহ করা কোনো ডেটা সংযোগ পিয়ার দ্বারা প্রাপ্ত হয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
এই TCP শ্রোতাকে ইনকামিং সংযোগের জন্য শোনা বন্ধ করে দেয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
ম্যাক্রো
OT_TCP_ENDPOINT_TCB_NUM_PTR
OT_TCP_ENDPOINT_TCB_NUM_PTR 36
OT_TCP_ENDPOINT_TCB_SIZE_BASE
OT_TCP_ENDPOINT_TCB_SIZE_BASE 392
OT_TCP_ENDPOINT_TCB_SIZE_BASE এবং OT_TCP_ENDPOINT_TCB_NUM_POINTERS এমনভাবে বেছে নেওয়া হয়েছে যাতে otTcpEndpoint- এর mTcb ফিল্ডের আকার TCPlp-এ struct tcpcb-এর সমান।
এটি প্রয়োজনীয় কারণ mTcb ক্ষেত্রটি, যদিও তার ঘোষণায় অস্বচ্ছ, TCP বাস্তবায়নে struct tcpcb হিসাবে বিবেচিত হয়।
OT_TCP_LISTENER_TCB_NUM_PTR
OT_TCP_LISTENER_TCB_NUM_PTR 3
OT_TCP_LISTENER_TCB_SIZE_BASE
OT_TCP_LISTENER_TCB_SIZE_BASE 16
OT_TCP_LISTENER_TCB_SIZE_BASE এবং OT_TCP_LISTENER_TCB_NUM_POINTERS এমনভাবে বেছে নেওয়া হয়েছে যাতে otTcpListener- এর mTcbListener ক্ষেত্রটি TCPlp-এ struct tcpcb_listen-এর আকারের সমান।
এটি প্রয়োজনীয় কারণ mTcbListen ক্ষেত্র, যদিও তার ঘোষণায় অস্বচ্ছ, TCP বাস্তবায়নে struct tcpcb হিসাবে বিবেচিত হয়।
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
TCP সংযোগের জন্য প্রস্তাবিত বাফার আকার যা প্রায় 3টি বেতার হপ বা তার কম অতিক্রম করে।
প্ল্যাটফর্মগুলিতে যেখানে মেমরি বিশেষভাবে সীমাবদ্ধ এবং এমন পরিস্থিতিতে যেখানে উচ্চ ব্যান্ডউইথের প্রয়োজন হয় না, ম্যানুয়ালি একটি ছোট বাফার আকার নির্বাচন করা বাঞ্ছনীয় হতে পারে।
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
TCP সংযোগের জন্য প্রস্তাবিত বাফার আকার যা অনেক বেতার হপ অতিক্রম করে।
যদি TCP সংযোগটি খুব বেশি সংখ্যক হপসকে অতিক্রম করে (6 বা তার বেশি), তাহলে ম্যানুয়ালি একটি বড় বাফার আকার নির্বাচন করার পরামর্শ দেওয়া যেতে পারে।
সম্পদ
OpenThread API রেফারেন্স বিষয়গুলি উৎস কোড থেকে উদ্ভূত হয়, যা GitHub- এ উপলব্ধ। আরও তথ্যের জন্য, বা আমাদের ডকুমেন্টেশনে অবদান রাখতে, সম্পদ দেখুন।
,টিসিপি
এই মডিউল টিসিপি যোগাযোগ নিয়ন্ত্রণ করে এমন ফাংশন অন্তর্ভুক্ত করে।
সারসংক্ষেপ
গণনা | |
---|---|
anonymous enum | enum otTcpConnect() এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে। |
anonymous enum | enumotTcpSendByReference এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে। |
otTcpDisconnectedReason | enum |
otTcpIncomingConnectionAction { | enum ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে। |
Typedefs | |
---|---|
otLinkedBuffer | typedefstruct otLinkedBuffer TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো। |
otTcpAcceptDone )(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) | typedefvoid(* এই কলব্যাকটি নির্দেশ করে যে TCP সংযোগ এখন দ্বিমুখী যোগাযোগের জন্য প্রস্তুত৷ |
otTcpAcceptReady )(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) | typedef এই কলব্যাকটি নির্দেশ করে যে একটি ইনকামিং সংযোগ যা এই TCP শ্রোতার সাথে মেলে। |
otTcpDisconnected )(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) | typedefvoid(* এই কলব্যাকটি নির্দেশ করে যে সংযোগটি ভেঙে গেছে এবং আর ব্যবহার করা উচিত নয়, অথবা একটি সংযোগ TIME-WAIT অবস্থায় প্রবেশ করেছে৷ |
otTcpDisconnectedReason | typedefenum otTcpDisconnectedReason |
otTcpEndpoint | typedefstruct otTcpEndpoint |
otTcpEndpointInitializeArgs | typedefstruct otTcpEndpointInitializeArgs otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpEstablished )(otTcpEndpoint *aEndpoint) | typedefvoid(* এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায় যে TCP 3-ওয়ে হ্যান্ডশেক সম্পূর্ণ হয়েছে এবং সংযোগটি এখন প্রতিষ্ঠিত হয়েছে। |
otTcpForwardProgress )(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) | typedefvoid(* সেন্ড বাফার থেকে প্রাপকের কাছে ডেটা স্থানান্তর করার ক্ষেত্রে অগ্রগতি করা হয়েছে কিনা এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায়। |
otTcpIncomingConnectionAction | typedef ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে। |
otTcpListener | typedefstruct otTcpListener |
otTcpListenerInitializeArgs | typedefstruct otTcpListenerInitializeArgs otTcpListenerInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpReceiveAvailable )(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) | typedefvoid(* এই কলব্যাকটি রিসিভ বাফার থেকে ব্যবহারের জন্য উপলব্ধ বাইটের সংখ্যা নির্দেশ করে। |
otTcpSendDone )(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) | typedefvoid(* এই কলব্যাক অ্যাপ্লিকেশনটিকে জানায় যে প্রদত্ত aData এর ডেটা সংযোগ পিয়ার দ্বারা স্বীকার করা হয়েছে এবং aData এবং এতে থাকা ডেটা অ্যাপ্লিকেশন দ্বারা পুনঃ দাবি করা যেতে পারে৷ |
ফাংশন | |
---|---|
otTcpAbort ( otTcpEndpoint *aEndpoint) | এই TCP এন্ডপয়েন্টের সাথে যুক্ত TCP সংযোগ জোর করে শেষ করে। |
otTcpBind ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName) | একটি IP ঠিকানা এবং পোর্টের সাথে TCP এন্ডপয়েন্ট আবদ্ধ করে। |
otTcpCommitReceive ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags) | টিসিপি স্ট্যাককে অবহিত করে যে অ্যাপ্লিকেশনটি রিসিভ বাফারের শুরুতে aNumBytes বাইট ডেটা প্রক্রিয়াকরণ শেষ করেছে এবং টিসিপি স্ট্যাকের রিসিভ বাফারে সেই বাইটগুলি বজায় রাখার প্রয়োজন নেই। |
otTcpConnect ( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags) | এই সংযোগের জন্য দূরবর্তী হোস্ট এবং পোর্ট রেকর্ড করে। |
otTcpEndpointDeinitialize ( otTcpEndpoint *aEndpoint) | এই TCP এন্ডপয়েন্ট ডিইনিশিয়ালাইজ করে। |
otTcpEndpointGetContext ( otTcpEndpoint *aEndpoint) | void * প্রারম্ভিককরণের পরে aEndpoint সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টার প্রাপ্ত করে। |
otTcpEndpointGetInstance ( otTcpEndpoint *aEndpoint) | সূচনা করার সময় aEndpoint সাথে যুক্ত otInstance প্রাপ্ত করে। |
otTcpEndpointInitialize ( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs) | একটি TCP শেষ পয়েন্ট শুরু করে। |
otTcpGetLocalAddress (const otTcpEndpoint *aEndpoint) | const otSockAddr * একটি TCP এন্ডপয়েন্টের স্থানীয় হোস্ট এবং পোর্টে একটি পয়েন্টার পায়। |
otTcpGetPeerAddress (const otTcpEndpoint *aEndpoint) | const otSockAddr * একটি টিসিপি এন্ডপয়েন্টের পিয়ার হোস্ট এবং পোর্টে একটি পয়েন্টার পায়। |
otTcpListen ( otTcpListener *aListener, const otSockAddr *aSockName) | এই TCP শ্রোতাদের কলব্যাকগুলিকে ট্রিগার করার জন্য নির্দিষ্ট আইপি ঠিকানা এবং পোর্টের সাথে মেলে ইনকামিং TCP সংযোগের কারণ। |
otTcpListenerDeinitialize ( otTcpListener *aListener) | এই TCP শ্রোতাকে ডিনিটিয়ালাইজ করে। |
otTcpListenerGetContext ( otTcpListener *aListener) | void * সূচনা করার সময় aListener এর সাথে সম্পর্কিত প্রসঙ্গ পয়েন্টারটি পায়। |
otTcpListenerGetInstance ( otTcpListener *aListener) | সূচনা করার পরে aListener এর সাথে যুক্ত otInstance প্রাপ্ত করে। |
otTcpListenerInitialize ( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs) | একটি TCP শ্রোতা শুরু করে। |
otTcpReceiveByReference ( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer) | টিসিপি রিসিভ বাফারে বর্তমানে একটি লিঙ্কযুক্ত বাফার চেইন রেফারেন্সিং ডেটা সহ অ্যাপ্লিকেশনটি প্রদান করে। |
otTcpReceiveContiguify ( otTcpEndpoint *aEndpoint) | মেমরিতে সম্পূর্ণরূপে সংলগ্ন হতে রিসিভ বাফারকে পুনর্গঠিত করে। |
otTcpSendByExtension ( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags) | নির্দিষ্ট পরিমাণ দ্বারা পাঠান বাফারে চূড়ান্ত otLinkedBuffer এর দৈর্ঘ্য প্রসারিত করে পাঠান বাফারে ডেটা যোগ করে। |
otTcpSendByReference ( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags) | সেন্ড বাফারে aBuffer দ্বারা নির্দেশিত লিঙ্কযুক্ত বাফার দ্বারা উল্লেখ করা ডেটা যোগ করে। |
otTcpSendEndOfStream ( otTcpEndpoint *aEndpoint) | কানেকশন পিয়ারকে জানায় যে এই TCP এন্ডপয়েন্ট আর ডেটা পাঠাবে না। |
otTcpStopListening ( otTcpListener *aListener) | এই TCP শ্রোতাকে ইনকামিং সংযোগের জন্য শোনা বন্ধ করে দেয়। |
কাঠামো | |
---|---|
otLinkedBuffer | TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো। |
otTcpEndpoint | একটি TCP শেষ পয়েন্ট প্রতিনিধিত্ব করে। |
otTcpEndpointInitializeArgs | otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
otTcpListener | একজন TCP শ্রোতার প্রতিনিধিত্ব করে। |
otTcpListenerInitializeArgs | otTcpListenerInitialize() ফাংশনের আর্গুমেন্ট রয়েছে। |
গণনা
বেনামী enum
anonymous enum
otTcpSendByReference
এ পাস করা পতাকাগুলিকে সংজ্ঞায়িত করে।
otTcpDisconnected Reason
otTcpDisconnectedReason
otTcpIncomingConnectionAction
otTcpIncomingConnectionAction
ইনকামিং সংযোগ কর্ম সংজ্ঞায়িত করে।
এটি otTcpAcceptReady() কলব্যাকে ব্যবহৃত হয়।
Typedefs
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
TCP-এর সাথে ব্যবহারের জন্য একটি লিঙ্কযুক্ত বাফার কাঠামো।
একটি একক otLinkedBuffer কাঠামো mData এবং mLength এর মাধ্যমে মেমরিতে বাইটের একটি অ্যারে উল্লেখ করে। mNext ক্ষেত্রটি otLinkedBuffer কাঠামোর একটি চেইন তৈরি করতে ব্যবহৃত হয়।
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
এই কলব্যাকটি নির্দেশ করে যে TCP সংযোগ এখন দ্বিমুখী যোগাযোগের জন্য প্রস্তুত৷
TCP ফাস্ট ওপেনের ক্ষেত্রে, এটি TCP কানেকশন হ্যান্ডশেক সম্পূর্ণ হওয়ার আগে হতে পারে। অ্যাপ্লিকেশনটি সংযোগটি গ্রহণকারী TCP শ্রোতার জন্য এবং যে TCP এন্ডপয়েন্টে এটি গ্রহণ করা হয়েছিল উভয়ের জন্য প্রসঙ্গ পয়েন্টার সরবরাহ করা হয়েছে। প্রদত্ত প্রসঙ্গটি টিসিপি শ্রোতার সাথে যুক্ত।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
এই কলব্যাকটি নির্দেশ করে যে একটি ইনকামিং সংযোগ যা এই TCP শ্রোতার সাথে মেলে।
আগত সংযোগ গ্রহণ করার জন্য আবেদনের জন্য সাধারণ প্রতিক্রিয়া। এটি otTcpEndpoint- এ একটি পয়েন্টার সহ aAcceptInto
পপুলেট করে যাতে ইনকামিং সংযোগ গ্রহণ করা যায়। এই otTcpEndpoint ইতিমধ্যেই otTcpEndpointInitialize() ব্যবহার করে আরম্ভ করা আবশ্যক। তারপর, অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT প্রদান করে৷
বিকল্পভাবে, আবেদনটি আগত সংযোগ গ্রহণ করতে অস্বীকার করতে পারে। এটি করার জন্য অ্যাপ্লিকেশনটির জন্য দুটি উপায় রয়েছে। প্রথমত, যদি অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_DEFER ফেরত দেয়, তাহলে OpenThread নীরবে সংযোগ স্থাপনের অনুরোধ উপেক্ষা করে; সংযোগ পিয়ার সম্ভবত অনুরোধটি পুনরায় প্রেরণ করবে, যে সময়ে আবার কলব্যাক কল করা হবে। এটি মূল্যবান যদি বর্তমানে সংযোগ গ্রহণ করার জন্য সংস্থানগুলি উপলব্ধ না হয়, তবে সংযোগ পিয়ার তার সংযোগ স্থাপনের প্রচেষ্টা পুনরায় প্রেরণ করলে সেগুলি উপলব্ধ হতে পারে। দ্বিতীয়ত, যদি অ্যাপ্লিকেশনটি OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE ফেরত দেয়, তাহলে OpenThread সেই হোস্টকে একটি "সংযোগ প্রত্যাখ্যান" বার্তা পাঠায় যেটি একটি সংযোগ স্থাপনের চেষ্টা করেছে। যদি অ্যাপ্লিকেশনটি ইনকামিং সংযোগ প্রত্যাখ্যান করে, তাহলে এটি aAcceptInto
পপুলেট করার প্রয়োজন নেই।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্নস | ইনকামিং সংযোগ কিভাবে পরিচালনা করতে হয় তার বর্ণনা। |
otTcp সংযোগ বিচ্ছিন্ন
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
এই কলব্যাকটি নির্দেশ করে যে সংযোগটি ভেঙে গেছে এবং আর ব্যবহার করা উচিত নয়, অথবা একটি সংযোগ TIME-WAIT অবস্থায় প্রবেশ করেছে৷
এটি ঘটতে পারে যদি একটি সংযোগ স্থাপনের প্রচেষ্টা ( otTcpConnect() কল করার মাধ্যমে শুরু করা হয়) ব্যর্থ হয়, বা তার পরে যেকোন বিন্দু (যেমন, সংযোগের সময় শেষ হলে বা সংযোগ পিয়ার থেকে একটি RST সেগমেন্ট পাওয়া যায়)। একবার এই কলব্যাক ফায়ার হয়ে গেলে, অ্যাপ্লিকেশনটি এই সংযোগের জন্য প্রদত্ত সমস্ত সংস্থান (অর্থাৎ, যে কোনও otLinkedBuffers
এবং মেমরি তারা উল্লেখ করেছে, কিন্তু TCP এন্ডপয়েন্ট নিজেই নয় বা রিসিভ বাফারগুলির জন্য স্থান নয়) পুনরুদ্ধার করা যেতে পারে। TIME-WAIT স্থিতিতে প্রবেশের একটি সংযোগের ক্ষেত্রে, এই কলব্যাকটি দুবার বলা হয়, একবার TIME-WAIT অবস্থায় প্রবেশ করার পরে (OT_TCP_DISCONNECTED_REASON_TIME_WAIT সহ, এবং আবার যখন TIME-WAIT অবস্থার মেয়াদ শেষ হয় (OT_TCP_DISCONNECTED_REASON_REASON_NO এর সাথে)।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
otTcpDisconnected Reason
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
otTcpEndpointInitialize() ফাংশনের আর্গুমেন্ট রয়েছে।
otTcp প্রতিষ্ঠিত
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
এই কলব্যাকটি অ্যাপ্লিকেশনটিকে জানায় যে TCP 3-ওয়ে হ্যান্ডশেক সম্পূর্ণ হয়েছে এবং সংযোগটি এখন প্রতিষ্ঠিত হয়েছে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
প্রাপকের কাছে প্রেরণ বাফার থেকে ডেটা স্থানান্তর করার ক্ষেত্রে যদি অগ্রগতি হয় তবে এই কলব্যাক অ্যাপ্লিকেশনটিকে অবহিত করে।
সঠিক টিসিপি অপারেশনের জন্য এই কলব্যাকটি প্রয়োজনীয় নয়। বেশিরভাগ অ্যাপ্লিকেশনগুলি কেবলমাত্র টিসিপি স্ট্যাকগুলি ব্যবহার করে শেষ হয়ে গেলে লিঙ্কযুক্ত বাফারগুলি পুনরায় দাবি করতে ওটিসিপেন্ডসেন্ডোন () কলব্যাকের উপর নির্ভর করতে পারে। এই কলব্যাকের উদ্দেশ্য হ'ল উন্নত অ্যাপ্লিকেশনগুলিকে সমর্থন করা যা সংযোগটি কীভাবে সংযোগ পিয়ারের কাছে ডেটা স্থানান্তর করতে অগ্রগতি অর্জন করছে সে সম্পর্কে সূক্ষ্ম-দানাযুক্ত তথ্য থেকে উপকৃত হয়।
এই কলব্যাকের অপারেশনটি টিসিপির প্রেরণ বাফারের সাথে ঘনিষ্ঠভাবে আবদ্ধ। প্রেরণ বাফার দুটি অঞ্চল হিসাবে বোঝা যায়। প্রথমত, প্রেরণ বাফারের মাথার (সামনের) "ইন-ফ্লাইট" অঞ্চল রয়েছে। এটি এমন ডেটার সাথে সম্পর্কিত যা প্রাপকের কাছে প্রেরণ করা হয়েছে, তবে এখনও স্বীকৃত নয়। দ্বিতীয়ত, "ব্যাকলগ" অঞ্চল রয়েছে, যা প্রেরণ বাফারে সমস্ত ডেটা নিয়ে গঠিত যা "ইন-ফ্লাইট" অঞ্চলে নেই। "ব্যাকলগ" অঞ্চলটি এমন ডেটার সাথে মিলে যা প্রেরণের জন্য সারি করা হয়, তবে এখনও প্রেরণ করা হয়নি।
দুটি ধরণের ইভেন্টের প্রতিক্রিয়া হিসাবে কলব্যাকটি আহ্বান করা হয়। প্রথমত, প্রেরণ বাফারের "ইন-ফ্লাইট" অঞ্চল সঙ্কুচিত হতে পারে (যেমন, যখন প্রাপক আমরা আগে প্রেরণ করেছি এমন ডেটা স্বীকার করে)। দ্বিতীয়ত, প্রেরণ বাফারের "ব্যাকলগ" অঞ্চল সঙ্কুচিত হতে পারে (যেমন, নতুন ডেটা প্রেরণ করা হয়েছিল)। এই দুটি শর্ত প্রায়শই একই সময়ে ঘটে, সংযোগ পিয়ার থেকে এসি কে বিভাগের প্রতিক্রিয়া হিসাবে, এ কারণেই তারা একক কলব্যাকে একত্রিত হয়।
টিসিপি স্ট্যাক কেবল প্রেরণ বাফারের লেজে aInSendBuffer
বাইট ব্যবহার করে; যখন aInSendBuffer
একটি পরিমাণ এক্স দ্বারা হ্রাস পায়, তখন এর অর্থ হ'ল এক্স অতিরিক্ত বাইটগুলি যা আগে প্রেরণ বাফারের শীর্ষে ছিল তারা আর প্রেরণ বাফারের অংশ নয় এবং এখন অ্যাপ্লিকেশন দ্বারা পুনরুদ্ধার করা যেতে পারে (অর্থাত্ ওভাররাইট)। নোট করুন যে ওটলিঙ্কডবফার কাঠামোটি নিজেই কেবল একবার বাইটে পুনরায় দাবি করা যেতে পারে যে এটির উল্লেখগুলি আর প্রেরণ বাফারের অংশ নয়।
এই কলব্যাকটি নিম্নলিখিত অর্থে ওটসিপসেন্ডডোন () কে গ্রহণ করে: অ্যাপ্লিকেশনগুলি নির্ধারণ করতে পারে যখন লিঙ্কযুক্ত বাফারগুলি প্রতিটি লিঙ্কযুক্ত বাফারে কতগুলি বাইট রয়েছে তার সাথে aInSendBuffer
তুলনা করে পুনরুদ্ধার করা যেতে পারে। তবে, আমরা ওটিটিসিপিএসএনডোন () আশা করি, যা সরাসরি যেটি ওটলিংকডবাফারগুলি পুনরুদ্ধার করা যেতে পারে তা সরাসরি জানায়, এটি ব্যবহার করার জন্য আরও সহজ হতে পারে। যদি উভয় কলব্যাক নিবন্ধিত হয় এবং একই ইভেন্টের দ্বারা ট্রিগার করা হয় (যেমন, একই এসি কে বিভাগটি প্রাপ্ত), তবে ওটিটিসিপিএসএনডিডোন () কলব্যাকটি প্রথমে ট্রিগার করা হবে, তারপরে এই কলব্যাকটি অনুসরণ করা হবে।
অতিরিক্তভাবে, এই কলব্যাকটি aBacklog
সরবরাহ করে, যা নির্দেশ করে যে প্রেরণ বাফারে কতগুলি বাইট ডেটা এখনও ফ্লাইটে নেই। এমন অ্যাপ্লিকেশনগুলির জন্য যা কেবলমাত্র প্রেরণ বাফারে ডেটা যুক্ত করতে চায় যখন কোনও আশ্বাস থাকে যে এটি শীঘ্রই প্রেরণ করা হবে, তখন কেবল যখন aBacklog
যথাযথভাবে ছোট (0 বা 0 এর কাছাকাছি) থাকে তখন কেবল ডেটা প্রেরণ করা বাঞ্ছনীয় হতে পারে। উদাহরণস্বরূপ, কোনও অ্যাপ্লিকেশন aBacklog
ব্যবহার করতে পারে যাতে এটি ডেটা ব্যাকলগ তৈরি এড়াতে ডেটা ড্রপ বা একত্রিত করে সারি বিল্ডআপে প্রতিক্রিয়া জানাতে পারে।
OTTCPSENDBYEREFERENCE () বা OTTCPSENDBYEXTENTION () এ একটি ইতিবাচক সংখ্যক বাইটের সাথে কল করার পরে, OTTCPForwardProgrress () কলব্যাক কলব্যাকের কলব্যাকের গ্যারান্টিযুক্ত, যখন প্রেরণ বাফারে যুক্ত করা হয়েছিল সেগুলি কখন প্রেরণ করা হয় তা নির্দেশ করতে। OTTCPForwardProgress () এর কলটি বাইটগুলি প্রেরণ বাফারে যুক্ত হওয়ার সাথে সাথেই করা যেতে পারে (যদি সেই বাইটগুলির মধ্যে কিছু অবিলম্বে প্রেরণ করা হয়, ব্যাকলগটি হ্রাস করা হয়), বা ভবিষ্যতে কোনও এক সময় (একবার সংযোগটি কিছু বা সমস্ত কিছু প্রেরণ করে ডেটা, ব্যাকলগ হ্রাস)। "অবিলম্বে" দ্বারা, আমরা বলতে চাইছি যে কলব্যাকটি তাত্ক্ষণিকভাবে কোনও টাস্কেটে মৃত্যুদন্ড কার্যকর করার জন্য নির্ধারিত হয়েছে; রেন্ট্রেন্সি-সম্পর্কিত জটিলতা এড়াতে, ওটিটিসিপিফোরওয়ার্ডপ্রোগ্রেস () কলব্যাককে কখনই সরাসরি ওটিটিসিপেন্ডসেন্ডবাইরফারেন্স () বা ওটিটিসিপিএসএনডবাইবার্স্টেনশন () ফাংশনগুলি থেকে ডাকা হয় না।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
Ottcpincoming সংযোগ
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
আগত সংযোগ ক্রিয়া সংজ্ঞায়িত করে।
এটি OTTCPACCEPTREADY () কলব্যাকে ব্যবহৃত হয়।
OTTCPLISTENER
struct otTcpListener otTcpListener
OTTCPLISTENERINITIALIZEARGS
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
Ottcplistenerinitialize () ফাংশনে যুক্তিযুক্ত।
OTTCPRECEVEAVAILABLE
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
এই কলব্যাকটি রিসিভ বাফার থেকে ব্যবহারের জন্য উপলব্ধ বাইটের সংখ্যা নির্দেশ করে।
যখনই রিসিভ বাফারে বাইট যুক্ত করা হয় এবং যখন স্রোতের শেষটি পৌঁছে যায় তখন এটি বলা হয়। যদি স্ট্রিমের শেষটি পৌঁছে যায় (অর্থাত্, যদি আর কোনও ডেটা পড়ার জন্য উপলব্ধ না হয় কারণ সংযোগ পিয়ার লেখার জন্য তাদের সংযোগের শেষটি বন্ধ করে দিয়েছে), তবে aEndOfStream
সত্য। অবশেষে, aBytesRemaining
ইঙ্গিত দেয় যে প্রাপ্ত অতিরিক্ত ডেটা ধরে রাখার জন্য রিসিভ বাফারে কতটা ক্ষমতা অবশিষ্ট রয়েছে।
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
|
OTTCPSENDDONE
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
এই কলব্যাক অ্যাপ্লিকেশনটিকে অবহিত করে যে প্রদত্ত aData
ডেটা সংযোগ পিয়ার দ্বারা স্বীকৃত হয়েছে এবং aData
এবং এতে থাকা ডেটাগুলি অ্যাপ্লিকেশন দ্বারা পুনরুদ্ধার করা যেতে পারে।
aData
ওটিটিসিপেন্ডবাইরেন্স () এর মাধ্যমে টিসিপিতে পাস করা ব্যক্তিদের সাথে একই রকম হওয়ার গ্যারান্টিযুক্ত, ওটিটিসিপেন্ডসেন্ডবাইবার্সেনশন () এর মাধ্যমে প্রভাবিত যে কোনও এক্সটেনশন সহ।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
ফাংশন
Ottcpabort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
জোর করে এই টিসিপি এন্ডপয়েন্টের সাথে সম্পর্কিত টিসিপি সংযোগটি শেষ করে।
এটি অবিলম্বে টিসিপি এন্ডপয়েন্টটিকে অন্য সংযোগের জন্য ব্যবহারের জন্য বিনামূল্যে তৈরি করে এবং প্রেরণ এবং গ্রহণ করে বাফারগুলি খালি করে, OTTCPSENDBYEREFEREREARE () এবং OTTCPSENDBYEXTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENS () অ্যাপ্লিকেশনটিতে ফিরে কল করে। টিসিপি এন্ডপয়েন্টের কলব্যাকস এবং রিসিভ বাফারের জন্য মেমরি টিসিপি এন্ডপয়েন্টের সাথে যুক্ত রয়েছে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPBIND
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
একটি আইপি ঠিকানা এবং পোর্টে টিসিপি এন্ডপয়েন্টকে আবদ্ধ করে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPCOMMITRECEIVE
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
টিসিপি স্ট্যাককে অবহিত করে যে অ্যাপ্লিকেশনটি রিসিভ বাফারের শুরুতে aNumBytes
বাইট ডেটা প্রক্রিয়াকরণ শেষ করেছে এবং টিসিপি স্ট্যাকটি রিসিভ বাফারে সেই বাইটগুলি বজায় রাখা চালিয়ে যাওয়া উচিত নয়।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
OTTCPCONNECT
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
এই সংযোগের জন্য দূরবর্তী হোস্ট এবং পোর্ট রেকর্ড করুন।
টিসিপি ফাস্ট ওপেন অবশ্যই aFlags
ব্যবহার করে সক্ষম বা অক্ষম করা উচিত। যদি এটি অক্ষম থাকে তবে টিসিপি সংযোগ স্থাপনের হ্যান্ডশেকটি অবিলম্বে শুরু করা হয়। যদি এটি সক্ষম করা থাকে, তবে এই ফাংশনটি কেবল দূরবর্তী হোস্ট এবং পোর্টটি রেকর্ড করে এবং টিসিপি সংযোগ স্থাপনের হ্যান্ডশেকটি কেবল otTcpSendByReference()
এর প্রথম কলটিতে ঘটে।
যদি টিসিপি ফাস্ট ওপেন অক্ষম করা থাকে, তবে কলারকে অবশ্যই otTcpEstablished
কলব্যাকের জন্য অপেক্ষা করতে হবে যা ইঙ্গিত করে যে টিসিপি সংযোগ স্থাপনের হ্যান্ডশেকটি ডেটা প্রেরণ শুরু করার আগে এটি করা হয়েছে যেমন otTcpSendByReference()
কল করে।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
OTTCPENDPOINTDINITIALIZE
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
এই টিসিপি শেষ পয়েন্টটি ডাইনিটিয়ালাইজ করে।
এর অর্থ হ'ল ওপেনথ্রেড আর এই টিসিপি এন্ডপয়েন্টের উপর নজর রাখে না এবং এই টিসিপি এন্ডপয়েন্টের জন্য অভ্যন্তরীণভাবে বরাদ্দ করা সমস্ত সংস্থানগুলি ডিলোকেট করে। অ্যাপ্লিকেশনটি উপযুক্ত হিসাবে দেখলে টিসিপি এন্ডপয়েন্টকে সমর্থন করে মেমরিটি পুনরায় ব্যবহার করতে পারে।
যদি এটি কোনও লাইভ টিসিপি সংযোগের সাথে সম্পর্কিত হয় তবে সংযোগটি অনিচ্ছাকৃতভাবে সমাপ্ত করা হয় (যেমন ওটসপ্যাবোর্ট () হিসাবে)। অ্যাপ্লিকেশনটি এই টিসিপি এন্ডপয়েন্টের জন্য সরবরাহ করেছে এমন সমস্ত সংস্থান (প্রেরণ বাফারের জন্য লিঙ্কযুক্ত বাফার, রিসিভ বাফারের জন্য মেমরি, aEndpoint
স্ট্রাকচার নিজেই ইত্যাদি) তাত্ক্ষণিকভাবে অ্যাপ্লিকেশনটিতে ফিরে আসে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPENDPOINTGETCONTEXT
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
প্রারম্ভিক পয়েন্টারটি গ্রহণ করে যা সূচনার পরে aEndpoint
সাথে যুক্ত ছিল।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aEndpoint সাথে যুক্ত প্রসঙ্গ পয়েন্টার। |
OTTCPENDPOINTGETINSTANCE
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
সূচনা করার পরে aEndpoint
সাথে যুক্ত ছিল এমন ওটিনস্ট্যান্সটি গ্রহণ করে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | ওটিনস্ট্যান্স পয়েন্টারটি aEndpoint সাথে যুক্ত। |
OTTCPENDPOINTINITIALIZE
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
একটি টিসিপি শেষ পয়েন্ট আরম্ভ করে।
এই ফাংশনটি কল করার ফলে ওপেনথ্রেড টিসিপি এন্ডপয়েন্টের উপর নজর রাখতে এবং aEndpoint
অভ্যন্তরে টিসিপি ডেটা সংরক্ষণ এবং পুনরুদ্ধার করে। অ্যাপ্লিকেশনটি সরাসরি aEndpoint
অ্যাক্সেস বা সংশোধন করা থেকে বিরত থাকা উচিত। যদি অ্যাপ্লিকেশনটির মেমরি ব্যাকিং aEndpoint
পুনরায় দাবি করা দরকার, তবে এটি ওটসিপেন্ডপয়েন্টডিনিটিয়ালাইজ () কল করা উচিত।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
Ottcpgetlocaladdress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
একটি টিসিপি এন্ডপয়েন্টের স্থানীয় হোস্ট এবং বন্দরে একটি পয়েন্টার প্রাপ্ত করে।
হোস্ট এবং পোর্টের বিষয়বস্তু বাসি হতে পারে যদি এই সকেটটি কোনও সংযুক্ত অবস্থায় না থাকে এবং এটি শেষ সংযোগ বিচ্ছিন্ন হওয়ার পরে আবদ্ধ না হয়।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | স্থানীয় হোস্ট এবং পোর্ট অফ aEndpoint । |
OTTCPGETPERADDRESS
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
একটি টিসিপি এন্ডপয়েন্টের পিয়ারের হোস্ট এবং বন্দরে একটি পয়েন্টার প্রাপ্ত করে।
এই সকেটটি সংযুক্ত অবস্থায় না থাকলে হোস্ট এবং পোর্টের বিষয়বস্তু বাসি হতে পারে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | হোস্ট এবং পোর্ট অফ সংযোগ পিয়ার অফ aEndpoint । |
Ottcplisten
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
এই টিসিপি শ্রোতার কলব্যাকগুলি ট্রিগার করতে নির্দিষ্ট আইপি ঠিকানা এবং পোর্টের সাথে মেলে আগত টিসিপি সংযোগগুলি ঘটায়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPLISTENERDINITIALIZE
otError otTcpListenerDeinitialize( otTcpListener *aListener )
এই টিসিপি শ্রোতার dinitializes।
এর অর্থ হ'ল ওপেনথ্রেড আর এই টিসিপি শ্রোতার উপর নজর রাখে না এবং এই টিসিপি শ্রোতার জন্য অভ্যন্তরীণভাবে বরাদ্দ করা সমস্ত সংস্থানকে ডিলোকেট করে। অ্যাপ্লিকেশনটি উপযুক্ত হিসাবে দেখলে টিসিপি শ্রোতাদের সমর্থন করে মেমরিটি পুনরায় ব্যবহার করতে পারে।
যদি টিসিপি শ্রোতা বর্তমানে শুনছেন, এটি শ্রবণ বন্ধ করে দেয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPLISTENERGETCONTEXT
void * otTcpListenerGetContext( otTcpListener *aListener )
প্রারম্ভিক পয়েন্টারটি প্রাপ্ত করে যা আরম্ভের পরে aListener
এর সাথে যুক্ত ছিল।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aListener এর সাথে যুক্ত প্রসঙ্গ পয়েন্টার। |
OTTCPLISTENERGETINSTANCE
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
আরম্ভের পরে aListener
এর সাথে যুক্ত ছিল যে ওটিনস্ট্যান্স।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
| ||
রিটার্নস | aListener এর সাথে যুক্ত ওটিনস্ট্যান্স পয়েন্টার। |
Ottcplistenerinitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
একটি টিসিপি শ্রোতার সূচনা করে।
এই ফাংশনটি কল করার ফলে ওপেনথ্রেড টিসিপি শ্রোতার উপর নজর রাখতে এবং aListener
অভ্যন্তরে টিসিপি ডেটা সংরক্ষণ এবং পুনরুদ্ধার করে। অ্যাপ্লিকেশনটি aListener
ক্ষেত্রগুলিতে সরাসরি অ্যাক্সেস বা সংশোধন করা থেকে বিরত থাকা উচিত। যদি অ্যাপ্লিকেশনটির মেমরি ব্যাকিং aListener
পুনরায় দাবি করা দরকার, তবে এটি OTTCPLISTENERDINITIALIZE () কল করা উচিত।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
OTTCPRECEIVEBYEREARENCE
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
টিসিপি রিসিভ বাফারে বর্তমানে একটি লিঙ্কযুক্ত বাফার চেইন রেফারেন্সিং ডেটা সহ অ্যাপ্লিকেশন সরবরাহ করে।
লিঙ্কযুক্ত বাফার চেইনটি "রিসিড রেডি" কলব্যাকটি পরবর্তী অনুরোধ না করা পর্যন্ত বা OTTCPRECEVECONTIGUIFY () বা OTTCPCOMMITRECEIVE () এ পরবর্তী কল না হওয়া পর্যন্ত বৈধ।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPRECIVECONTIGUIFY
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
মেমরিতে সম্পূর্ণরূপে সুসংগত হতে প্রাপ্ত বাফারটিকে পুনর্গঠিত করে।
এটি ঐচ্ছিক; একটি অ্যাপ্লিকেশনটি কেবল otTcpReceiveByReference
কল করে প্রাপ্ত লিঙ্কযুক্ত বাফার চেইনটি অতিক্রম করতে পারে। কিছু অ্যাপ্লিকেশনগুলি তাদের ডেটা প্রসেসিংকে সহজ করার জন্য রিসিভ বাফারকে সুসংগত করতে এই ফাংশনটি কল করতে চাইতে পারে তবে এটি সিপিইউ সময় ব্যয় করে রিসিভ বাফারে ডেটা পুনর্গঠিত করতে আসে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPSENDBYEXTENTION
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
নির্দিষ্ট পরিমাণ দ্বারা প্রেরণ বাফারে চূড়ান্ত otlinkedbuffer এর দৈর্ঘ্য প্রসারিত করে প্রেরণ বাফারে ডেটা যুক্ত করে।
যদি প্রেরণ বাফারটি খালি থাকে তবে অপারেশনটি ব্যর্থ হয়।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
OTTCPSENDBYEREFEREREREREARE
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
লিঙ্কযুক্ত বাফার দ্বারা রেফারেন্সযুক্ত ডেটা যুক্ত করুন aBuffer
দ্বারা নির্দেশিত বাফারে নির্দেশিত।
এই ফাংশনে একটি সফল কল করার পরে, লিঙ্কযুক্ত বাফার এবং ডেটা এটি রেফারেন্সগুলি টিসিপি স্ট্যাকের মালিকানাধীন; কোনও "প্রেরণ সম্পন্ন" কলব্যাক অ্যাপ্লিকেশনটিতে সেই অবজেক্টগুলির মালিকানা ফেরত না দেওয়া পর্যন্ত তাদের অ্যাপ্লিকেশন দ্বারা সংশোধন করা উচিত নয়। এই ফাংশনটির পূর্ববর্তী অনুরোধের জন্য "প্রেরণ সম্পন্ন" কলব্যাকটি এখনও চালিত না হলেও এই ফাংশনটি অন্য লিঙ্কযুক্ত বাফার যুক্ত করতে কল করা গ্রহণযোগ্য।
নোট করুন যে aBuffer
শৃঙ্খলিত করা উচিত নয়; এর Mnext ক্ষেত্রটি বাতিল হওয়া উচিত। যদি এই কলটির ঠিক পরে অতিরিক্ত ডেটা যুক্ত করা হয়, তবে OT_TCP_SEND_MORE_TO_COMACOMAPLE TCP বাস্তবায়নের ইঙ্গিত হিসাবে ব্যবহার করা উচিত।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
OTTCPSENDENDOFSTREARE
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
সংযোগ পিয়ারকে অবহিত করে যে এই টিসিপি এন্ডপয়েন্টটি আরও ডেটা প্রেরণ করবে না।
এটি ব্যবহার করা উচিত যখন অ্যাপ্লিকেশনটির সংযোগ পিয়ারকে প্রেরণের জন্য আর কোনও ডেটা না থাকে। এই সংযোগের জন্য, ভবিষ্যতের সংযোগ পিয়ার পড়ার ফলে "স্ট্রিমের শেষ" শর্ত হবে এবং এই সংযোগে ভবিষ্যতের লেখার শেষ পয়েন্টটি ব্যর্থ হবে।
"স্ট্রিমের শেষ" শর্তটি কেবল টিসিপি স্ট্যাককে প্রেরণের জন্য সরবরাহ করা কোনও ডেটা সংযোগ পিয়ার দ্বারা প্রাপ্ত হওয়ার পরে প্রযোজ্য।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
OTTCPSTOPLISTING
otError otTcpStopListening( otTcpListener *aListener )
এই টিসিপি শ্রোতাদের আগত সংযোগগুলি শুনতে বন্ধ করে দেয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
ম্যাক্রো
Ot_tcp_endpoint_tcb_num_ptr
OT_TCP_ENDPOINT_TCB_NUM_PTR 36
Ot_tcp_endpoint_tcb_size_base
OT_TCP_ENDPOINT_TCB_SIZE_BASE 392
Ot_tcp_endpoint_tcb_size_base এবং ot_tcp_endpint_tcb_num_pointers এমনভাবে বেছে নেওয়া হয় যে ওটিসিপেন্ডপয়েন্টের এমটিসিবি ক্ষেত্রটি টিসিপিএলপিতে স্ট্রাক্ট টিসিপিসিবি হিসাবে একই আকার রয়েছে।
এটি প্রয়োজনীয় কারণ এমটিসিবি ক্ষেত্রটি যদিও এর ঘোষণায় অস্বচ্ছ, টিসিপি বাস্তবায়নে স্ট্রাক্ট টিসিপিসিবি হিসাবে বিবেচিত হয়।
OT_TCP_LISTENER_TCB_NUM_PTR
OT_TCP_LISTENER_TCB_NUM_PTR 3
Ot_tcp_listener_tcb_size_base
OT_TCP_LISTENER_TCB_SIZE_BASE 16
OT_TCP_LISTENER_TCB_SIZE_BASE এবং OT_TCP_LISTENER_TCB_NUM_POINTERS এমনভাবে বেছে নেওয়া হয় যে টিসিপিএলপি -তে স্ট্রাক্ট টিসিপিসিবি_লিস্টেনের মতো ওটিটিসিপ্লিস্টেনারের এমটিসিব্লিস্টনার ক্ষেত্রের একই আকারের রয়েছে।
এটি প্রয়োজনীয় কারণ এমটিসিব্লিস্টেন ক্ষেত্রটি যদিও এর ঘোষণাপত্রে অস্বচ্ছ, টিসিপি বাস্তবায়নে স্ট্রাক্ট টিসিপিসিবি হিসাবে বিবেচিত হয়।
Ot_tcp_receive_buffer_size_few_hops
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
টিসিপি সংযোগগুলির জন্য প্রস্তাবিত বাফার আকার যা প্রায় 3 টি ওয়্যারলেস হপ বা তার চেয়ে কম ট্র্যাভার করে।
প্ল্যাটফর্মগুলিতে যেখানে মেমরিটি বিশেষত সীমাবদ্ধ এবং এমন পরিস্থিতিতে যেখানে উচ্চ ব্যান্ডউইথের প্রয়োজন হয় না, সেখানে ম্যানুয়ালি একটি ছোট বাফার আকার নির্বাচন করা বাঞ্ছনীয় হতে পারে।
Ot_tcp_receive_buffer_size_many_hops
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
টিসিপি সংযোগগুলির জন্য প্রস্তাবিত বাফার আকার যা অনেকগুলি ওয়্যারলেস হপকে অতিক্রম করে।
যদি টিসিপি সংযোগটি খুব বড় সংখ্যক হপগুলি (6 বা তার বেশি) অতিক্রম করে, তবে ম্যানুয়ালি একটি বৃহত বাফার আকার নির্বাচন করার পরামর্শ দেওয়া যেতে পারে।
সম্পদ
OpenThread API রেফারেন্স বিষয়গুলি উৎস কোড থেকে উদ্ভূত হয়, যা GitHub- এ উপলব্ধ। আরও তথ্যের জন্য, বা আমাদের ডকুমেন্টেশনে অবদান রাখতে, সম্পদ দেখুন।