TCP Soyutlamaları
Bu modülde, temel TCP API'nin üzerinde, kullanımı kolay soyutlamalar yer almaktadır.
Özet
Sıralamalar |
|
---|---|
anonymous enum
|
enumotTcpCircularSendBufferWrite öğesine iletilen işaretleri tanımlar. |
Türdefler |
|
---|---|
otTcpCircularSendBuffer
|
typedefstruct otTcpCircularSendBuffer
TCP uç noktasıyla kullanılacak dairesel gönderme arabelleğini temsil eder. |
otTcpEndpointAndCircularSendBuffer
|
typedef mbedtls_ssl_set_bio ile kullanılacak bağlam yapısı. |
İşlevler |
|
---|---|
otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
|
TCP dairesel gönderme arabelleğini başlatır ve ekliyse bunu çıkarır.
|
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
|
void
Döngüsel gönderme arabelleğindeki tüm verileri zorla siler.
|
otTcpCircularSendBufferGetFreeSpace(const otTcpCircularSendBuffer *aSendBuffer)
|
size_t
TCP dairesel gönderme arabelleğindeki boş alan miktarını döndürür.
|
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
|
void
otTcpForwardprogress geri çağırmasında döngüsel gönderme arabelleğine özgü işlem gerçekleştirir.
|
otTcpCircularSendBufferInitialize(otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity)
|
void
TCP dairesel gönderme arabelleği başlatır.
|
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags)
|
Arabelleğe almayı yönetmek için sağlanan TCP dairesel gönderme arabelleğini kullanarak TCP uç noktasında veri gönderir.
|
otTcpMbedTlsSslRecvCallback(void *aCtx, unsigned char *aBuf, size_t aLen)
|
int
Engellemeyen bir alma geri araması, mbedtls_ssl_set_bio öğesine iletmek için yapılır.
|
otTcpMbedTlsSslSendCallback(void *aCtx, const unsigned char *aBuf, size_t aLen)
|
int
mbedtls_ssl_set_bio adresine iletmek için engellenmeyen gönderme geri çağırması.
|
Yapılar |
|
---|---|
otTcpCircularSendBuffer |
TCP uç noktasıyla kullanılacak dairesel gönderme arabelleğini temsil eder. |
otTcpEndpointAndCircularSendBuffer |
mbedtls_ssl_set_bio ile kullanılacak bağlam yapısı. |
Sıralamalar
anonim sıralama
anonymous enum
otTcpCircularSendBufferWrite
öğesine iletilen işaretleri tanımlar.
Türdefler
otTcpCircularSendBuffer
struct otTcpCircularSendBuffer otTcpCircularSendBuffer
TCP uç noktasıyla kullanılacak dairesel gönderme arabelleğini temsil eder.
Döngüsel gönderme arabelleği kullanmak isteğe bağlıdır. Uygulamalar, otLinkedBuffers'ı doğrudan yöneterek veri göndermek için TCP uç noktası kullanabilir. Bununla birlikte, bazı uygulamalar döngüsel gönderme arabelleği kullanmayı daha uygun bulabilir. Bu tür uygulamalar, TCP uç noktasına dairesel bir gönderme arabelleği "eklemek" ve söz konusu TCP uç noktasından veri göndermek için otTcpCircularSendBufferWrite() işlevini çağırabilir ve temel otLinkedBuffers'ı yönetmek için döngüsel gönderme arabelleğinden yararlanır.
otTcpCircularSendBuffer, bir otTcpEndpoint tarafından sağlanan otLinkedBuffer tabanlı API'nin üzerine uygulanır. otTcpEndpoint'e eklendikten sonra, bağlantı için otLinkedBuffers'ı yönetme işlemlerinin tamamını otTcpCircularSendBuffer yürütür. Diğer bir deyişle, otTcpEndpoint'e bir otTcpCircularSendBuffer eklendiğinde, uygulama söz konusu otTcpEndpoint üzerinde otTcpSendByReference() veya otTcpSendByExtension() çağrısı yapmamalıdır. otTcpEndpoint Bunun yerine, uygulama, gönderme arabelleğine veri eklemek için otTcpCircularSendBufferWrite() işlevini kullanmalıdır.
otTcpForwardProgress() geri çağırması, kullanıcıların dairesel gönderme arabelleğinde alan kullanılabilir olduğunda bunu öğrenmesinin amaçlanan yoludur. otTcpCircularSendBuffer'ın eklendiği bir otTcpEndpoint öğesinin eklendiği otTcpEndpoint sisteminde uygulamanın, geri çağırma işlevinin başındaki ekli otTcpCircularSendBuffer üzerinde, ekli otTcpCircularSendBuffer üzerinden bir otTcpForwardProgress() geri çağırması yüklemesi ve otTcpCircularSendBufferHandleForwardProgress() işlevini çağırması ZORUNLUDUR. otLinkedBuffers'ın tüm yönetimi döngüsel gönderme arabelleği tarafından işlendiği için kullanıcının bir otTcpSendDone() geri çağırması YÜKLEMEMESİ önerilir.
Uygulama, bu yapının alanlarını doğrudan incelememelidir; yalnızca imzası bu dosyada sağlanan TCP Circular Send Buffer API işlevleri aracılığıyla etkileşimde bulunmalıdır.
otTcpEndpointAndCircularSendBuffer
struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer
mbedtls_ssl_set_bio ile kullanılacak bağlam yapısı.
İşlevler
otTcpCircularSendBufferDeinitialize
otError otTcpCircularSendBufferDeinitialize( otTcpCircularSendBuffer *aSendBuffer )
TCP dairesel gönderme arabelleğini başlatır ve ekliyse bunu çıkarır.
TCP dairesel gönderme arabelleği boş değilse bu işlem başarısız olur.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
otTcpCircularSendBufferForceDiscardAll
void otTcpCircularSendBufferForceDiscardAll( otTcpCircularSendBuffer *aSendBuffer )
Döngüsel gönderme arabelleğindeki tüm verileri zorla siler.
Bir TCP bağlantısı beklenmedik bir şekilde sonlandırıldığında (ör. uygulama otTcpEndpointAbort() çağrısı yaptığında veya otTcpConnectionLost() geri çağırmasıyla sıfırlanan bağlantı hakkında bilgilendirildiğinde) uygulamanın bu işlevi çağırması beklenir.
Bu işlevin, TCP uç noktasına eklenmiş boş olmayan bir TCP dairesel gönderme arabelleğinde çağrılması tanımlanmamış davranışla sonuçlanır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
otTcpCircularSendBufferGetFreeSpace
size_t otTcpCircularSendBufferGetFreeSpace( const otTcpCircularSendBuffer *aSendBuffer )
TCP dairesel gönderme arabelleğindeki boş alan miktarını döndürür.
Bu işlem her zaman başarılı olacak.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
Gönderme arabelleğindeki boş alan miktarı.
|
otTcpCircularSendBufferHandleForwardProgress
void otTcpCircularSendBufferHandleForwardProgress( otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer )
otTcpForwardprogress geri çağırmasında döngüsel gönderme arabelleğine özgü işlem gerçekleştirir.
Uygulamanın otTcpEndpoint ürününe bir otTcpForwardProgress() geri çağırması yüklemesi ve bu işlevi, döngüsel gönderme arabelleğe özgü işleme için geri çağırma işlevinin başında çağırması beklenir.
Geri çağırma işlevinde uygulama, otTcpCircularSendBufferFreeSpace() çağrısı yaparak veya aInSendBuffer
değerini otTcpCircularSendBufferInitialize() çağırırken kullanıcı tarafından seçilen gönderme arabelleği kapasitesiyle karşılaştırarak dairesel gönderme arabelleğindeki boş alan miktarını belirleyebilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
otTcpCircularSendBufferInitialize
void otTcpCircularSendBufferInitialize( otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity )
TCP dairesel gönderme arabelleği başlatır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
otTcpCircularSendBufferWrite
otError otTcpCircularSendBufferWrite( otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags )
Arabelleğe almayı yönetmek için sağlanan TCP dairesel gönderme arabelleğini kullanarak TCP uç noktasında veri gönderir.
Bu işlev çağrıldıktan sonra aSendBuffer
ve aEndpoint
birbirine "eklenmiş" kabul edilir. Ekli durumdayken aEndpoint
için TÜM gönderme işlemleri aSendBuffer
kullanılarak yapılmalı ve aSendBuffer
üzerindeki TÜM işlemler aEndpoint
ile ilişkilendirilmelidir .
TCP dairesel gönderme arabelleğini ve TCP uç noktasını "ayırmanın" tek yolu, gönderme arabelleğinin tamamen boş kalmasını beklemektir. Bu durum iki şekilde gerçekleşebilir: (1) gönderme arabelleğindeki tüm veriler, TCP protokolü işlemi normal akışında gönderilir ve onaylanır veya (2) bağlantı sonlandırılır.
Önerilen kullanım kalıbı, TCP uç noktasıyla tek bir TCP dairesel gönderme arabelleği kullanmak ve bu TCP uç noktasındaki verileri yalnızca ilişkili TCP döngüsel arabelleği aracılığıyla göndermektir. Bu önerilen kullanım kalıbı, her zaman bir TCP uç noktası ve TCP döngüsel gönderme arabelleği kullanarak yukarıda açıklanan sorunları azaltır.
Döngüsel gönderme arabelleği kapasiteye ulaşırsa dairesel gönderme arabelleğine yalnızca sağlanan verilerin bir ön eki kopyalanır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
otTcpMbedTlsSslRecvCallback
int otTcpMbedTlsSslRecvCallback( void *aCtx, unsigned char *aBuf, size_t aLen )
Engellemeyen bir alma geri araması, mbedtls_ssl_set_bio öğesine iletmek için yapılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
İadeler |
Alınan bayt sayısı veya bir mbedtls hata kodu.
|
otTcpMbedTlsSslSendCallback
int otTcpMbedTlsSslSendCallback( void *aCtx, const unsigned char *aBuf, size_t aLen )
mbedtls_ssl_set_bio adresine iletmek için engellenmeyen gönderme geri çağırması.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
İadeler |
Gönderilen bayt sayısı veya bir mbedtls hata kodu.
|
Kaynaklar
OpenThread API Referans konuları, GitHub'da bulunan kaynak koddan gelir. Daha fazla bilgi edinmek veya dokümanlarımıza katkıda bulunmak için Kaynaklar bölümüne bakın.