הסכמות ב-TCP
המודול הזה כולל הפשטות קלות לשימוש בנוסף ל-TCP API הבסיסי.
סיכום
מספור |
|
---|---|
anonymous enum
|
טיפוסים בני מנייה (enum) מגדיר סימונים שהועברו אל otTcpCircularSendBufferWrite . |
סוג שגיאות |
|
---|---|
otTcpCircularSendBuffer
|
typedefstruct otTcpCircularSendBuffer
מייצגת אחסון זמני בעיגול לשימוש עם נקודת קצה TCP. |
otTcpEndpointAndCircularSendBuffer
|
typedef מבנה הקשר לשימוש עם mbedtls_ssl_set_bio. |
פונקציות |
|
---|---|
otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
|
מפעילה מחדש אחסון זמני לשליחה מעגלית של TCP, ומנתקת אותו אם הוא מצורף.
|
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
|
void
מאלץ אילוץ של כל הנתונים במאגר הנתונים הזמני של השליחה.
|
otTcpCircularSendBufferGetFreeSpace(const otTcpCircularSendBuffer *aSendBuffer)
|
size_t
מחזירה את כמות המקום הפנוי במאגר הנתונים הזמני של מעגלי TCP.
|
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
|
void
מבצעת טיפול ספציפי מעגלי-send-buffer בקריאה החוזרת (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
קריאה חוזרת (callback) ללא חסימה היא העברה ל-mbedtls_ssl_set_bio.
|
otTcpMbedTlsSslSendCallback(void *aCtx, const unsigned char *aBuf, size_t aLen)
|
int
ביטול הקריאה החוזרת (callback) כדי לא לעבור אל mbedtls_ssl_set_bio.
|
מבנים |
|
---|---|
otTcpCirularSendBuffer |
מייצגת אחסון זמני בעיגול לשימוש עם נקודת קצה TCP. |
otTcpEndpointAndCirularSendBuffer |
מבנה הקשר לשימוש עם mbedtls_ssl_set_bio. |
מספור
טיפוס אנונימי
anonymous enum
מגדיר סימונים שהועברו אל otTcpCircularSendBufferWrite
.
סוג שגיאות
otTcpCirularSendBuffer
struct otTcpCircularSendBuffer otTcpCircularSendBuffer
מייצגת אחסון זמני בעיגול לשימוש עם נקודת קצה TCP.
השימוש במאגר נתונים זמני הוא אופציונלי. אפליקציות יכולות להשתמש בנקודת קצה של TCP כדי לשלוח נתונים על ידי ניהול ישיר של otLinkedBuffers. עם זאת, בחלק מהאפליקציות יותר קל יותר ליצור מאגר אחסון זמני מעגלי. אפליקציות כאלה יכולות לבצע קריאה ל-otTcpCirularSendBufferWrite() כדי "לחבר" אחסון זמני מעגלי לנקודת קצה של TCP ולשלוח נתונים בנקודת הקצה הזו של TCP, תוך הסתמכות על המאגר הזמני של שליחת הנתונים כדי לנהל את ה-otLinkedBuffers.
הפרמטר otTcpCirularSendBuffer מוטמע בנוסף ל-API המבוסס על otLinkedBuffer ומסופק על ידי otTcpEndpoint. לאחר החיבור אל otTcpEndpoint, otTcpCirularSendBuffer מבצע את כל העבודה על ניהול otLinkedBuffer עבור החיבור. כלומר, אחרי חיבור של otTcpCirularSendBuffer אל otTcpEndpoint, אסור להפעיל את האפליקציה otTcpSendByReference() או otTcpSendByExtension() ב-otTcpEndpoint. במקום זאת, האפליקציה צריכה להשתמש בפונקציה otTcpCirularSendBufferWrite() כדי להוסיף נתונים למאגר הנתונים להעברה.
הקריאה החוזרת (callback) של otTcpForwardProgress() היא הדרך הרצויה עבור המשתמשים ללמוד מתי יש מקום פנוי במאגר הנתונים הזמני של השליחה. ב-otTcpEndpoint שאליו מצורף otTcpCirularSendBuffer, האפליקציה חייבת להתקין callTcpForwardProgress() ולחזור על הקריאה לפעולה otTcpCirularSendBufferHandleForwardProgress() ב-otTcpCirularSendBuffer בתחילת פונקציית הקריאה החוזרת. מומלץ שהמשתמש לא יתקין קריאה חוזרת (callback) מסוג otTcpSendDone(), כי כל הניהול של otLinkedBuffers מטופל על ידי האחסון הזמני העגול.
האפליקציה לא צריכה לבדוק ישירות את השדות של המבנה הזה, אלא רק לבצע איתו פעולות באמצעות פונקציות ה-API של מעגלי TCP Buffer, שהחתימה שלהן מסופקת בקובץ הזה.
otTcpEndpointAndCirularSendBuffer
struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer
מבנה הקשר לשימוש עם mbedtls_ssl_set_bio.
פונקציות
otTcpCirularSendBufferDeinitialize
otError otTcpCircularSendBufferDeinitialize( otTcpCircularSendBuffer *aSendBuffer )
מפעילה מחדש אחסון זמני לשליחה מעגלית של TCP, ומנתקת אותו אם הוא מצורף.
אם מאגר השליחה העגולה של TCP לא ריק, הפעולה תיכשל.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
ערכי החזרה |
|
otTcpCirularSendBufferForceDiscardAll
void otTcpCircularSendBufferForceDiscardAll( otTcpCircularSendBuffer *aSendBuffer )
מאלץ אילוץ של כל הנתונים במאגר הנתונים הזמני של השליחה.
האפליקציה צפויה לקרוא לפונקציה הזו כשחיבור TCP מסתיים ללא משמעות (למשל, אם האפליקציה מתקשרת ל-otTcpEndpointAbort() או שמתקבלת הודעה על חיבור מאופס דרך הקריאה החוזרת (otTcpConnectionLost()).
קריאת הפונקציה הזו לעיגול זמני של TCP לשליחה מעגלית שאינה מצורפת לנקודת קצה של TCP, מובילה להתנהגות לא מוגדרת.
פרטים | |||
---|---|---|---|
פרמטרים |
|
otTcpCirularSendBufferGetFreeSpace
size_t otTcpCircularSendBufferGetFreeSpace( const otTcpCircularSendBuffer *aSendBuffer )
מחזירה את כמות המקום הפנוי במאגר הנתונים הזמני של מעגלי TCP.
הפעולה הזו תמיד תצליח.
פרטים | |||
---|---|---|---|
פרמטרים |
|
||
החזרות |
כמות המקום הפנוי במאגר הנתונים הזמני.
|
otTcpCirularSendBufferHandleForwardProgress
void otTcpCircularSendBufferHandleForwardProgress( otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer )
מבצעת טיפול ספציפי מעגלי-send-buffer בקריאה החוזרת (otTcpForwardProgress).
האפליקציה אמורה להתקין קריאה חוזרת (callback) מסוג otTcpForwardProgress() ב-otTcpEndpoint, ולקריאה לפונקציה הזו בתחילת פונקציית הקריאה החוזרת, לעיבוד ספציפי לעיגול-שליחה-במאגר.
בפונקציית הקריאה החוזרת, האפליקציה יכולה לקבוע את כמות המקום הפנוי במאגר הנתונים הזמני של השליחה הזמנית על ידי קריאה ל-otTcpCirularSendBufferFreeSpace(), או על ידי השוואה בין aInSendBuffer
לקיבולת של האחסון הזמני של המשתמש, שנבחרה על ידי המשתמש שקורא ל-otTcpCirularSendBufferinitialize().
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
otTcpCirularSendBufferInitialize
void otTcpCircularSendBufferInitialize( otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity )
הפעלה של אחסון זמני בעיגול של TCP.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
otTcpCirularSendBufferWrite
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
.
הדרך היחידה "לנתק" אחסון זמני של מעגלי TCP ונקודת קצה של TCP היא להמתין עד שמאגר השליחה יהיה ריק לחלוטין. יש שתי דרכים לעשות זאת: (1) כל הנתונים במאגר הנתונים הזמני נשלחים ואושרים בדרך הרגילה של פעולת פרוטוקול TCP, או (2) החיבור מופסק.
דפוס השימוש המומלץ הוא להשתמש במאגר זמני של TCP עם נקודת קצה (endpoint) של TCP, ולשלוח נתונים בנקודת הקצה הזו של TCP רק דרך המאגר הזמני העגול של TCP. דפוס השימוש המומלץ הזה מבטל את הבעיות המתוארות למעלה, על ידי שימוש תמיד בנקודת קצה של TCP ובמאגר בקרה זמני ל-TCP.
אם האחסון הזמני העגול מגיע לקיבולת, רק קידומת של הנתונים שסופקו מועתקת למאגר הנתונים העגול של השליחה.
פרטים | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||||||
ערכי החזרה |
|
otTcpMbedTlsSslRecvCallback
int otTcpMbedTlsSslRecvCallback( void *aCtx, unsigned char *aBuf, size_t aLen )
קריאה חוזרת (callback) ללא חסימה היא העברה ל-mbedtls_ssl_set_bio.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
החזרות |
מספר הבייטים שהתקבלו או קוד שגיאה של mbedtls.
|
otTcpMbedTlsSslSendCallback
int otTcpMbedTlsSslSendCallback( void *aCtx, const unsigned char *aBuf, size_t aLen )
ביטול הקריאה החוזרת (callback) כדי לא לעבור אל mbedtls_ssl_set_bio.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
החזרות |
מספר הבייטים שנשלחו או קוד שגיאה של mbedtls.
|
משאבים
הנושאים של קובצי העזר של OpenThread API מגיעים מקוד המקור, והם זמינים ב-GitHub. למידע נוסף או כדי לתרום למסמכי התיעוד שלנו, יש לעיין בקטע משאבים.