TCP Soyutlamaları

Bu modülde, temel TCP API'nin üzerinde, kullanımı kolay soyutlamalar yer almaktadır.

Özet

Sıralamalar

anonymous enum enum
otTcpCircularSendBufferWrite öğesine iletilen işaretleri tanımlar.

Türdefler

otTcpCircularSendBuffer typedef
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
[in] aSendBuffer
İlk kullanıma hazırlamak için TCP dairesel gönderme arabelleği.
Döndürülen Değerler
OT_ERROR_NONE
TCP dairesel gönderme arabelleği başarıyla başlatıldı.
OT_ERROR_BUSY
Dairesel arabellek veri içerir ve ilk başlatılamaz.

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
[in] aSendBuffer
Verileri silinecek olan TCP dairesel gönderme arabelleği.

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
[in] aSendBuffer
TCP dairesel gönderme arabelleğini gösteren ve döndürülecek boş alan miktarı.
İ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
[in] aSendBuffer
otTcpForwardProgress() işleminin çağrıldığı uç nokta için TCP dairesel gönderme arabelleğini gösteren işaretçi.
[in] aInSendBuffer
otTcpForwardProgress() geri çağırmaya aInSendBuffer değeri iletildi.

otTcpCircularSendBufferInitialize

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

TCP dairesel gönderme arabelleği başlatır.

Ayrıntılar
Parametreler
[in] aSendBuffer
TCP dairesel gönderme arabelleğinin başlatılması için işaretçi.
[in] aDataBuffer
TCP dairesel gönderme arabelleğinde veri depolamak için kullanılacak belleğe işaret eden bir işaretçi.
[in] aCapacity
TCP dairesel gönderme arabelleğinin bayt cinsinden kapasitesi. aDataBuffer ile belirtilen belleğin boyutuna eşit olmalıdır.

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
[in] aEndpoint
Verilerin gönderileceği TCP uç noktası.
[in] aSendBuffer
Verilerin kopyalanacağı TCP dairesel gönderme arabelleği.
[in] aData
TCP dairesel gönderme arabelleğine kopyalanacak veri işaretçisi.
[in] aLength
TCP dairesel gönderme arabelleğine kopyalamak için aData tarafından işaret edilen verilerin uzunluğu.
[out] aWritten
Gönderme arabelleğine kopyalanan veri miktarıyla doldurulur. Gönderme arabelleği kapasiteye ulaşırsa bu sayı en fazla aLength olabilir.
[in] aFlags
Bu işlemle ilgili seçenekleri belirten işaretler (yukarıdaki numaralandırmaya bakın).
Döndürülen Değerler
OT_ERROR_NONE
Veriler gönderme arabelleğine başarıyla kopyalandı ve TCP uç noktasında gönderildi.
OT_ERROR_FAILED
TCP uç noktasında veri gönderilemedi.

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
[in] aCtx
[out] aBuf
Verilerin alınacağı tampon.
[in] aLen
Alınabilecek maksimum veri miktarı.
İ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
[in] aCtx
[in] aBuf
Gönderme arabelleğine eklenecek veriler.
[in] aLen
Gönderme arabelleğine eklenecek veri miktarı.
İ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.