Abstractions TCP
Ce module inclut des abstractions faciles à utiliser en plus de l'API TCP de base.
Résumé
Énumérations |
|
---|---|
anonymous enum
|
enum Définit les indicateurs transmis à otTcpCircularSendBufferWrite . |
Typedefs |
|
---|---|
otTcpCircularSendBuffer
|
typedefstruct otTcpCircularSendBuffer
Représente un tampon d'envoi circulaire à utiliser avec un point de terminaison TCP. |
otTcpEndpointAndCircularSendBuffer
|
typedef Structure de contexte à utiliser avec mbedtls_ssl_set_bio. |
distantes |
|
---|---|
otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
|
Désinitialise un tampon d'envoi circulaire TCP et le dissocie s'il est associé.
|
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
|
void
Elle supprime de force toutes les données du tampon d'envoi circulaire.
|
otTcpCircularSendBufferGetFreeSpace(const otTcpCircularSendBuffer *aSendBuffer)
|
size_t
Renvoie la quantité d'espace disponible dans le tampon d'envoi circulaire TCP.
|
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
|
void
Effectue un traitement spécifique au tampon d'envoi circulaire dans le rappel otTcpForwardProgress.
|
otTcpCircularSendBufferInitialize(otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity)
|
void
Initialise un tampon d'envoi circulaire TCP.
|
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags)
|
Envoie des données sur un point de terminaison TCP à l'aide du tampon d'envoi circulaire TCP fourni pour gérer la mise en mémoire tampon.
|
otTcpMbedTlsSslRecvCallback(void *aCtx, unsigned char *aBuf, size_t aLen)
|
int
Rappel de réception non bloquant à transmettre à mbedtls_ssl_set_bio.
|
otTcpMbedTlsSslSendCallback(void *aCtx, const unsigned char *aBuf, size_t aLen)
|
int
Envoi non bloquant d'un rappel à transmettre à mbedtls_ssl_set_bio.
|
Structs |
|
---|---|
otTcpCircularSendBuffer |
Représente un tampon d'envoi circulaire à utiliser avec un point de terminaison TCP. |
otTcpEndpointAndCircularSendBuffer |
Structure de contexte à utiliser avec mbedtls_ssl_set_bio. |
Énumérations
énumération anonyme
anonymous enum
Définit les indicateurs transmis à otTcpCircularSendBufferWrite
.
Typedefs
otTcpCircularSendBuffer
struct otTcpCircularSendBuffer otTcpCircularSendBuffer
Représente un tampon d'envoi circulaire à utiliser avec un point de terminaison TCP.
L'utilisation d'un tampon d'envoi circulaire est facultative. Les applications peuvent utiliser un point de terminaison TCP pour envoyer des données en gérant directement otLinkedBuffers. Cependant, certaines applications peuvent trouver plus pratique d'avoir un tampon d'envoi circulaire ; elles peuvent appeler otTcpCircularSendBufferWrite() pour "associer" un tampon d'envoi circulaire à un point de terminaison TCP et envoyer des données sur ce point de terminaison TCP, en s'appuyant sur le tampon d'envoi circulaire pour gérer les otLinkedBuffers sous-jacents.
otTcpCircularSendBuffer est implémenté sur l'API basée sur otLinkedBuffer fournie par un otTcpEndpoint. Une fois associé à un otTcpEndpoint, un otTcpCircularSendBuffer effectue toutes les tâches de gestion des otLinkedBuffers pour la connexion. Cela signifie que, une fois qu'un otTcpCircularSendBuffer est associé à un otTcpEndpoint, l'application ne doit pas appeler otTcpSendByReference() ou otTcpSendByExtension() sur cet otTcpEndpoint. L'application doit utiliser otTcpCircularSendBufferWrite() pour ajouter des données au tampon d'envoi.
Le rappel otTcpForwardProgress() est destiné aux utilisateurs pour savoir quand de l'espace devient disponible dans le tampon d'envoi circulaire. Sur un otTcpEndpoint auquel est associé un otTcpCircularSendBuffer, l'application DOIT installer un rappel otTcpForwardProgress() et appeler otTcpCircularSendBufferHandleForwardProgress() sur l'otTcpCircularSendBuffer associé au début de la fonction de rappel. Il est recommandé à l'utilisateur de NE PAS installer de rappel otTcpSendDone(), car toute la gestion de otLinkedBuffers est gérée par le tampon d'envoi circulaire.
L'application ne doit pas inspecter directement les champs de cette structure. Elle ne doit interagir avec elle que via les fonctions de l'API TCP Circular Send Buffer dont la signature est fournie dans ce fichier.
otTcpEndpointAndCircularSendBuffer
struct otTcpEndpointAndCircularSendBuffer otTcpEndpointAndCircularSendBuffer
Structure de contexte à utiliser avec mbedtls_ssl_set_bio.
distantes
otTcpCircularSendBufferDeinitialize
otError otTcpCircularSendBufferDeinitialize( otTcpCircularSendBuffer *aSendBuffer )
Désinitialise un tampon d'envoi circulaire TCP et le dissocie s'il est associé.
Si le tampon d'envoi circulaire TCP n'est pas vide, cette opération échouera.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpCircularSendBufferForceDiscardAll
void otTcpCircularSendBufferForceDiscardAll( otTcpCircularSendBuffer *aSendBuffer )
Elle supprime de force toutes les données du tampon d'envoi circulaire.
L'application doit appeler cette fonction lorsqu'une connexion TCP est interrompue de manière non cérémonie (par exemple, si l'application appelle otTcpEndpointAbort() ou est informée d'une réinitialisation de connexion via le rappel otTcpConnectionLost()).
L'appel de cette fonction sur un tampon d'envoi circulaire TCP non vide associé à un point de terminaison TCP entraîne un comportement indéfini.
Détails | |||
---|---|---|---|
Paramètres |
|
otTcpCircularSendBufferGetFreeSpace
size_t otTcpCircularSendBufferGetFreeSpace( const otTcpCircularSendBuffer *aSendBuffer )
Renvoie la quantité d'espace disponible dans le tampon d'envoi circulaire TCP.
Cette opération aboutit toujours.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Quantité d'espace disponible dans le tampon d'envoi.
|
otTcpCircularSendBufferHandleForwardProgress
void otTcpCircularSendBufferHandleForwardProgress( otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer )
Effectue un traitement spécifique au tampon d'envoi circulaire dans le rappel otTcpForwardProgress.
L'application doit installer un rappel otTcpForwardProgress() sur le otTcpEndpoint et appeler cette fonction au début de la fonction de rappel pour un traitement spécifique au tampon d'envoi circulaire.
Dans la fonction de rappel, l'application peut déterminer la quantité d'espace libre dans le tampon d'envoi circulaire en appelant otTcpCircularSendBufferFreeSpace() ou en comparant aInSendBuffer
avec la capacité du tampon d'envoi, choisie par l'utilisateur lors de l'appel de otTcpCircularSendBufferInitialize().
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
otTcpCircularSendBufferInitialize
void otTcpCircularSendBufferInitialize( otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity )
Initialise un tampon d'envoi circulaire TCP.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
otTcpCircularSendBufferWrite
otError otTcpCircularSendBufferWrite( otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags )
Envoie des données sur un point de terminaison TCP à l'aide du tampon d'envoi circulaire TCP fourni pour gérer la mise en mémoire tampon.
Une fois cette fonction appelée, aSendBuffer
et aEndpoint
sont considérés comme "associés" l'un à l'autre. Lorsqu'elles sont associées, TOUTES les opérations d'envoi pour aEndpoint
doivent être effectuées à l'aide de aSendBuffer
, et TOUTES les opérations sur aSendBuffer
doivent être associées à aEndpoint
.
Le seul moyen de "dissocier" un tampon d'envoi circulaire TCP et un point de terminaison TCP consiste à attendre que le tampon d'envoi devienne complètement vide. Cela peut se produire de deux manières: (1) toutes les données du tampon d'envoi sont envoyées et confirmées dans le cadre du fonctionnement normal du protocole TCP, ou (2) la connexion est interrompue.
Le modèle d'utilisation recommandé consiste à utiliser un seul tampon d'envoi circulaire TCP avec un point de terminaison TCP et à n'envoyer des données sur ce point de terminaison TCP que via le tampon circulaire TCP associé. Ce modèle d'utilisation recommandé permet d'éviter les problèmes décrits ci-dessus en utilisant toujours un point de terminaison TCP et un tampon d'envoi circulaire TCP.
Si le tampon d'envoi circulaire atteint sa capacité maximale, seul un préfixe des données fournies est copié dans le tampon d'envoi circulaire.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs de retour |
|
otTcpMbedTlsSslRecvCallback
int otTcpMbedTlsSslRecvCallback( void *aCtx, unsigned char *aBuf, size_t aLen )
Rappel de réception non bloquant à transmettre à mbedtls_ssl_set_bio.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Renvoie |
Nombre d'octets reçus ou code d'erreur mbedtls.
|
otTcpMbedTlsSslSendCallback
int otTcpMbedTlsSslSendCallback( void *aCtx, const unsigned char *aBuf, size_t aLen )
Envoi non bloquant d'un rappel à transmettre à mbedtls_ssl_set_bio.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Renvoie |
Nombre d'octets envoyés ou code d'erreur mbedtls.
|
Ressources
Les sujets de référence de l'API OpenThread proviennent du code source, disponible sur GitHub. Pour en savoir plus ou pour contribuer à notre documentation, consultez la section Ressources.