TCP
מודול זה כולל פונקציות ששולטות בתקשורת של TCP.
סיכום
מספור |
|
---|---|
anonymous enum
|
טיפוסים בני מנייה (enum) בספירה הזו מוגדרים סימונים שהועברו ל-otTcpConnect() . |
anonymous enum
|
טיפוסים בני מנייה (enum) בספירה הזו מוגדרים סימונים שהועברו אל otTcpSendByReference . |
otTcpDisconnectedReason
|
טיפוסים בני מנייה (enum) |
otTcpIncomingConnectionAction{
|
טיפוסים בני מנייה (enum) הספירה הזו מגדירה את פעולות החיבור הנכנסות. |
סוג Dedef |
|
---|---|
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
המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
Typedefvoid(*
קריאה חוזרת זו מודיעה לאפליקציה שלחיצת היד של TCP תלת-כיוונית הושלמה ושחיבור זה נוצר. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
Typedefvoid(*
הקריאה החוזרת הזו מודיעה לאפליקציה אם בוצעה התקדמות בהעברת נתונים ממאגר הנתונים הזמני לנמען. |
otTcpIncomingConnectionAction
|
Typedef הספירה הזו מגדירה את פעולות החיבור הנכנסות. |
otTcpListener
|
Typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
Typedefstruct otTcpListenerInitializeArgs
המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() . |
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)
|
מחייבת את נקודת הקצה של TCP לכתובת IP וליציאה.
|
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
מקבצים על מחסנית ה-TCP שהאפליקציה סיים לעבד
aNumBytes בייטים של נתונים בתחילת מאגר הנתונים הזמני, ושאין צורך להמשיך בערימת ה-TCP במאגרים האלה. |
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
|
הקלטת המארח והיציאה המרוחקים בחיבור הזה.
|
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
|
מאתחל את נקודת הקצה הזו של TCP.
|
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
|
void *
קבלת מצביע ההקשר המשויך ל-
aEndpoint בזמן האתחול. |
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
|
מקבל את ה-OTInstance שמשויך ל-
aEndpoint בזמן האתחול. |
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
|
מפעיל נקודת קצה ב-TCP.
|
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
מקבלת מצביע לנקודת קצה (TCP) ולנקודת יציאה מקומיות של TCP.
|
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
מקבל מצביע לנקודת קצה ויציאה של TCP&33.
|
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
|
גורם לחיבורי TCP נכנסים שתואמים לכתובת ה-IP וליציאה שצוינו, כדי להפעיל את הקריאות החוזרות של האזנה ל-TCP'
|
otTcpListenerDeinitialize(otTcpListener *aListener)
|
מאתחל את מאזין ה-TCP הזה.
|
otTcpListenerGetContext(otTcpListener *aListener)
|
void *
קבלת מצביע ההקשר המשויך ל-
aListener בזמן האתחול. |
otTcpListenerGetInstance(otTcpListener *aListener)
|
מקבל את ה-OTInstance שמשויך ל-
aListener בזמן האתחול. |
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
|
מאתחל פונקציות מסוג listener של TCP.
|
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
|
מספק לאפליקציה שרשרת מאגר של מאגר בין נתונים המכילים הפניה לנתונים שנמצאים כרגע ב-TCP, מאגר נתונים זמני.
|
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 |
המבנה הזה מייצג נקודת קצה (endpoint) של TCP. |
otTcpendpointizeizeArgs |
המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize(). |
otTcpListener |
המבנה הזה מייצג פונקציות מסוג listener של TCP. |
otTcpListenererizeArgs |
המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() . |
מספור
Enum אנונימי
anonymous enum
בספירה הזו מוגדרים סימונים שהועברו אל otTcpSendByReference
.
otTcpמנותקים
otTcpDisconnectedReason
otTcpInboundConnectionAction
otTcpIncomingConnectionAction
הספירה הזו מגדירה את פעולות החיבור הנכנסות.
ההגדרה הזו משמשת לקריאה חוזרת (callback) של otTcpAcceptReady() .
מאפיינים | |
---|---|
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT
|
מאשרים את החיבור הנכנס. |
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER
|
דחיית החיבור באופן שקט. |
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
|
דוחים את החיבור הנכנס. |
סוג Dedef
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
מבנה של מאגר במאגר נתונים זמני לשימוש עם TCP.
מבנה otLinkedBuffer מתייחס למערך בייטים בזיכרון, באמצעות mData ו-mLength. השדה mNext משמש ליצירת שרשרת של מבנים מסוג otLinkedBuffer.
OTTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
קריאה חוזרת זו מציינת שחיבור ה-TCP מוכן כעת לתקשורת דו-כיוונית.
במקרה של TCP Quick Open, זה יכול להיות לפני שלחיצת היד של ה-TCP הושלמה בפועל. האפליקציה מסופקת עם מצביעי ההקשר הן עבור event listener של TCP שאישר את החיבור ואת נקודת הקצה של TCP שבה היא התקבלה. ההקשר שסופק הוא ההקשר המשויך למאזינים של ה-TCP.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
OTTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
קריאה חוזרת זו מעידה על כך שחיבור נכנס התואם למאזינים של TCP הגיע.
התגובה הטיפוסית היא שהאפליקציה תקבל את החיבור הנכנס. לשם כך היא מאכלסת את aAcceptInto
באמצעות מצביע ב-otTcpendpoint שאליו היא מקבלת את החיבור הנכנס. יש להפעיל את otTcpendpoint הזה באמצעות otTcpendpointize(). לאחר מכן, האפליקציה תחזיר OT_TCP_INCOMING_CONNECTION_ACTION_CONFIRM.
לחלופין, האפליקציה יכולה לסרב לקבל את החיבור הנכנס. יש שתי דרכים שבהן האפליקציה יכולה לעשות זאת. ראשית, אם האפליקציה מחזירה את OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, אז ב-OpenThread מתעלמים שקטה מהבקשה ליצירת החיבור. סביר להניח שעמית החיבור יעביר מחדש את הבקשה, ואז הקריאה החוזרת תתבצע על ידי קריאה חוזרת (callback). האפשרות הזו חשובה אם משאבים אינם זמינים כרגע לקבלת החיבור, אבל ייתכן שהם יהיו זמינים כשעמית החיבור יעביר את הניסיון ליצירת החיבור. שנית, אם האפליקציה מחזירה 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_NORMAL).
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
otTcpמנותקים
enum otTcpDisconnectedReason otTcpDisconnectedReason
OTTcpendpoint
struct otTcpEndpoint otTcpEndpoint
otTcpendpointizeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
המבנה הזה מכיל ארגומנטים לפונקציה otTcpendpointize().
אישור OTTcp
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
קריאה חוזרת זו מודיעה לאפליקציה שלחיצת היד של TCP תלת-כיוונית הושלמה ושחיבור זה נוצר.
פרטים | |||
---|---|---|---|
פרמטרים |
|
OTTcpProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
הקריאה החוזרת הזו מודיעה לאפליקציה אם בוצעה התקדמות בהעברת נתונים ממאגר הנתונים הזמני לנמען.
הקריאה החוזרת הזו אינה נחוצה לפעולה נכונה של TCP. רוב האפליקציות יכולות להסתמך רק על הקריאה החוזרת ( tTcpSendDone() כדי לטעון מחדש מאגרים זמניים לאחר שמקבץ ה-TCP יסתיים באמצעותם. המטרה של הקריאה החוזרת הזו היא לתמוך באפליקציות מתקדמות שנהנות ממידע מפורט יותר על האופן שבו החיבור מתקדם קדימה בהעברת נתונים לאפליקציות דומות.
פעולת הקריאה החוזרת הזו קשורה בקשר הדוק לשליחת השליחה של TCP'. ניתן להבין את מאגר הנתונים הזמני בתור שני אזורים. קודם כל, יש את האזור "in-flight" בחלק העליון (הקדמי) של מאגר השליחה. הוא מתייחס לנתונים שנשלחו לנמען אך עדיין לא אושרו. שנית, יש את האזור "backlog" הכולל את כל הנתונים במאגר הנתונים הזמני, שאינם נמצאים באזור "בטיסה". האזור "backlog" תואם לנתונים שממתינים בתור לשליחה, אבל עדיין לא נשלחו.
הקריאה החוזרת מופעלת בתגובה לשני סוגי אירועים. ראשית, האזור של "in-flight" במאגר הנתונים הזמני עשוי להתכווץ (למשל, כשהנמען מאשר נתונים ששלחנו קודם לכן). שנית, האזור של "backlog" עשוי להתכווץ (למשל, נשלחו נתונים חדשים). שני התנאים האלה מתרחשים בו-זמנית, בתגובה לפלח ACK מהעמיתים כמוך. לכן הם משולבים בהתקשרות אחת חוזרת.
מחסנית ה-TCP משתמשת רק ב-aInSendBuffer
בייטים בזנב של מאגר השליחה. כאשר aInSendBuffer
מוקטן בסכום של x, המשמעות היא ש-x בייטים נוספים שבעבר היו בחלק העליון של מאגר השליחה, לא נכללים יותר במאגר השליחה (כלומר, מוחלפים) על ידי האפליקציה. הערה: אפשר לשחזר את המבנה של otLinkedBuffer רק אחרי שכל הבייטים שהוא מפנה אליהם כבר לא נמצאים במאגר הנתונים הזמני של השליחה.
הקריאה החוזרת (callback) הזו יוצאת מנקודת הנחה ש-otTcpSendDone() , במשמעות הבאה: אפליקציות יכולות לקבוע מתי יש צורך במאגר נתונים זמני על ידי השוואה בין aInSendBuffer
לבין מספר הבייטים בכל מאגר מקושר. עם זאת, אנחנו צופים ש-otTcpSendDone(), שמעביר ישירות את הפרמטרים ש-OTLinkedBuffers יכול לדרוש, יהיה קל יותר לשימוש. אם שתי הקריאות החוזרות נרשמות ומופעלות על ידי אותו אירוע (למשל, אותו פלח ACK התקבל), קריאה חוזרת (otTcpSendDone() תופעל תחילה ולאחר מכן הקריאה החוזרת הזו.
בנוסף, הקריאה החוזרת הזו מספקת aBacklog
, המציינת כמה בייטים של נתונים במאגר הנתונים הזמני עדיין לא נמצאים בטיסה. במקרה של אפליקציות שרוצים להוסיף נתונים למאגר הנתונים הזמני רק כשיש הבטחה לשליחתן בקרוב, מומלץ לשלוח נתונים רק כאשר הערך של aBacklog
קטן (0 או קרוב ל-0). לדוגמה, אפליקציה עשויה להשתמש ב-aBacklog
כדי להגיב לצבירת נתונים על ידי שחרור או צבירת נתונים כדי להימנע מצבירת נתונים.
לאחר קריאה ל-otTcpSendByReference() או ל-otTcpSendByExtension() עם מספר חיובי של בייטים, המערכת תחזיר את הקריאה החוזרת (otTcpforwardProgress()) כדי לציין מתי הבייטים שנוספו למאגר הנתונים יישלחו. ניתן לבצע את הקריאה ל-otTcpforwardProgress() מיד לאחר הוספת הבייטים למאגר השליחה (אם חלק מבייטים אלה נשלחים מיד, מפחיתים את הלו"ז) או בעתיד בעתיד (לאחר שהחיבור ישלח חלק מהנתונים או את כולם, ויפחית את הלו"ז). הביטוי "באופן מיידי," אנחנו קובעים שהשיחה החוזרת תבוצע באופן מיידי במשימה. כדי להימנע ממורכבות הקשורה למערך החזרות, הקריאה החוזרת (otTcpforwardProgress()) אף פעם לא נקראת ישירות מהפונקציות otTcpSendByReference() או otTcpSendByExtension() .
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
otTcpInboundConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
הספירה הזו מגדירה את פעולות החיבור הנכנסות.
ההגדרה הזו משמשת לקריאה חוזרת (callback) של otTcpAcceptReady() .
OTTcpListener
struct otTcpListener otTcpListener
otTcpListenererizeArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
המבנה הזה מכיל ארגומנטים לפונקציה otTcpListenerfirstize() .
otTcpreceipt זמין
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
קריאה חוזרת זו מציינת את מספר הבייטים הזמינים לצריכה במאגר הנתונים הזמני.
הוא ייקרא בכל פעם שבייטים יצורפו למאגר הנתונים שהתקבלו וכשיגיע סוף השידור. אם הגעת לסוף השידור (כלומר, אם לא יהיו נתונים נוספים לקריאה כי העמית לחיבור סגר את סיום החיבור לכתיבה), aEndOfStream
הוא TRUE. לבסוף, aBytesRemaining
מציין את הקיבולת שנותרה במאגר הנתונים הזמני כדי לשמור נתונים נוספים שיגיעו.
פרטים | |||||||||
---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
OTTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
השיחה החוזרת הזו מיידעת את האפליקציה כי הנתונים בקובץ aData
שצוינו אושרו על ידי אפליקציות דומות, וש-aData
וגם הנתונים שהיא מכילה יכולים לקבל בחזרה את האפליקציה.
ה-aData
בטוח שהם זהים לאלו המועברים ל-TCP דרך otTcpSendByReference() , כולל תוספים שמופקים דרך otTcpSendByExtension() .
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
פונקציות
OTTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
מאלץ את חיבור ה-TCP המשויך לנקודת הקצה הזו של TCP.
כך, נקודת הקצה של TCP תוצג בחינם לשימוש בחיבור אחר ותריק את השליחה והקבלה של מאגרי נתונים, העברת הבעלות על כל הנתונים שסופקה על ידי האפליקציה בקריאות otTcpSendByReference() ו-otTcpSendByExtension() . הקריאה החוזרת (callbacks) והזיכרון של מאגר הקבלה של TCP משויכים לנקודת הקצה של TCP.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
OTTCPBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
מחייבת את נקודת הקצה של TCP לכתובת IP וליציאה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpCommitGet
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
מקבצים על מחסנית ה-TCP שהאפליקציה סיים לעבד aNumBytes
בייטים של נתונים בתחילת מאגר הנתונים הזמני, ושאין צורך להמשיך בערימת ה-TCP במאגרים האלה.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
OTTCPConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
הקלטת המארח והיציאה המרוחקים בחיבור הזה.
בשימוש כברירת מחדל, נעשה שימוש ב-TCP מהירים. משמעות הדבר היא שהפונקציה הזו מתעדת רק את המארח והיציאה המרוחקים, ושלחיצת היד של חיבור ה-TCP מתרחשת רק בקריאה הראשונה ל-otTcpSendByReference() . ניתן להשבית במפורש את TCP Quick Open באמצעות aFlags
, ובמקרה כזה הפעלת לחיצת היד של חיבור TCP תתבצע באופן מיידי.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
otTcpendpointDefirstize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
מאתחל את נקודת הקצה הזו של TCP.
פירוש הדבר הוא ש-OpenThread כבר לא עוקב אחרי נקודת הקצה הזו ב-TCP, ומאתר את כל המשאבים שהוקצו להם עבור נקודת הקצה הזו ב-TCP. האפליקציה יכולה להשתמש שוב בזיכרון של נקודת הקצה TCP לפי הצורך.
אם היא תואמת לחיבור TCP פעיל, החיבור מסתיים ללא טקסיות (כמו ב-otTcpAbort()). כל המשאבים שהאפליקציה סיפקה עבור נקודת הקצה הזו ב-TCP (מאגרים במאגר עבור מאגר הנתונים הזמני, זיכרון עבור מאגר הנתונים aEndpoint
וכו') מוחזרים מיד לאפליקציה.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
OTTcpendpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
קבלת מצביע ההקשר המשויך ל-aEndpoint
בזמן האתחול.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
מצביע ההקשר המשויך ל-
aEndpoint . |
otTcpendpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
מקבל את ה-OTInstance שמשויך ל-aEndpoint
בזמן האתחול.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
מצביע ה-otInstance המשויך ל-
aEndpoint . |
OTTcpEndpointize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
מפעיל נקודת קצה ב-TCP.
קריאה לפונקציה הזו גורמת ל-OpenThread לעקוב אחרי נקודת הקצה של TCP ולאחסן ולאחזר נתוני TCP בתוך aEndpoint
. עליך להימנע מהאפליקציה לגשת לשדות ב-aEndpoint
או לשנות אותם ישירות. אם האפליקציה צריכה לקבל חזרה את הגיבוי של זיכרון aEndpoint
, היא צריכה לקרוא ל-otTcpendpointDefirstize().
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
OTTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
מקבלת מצביע לנקודת קצה (TCP) ולנקודת יציאה מקומיות של TCP.
ייתכן שהתכנים של המארח והיציאה לא עדכניים, אם השקע הזה לא נמצא במצב מחובר ולא נחסם לאחר הניתוק האחרון.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
המארח המקומי והיציאה המקומית של
aEndpoint . |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
מקבל מצביע לנקודת קצה ויציאה של TCP&33.
ייתכן שהתכנים של המארח והיציאה לא עדכניים, אם השקע הזה לא במצב מחובר.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
המארח והיציאה של אפליקציית החיבור ל-
aEndpoint . |
OTTcpListen
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
גורם לחיבורי TCP נכנסים שתואמים לכתובת ה-IP וליציאה שצוינו, כדי להפעיל את הקריאות החוזרות של האזנה ל-TCP'
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpListenerDefirstize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
מאתחל את מאזין ה-TCP הזה.
פירוש הדבר הוא ש-OpenThread כבר לא עוקב אחר המאזינים של ה-TCP האלה ומאתר את כל המשאבים שהוקצה להם על ידי ה-TCP הזה. האפליקציה יכולה להשתמש שוב בזיכרון של גיבוי המאזינים ל-TCP לפי הצורך.
אם מאזין ל-TCP מאזין להאזנה, הוא יפסיק להאזין.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
קבלת מצביע ההקשר המשויך ל-aListener
בזמן האתחול.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
מצביע ההקשר המשויך ל-
aListener . |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
מקבל את ה-OTInstance שמשויך ל-aListener
בזמן האתחול.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
מצביע ה-otInstance המשויך ל-
aListener . |
otTcpListenerstarter
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
מאתחל פונקציות מסוג listener של TCP.
קריאה לפונקציה הזו גורמת ל-OpenThread לעקוב אחר המאזינים של ה-TCP ולאחסן ולאחזר נתוני TCP בתוך aListener
. עליך להימנע מהאפליקציה לגשת לשדות ב-aListener
או לשנות אותם ישירות. אם האפליקציה צריכה לקבל חזרה את זיכרון הגיבוי aListener
, היא צריכה לקרוא ל-otTcpListenerDefirstize().
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
otTcpGetByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
מספק לאפליקציה שרשרת מאגר של מאגר בין נתונים המכילים הפניה לנתונים שנמצאים כרגע ב-TCP, מאגר נתונים זמני.
שרשרת הפסקה המקושרת בתוקף עד שה- " ReadyReady" הקריאה החוזרת תופעל, או עד לקריאה הבאה אל otTcpGetContiguify() או otTcpCommitGet() .
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpGetContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
ארגון מחדש של מאגר הנתונים הזמני יהיה בזיכרון רציף לחלוטין.
הפעולה הזאת אופציונלית. אפשר להשתמש באפליקציה כדי לעבור לשרשרת המאגר המקושרת של otTcpReceiveByReference
. אפליקציות מסוימות עשויות לקרוא לפונקציה הזו כדי שמאגר הנתונים של מאגר הנתונים יהיה רציף כדי לפשט את עיבוד הנתונים, אבל זה לבוא על חשבון הזמן של המעבד לסידור מחדש של הנתונים במאגר הנתונים הזמני.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
מוסיף נתונים למאגר הנתונים הזמני על ידי הארכת משך הזמן הסופי של otLinkedBuffer במאגר הנתונים הזמני, בסכום שצוין.
אם מאגר הנתונים הזמני של השליחה ריק, הפעולה תיכשל.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
מוסיף למאגר הנתונים נתונים שאליהם מופנה מאגר הנתונים המקושרים. מצביע על כך aBuffer
.
לאחר קריאה מוצלחת לפונקציה הזו, מאגר הנתונים והנתונים המקושרים שהיא מפנה אליהם נמצאים בבעלות מחסנית ה-TCP; אין לשנות אותם באמצעות האפליקציה עד ש-"שליחת סיום&&; קריאה חוזרת (callback) תחזיר בעלות על האובייקטים האלה לאפליקציה. ניתן להפעיל את הפונקציה הזו כדי להוסיף למאגר 'הבאים בתור' שליחת מאגר זמני נוסף, גם אם הקריאה לפעולה הקודמת עדיין לא הופעלה.
לתשומת ליבכם, אין ליצור שרשרת של aBuffer
. השדה mNext צריך להיות NULL. אם נתונים נוספים יתווספו מיד לאחר השיחה, יש להשתמש בסימון OT_TCP_SEND_MORE_TO_COME כרמז להטמעה של TCP.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכי החזרה |
|
OTTCPSendOfOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
מודיע לעמית החיבור שנקודת הקצה הזו של TCP לא תשלח נתונים נוספים.
יש להשתמש באפשרות הזו אם לאפליקציה אין יותר נתונים לשליחה לקבוצת האפליקציות להשוואה. בהקשר של החיבור הזה, הקראה עתידית של אפליקציית העמיתים לחיבור תגרום לתנאים של "סיום הסטרימינג" וכתיבה עתידית בנקודת הקצה של החיבור תיכשל.
התנאי "end of Stream" חל רק לאחר שנתונים שסופקו בעבר למקבץ ה-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 368
הערכים OT_TCP_ENDpoint_TCB_SIZE_BASE ו-OT_TCP_ENDpoint_TCB_NUM_PointERS זמינים כך שלשדה mTcb של otTcpendpoint יש גודל זהה למבנה tcpcb ב-TCPlp.
הדרישה הזו הכרחית כי השדה mTcb למרות שהאטימות להצהרה שלו נחשב כ-tcpc b בהטמעת ה-TCP.
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 נבחרו, כך שלשדה mTcbListener של otTcpListener יש אותו גודל כמו מבנה tcpcb_listen ב-TCPlp.
הדרישה הזו הכרחית כי השדה mTcbListen, למרות שהוא אטום בהודעה, נחשב כ-tcpcb במבנה של ה-TCP.
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2599
גודל מומלץ של אחסון במאגר נתונים זמני עבור חיבורי TCP שיש בהם כ-3 דילוגים אלחוטיים או פחות.
בפלטפורמות שבהן הזיכרון מוגבל במיוחד ובמצבים שבהם אין צורך ברוחב פס גדול, מומלץ לבחור באופן ידני גודל מאגר קטן יותר.
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4158
גודל מומלץ של אחסון במאגר נתונים זמני עבור חיבורי TCP שחוצים דילוגים אלחוטיים רבים.
אם חיבור ה-TCP עובר מספר גדול מאוד של דילוגים (יותר מ-6 בערך), ייתכן שיהיה כדאי לבחור גודל מאגר גדול.
משאבים
נושאי עזר של OpenThread API מגיעים מקוד המקור, שזמין ב-GitHub. למידע נוסף או כדי להוסיף מידע למסמכים שלנו, יש לעיין במשאבים.