TCP
Ce module inclut des fonctions de contrôle de la communication TCP.
Résumé
Énumérations |
|
---|---|
anonymous enum
|
enum Définit les indicateurs transmis à otTcpConnect(). |
anonymous enum
|
enum Définit les indicateurs transmis à otTcpSendByReference . |
otTcpDisconnectedReason
|
enum |
otTcpIncomingConnectionAction{
|
enum Définit les actions de connexion entrantes. |
Typedefs |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
Structure de tampon liée à utiliser avec le TCP. |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
Ce rappel indique que la connexion TCP est maintenant prête pour une communication bidirectionnelle. |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef Ce rappel indique qu'une connexion entrante correspondant à cet écouteur TCP est arrivée. |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
Ce rappel indique que la connexion a été interrompue et ne doit plus être utilisée, ou qu'une connexion est passée à l'état TIME-WAIT. |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
Contient des arguments de la fonction otTcpEndpointInitialize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
Ce rappel informe l'application que le handshake TCP à trois voies est terminé et que la connexion est maintenant établie. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
Ce rappel informe l'application si une progression a été effectuée dans le transfert des données du tampon d'envoi vers le destinataire. |
otTcpIncomingConnectionAction
|
typedef Définit les actions de connexion entrantes. |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
Contient des arguments de la fonction otTcpListenerInitialize(). |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
Ce rappel indique le nombre d'octets disponibles à la consommation à partir du tampon de réception. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
Ce rappel informe l'application que les données du aData fourni ont été confirmées par le pair de connexion, et que le aData et les données qu'il contient peuvent être récupérés par l'application. |
distantes |
|
---|---|
otTcpAbort(otTcpEndpoint *aEndpoint)
|
Met fin à la connexion TCP associée à ce point de terminaison TCP de manière forcée.
|
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
|
Lie le point de terminaison TCP à une adresse IP et à un port.
|
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Informe la pile TCP que l'application a fini de traiter
aNumBytes octets de données au début du tampon de réception et que la pile TCP n'a plus besoin de conserver ces octets dans le tampon de réception. |
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
|
Enregistre l'hôte et le port distants pour cette connexion.
|
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
|
Déinitialise ce point de terminaison TCP.
|
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
|
void *
Permet d'obtenir le pointeur de contexte associé à
aEndpoint lors de l'initialisation. |
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
|
Récupère l'instance otInstance associée à
aEndpoint lors de l'initialisation. |
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
|
Initialise un point de terminaison TCP.
|
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Récupère un pointeur vers l'hôte et le port locaux d'un point de terminaison TCP.
|
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Récupère un pointeur vers l'hôte et le port d'un point de terminaison TCP.
|
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
|
Entraîne le déclenchement des rappels de cet écouteur TCP par les connexions TCP entrantes correspondant à l'adresse IP et au port spécifiés.
|
otTcpListenerDeinitialize(otTcpListener *aListener)
|
Déinitialise cet écouteur TCP.
|
otTcpListenerGetContext(otTcpListener *aListener)
|
void *
Permet d'obtenir le pointeur de contexte associé à
aListener lors de l'initialisation. |
otTcpListenerGetInstance(otTcpListener *aListener)
|
Récupère l'instance otInstance associée à
aListener lors de l'initialisation. |
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
|
Initialise un écouteur TCP.
|
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
|
Fournit à l'application une chaîne de tampon associée qui fait référence aux données actuellement dans le tampon de réception TCP.
|
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
|
Réorganise le tampon de réception pour qu'il soit entièrement contigu en mémoire.
|
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Ajoute des données au tampon d'envoi en prolongeant la longueur de l'élément otLinkedBuffer final dans le tampon d'envoi selon la quantité spécifiée.
|
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
|
Ajoute au tampon d'envoi les données référencées par le tampon associé pointé par
aBuffer . |
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
|
Informe le pair de connexion que ce point de terminaison TCP n'enverra plus de données.
|
otTcpStopListening(otTcpListener *aListener)
|
Entraîne l'arrêt de l'écoute des connexions entrantes par cet écouteur TCP.
|
Structs |
|
---|---|
otLinkedBuffer |
Structure de tampon liée à utiliser avec le TCP. |
otTcpEndpoint |
Représente un point de terminaison TCP. |
otTcpEndpointInitializeArgs |
Contient des arguments de la fonction otTcpEndpointInitialize(). |
otTcpListener |
Représente un écouteur TCP. |
otTcpListenerInitializeArgs |
Contient des arguments de la fonction otTcpListenerInitialize(). |
Énumérations
énumération anonyme
anonymous enum
Définit les indicateurs transmis à otTcpSendByReference
.
otTcpDisconnectedReason
otTcpDisconnectedReason
otTcpIncomingConnectionAction
otTcpIncomingConnectionAction
Définit les actions de connexion entrantes.
Il est utilisé dans le rappel otTcpAcceptReady().
Propriétés | |
---|---|
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT
|
Acceptez la connexion entrante. |
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER
|
différer (ignorer discrètement) la connexion entrante ; |
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
|
Refuser la connexion entrante. |
Typedefs
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
Structure de tampon liée à utiliser avec le TCP.
Une seule structure otLinkedBuffer référence un tableau d'octets en mémoire, via mData et mLength. Le champ mNext permet de former une chaîne de structures otLinkedBuffer.
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
Ce rappel indique que la connexion TCP est maintenant prête pour une communication bidirectionnelle.
Dans le cas de TCP Fast Open, cela peut se produire avant la fin du handshake de la connexion TCP. L'application est fournie avec les pointeurs de contexte à la fois pour l'écouteur TCP qui a accepté la connexion et pour le point de terminaison TCP dans lequel elle a été acceptée. Le contexte fourni est celui associé à l'écouteur TCP.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
Ce rappel indique qu'une connexion entrante correspondant à cet écouteur TCP est arrivée.
La réponse typique est que l'application doit accepter la connexion entrante. Pour ce faire, il renseigne aAcceptInto
avec un pointeur vers le point de terminaison otTcpEndpoint dans lequel accepter la connexion entrante. Ce otTcpEndpoint doit déjà être initialisé à l'aide de otTcpEndpointInitialize(). Ensuite, l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT.
L'application peut également refuser la connexion entrante. L'application peut procéder de deux façons. Tout d'abord, si l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread ignore silencieusement la demande d'établissement de la connexion ; le pair de connexion retransmet probablement la requête, auquel cas le rappel sera à nouveau appelé. Cela est utile si des ressources ne sont actuellement pas disponibles pour accepter la connexion, mais qu'elles peuvent l'être lorsque le pair de connexion retransmet sa tentative d'établissement de connexion. Deuxièmement, si l'application renvoie OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread envoie un message « connexion refusée » à l'hôte qui a tenté d'établir une connexion. Si l'application refuse la connexion entrante, il n'est pas nécessaire de renseigner aAcceptInto
.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Renvoie |
Description de la gestion de la connexion entrante.
|
otTcpDisconnected
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
Ce rappel indique que la connexion a été interrompue et ne doit plus être utilisée, ou qu'une connexion est passée à l'état TIME-WAIT.
Cela peut se produire si une tentative d'établissement de connexion (initiée en appelant otTcpConnect()) ou n'importe quel point ultérieur (par exemple, si la connexion expire ou si un segment RST est reçu du pair de connexion). Une fois ce rappel déclenché, toutes les ressources fournies par l'application pour cette connexion (c'est-à-dire tous les otLinkedBuffers
et la mémoire auxquels ils font référence, mais pas le point de terminaison TCP lui-même ni l'espace pour les tampons de réception) peuvent être récupérées. Dans le cas d'une connexion entrant dans l'état TIME-WAIT, ce rappel est appelé deux fois : une fois lors de l'entrée dans l'état TIME-WAIT (avec OT_TCP_DISCONNECTED_REASON_TIME_WAIT), puis une nouvelle fois lorsque l'état TIME-WAIT expire (avec OT_TCP_DISCONNECTED_REASON_NORMAL).
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
otTcpDisconnectedReason
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
Contient des arguments de la fonction otTcpEndpointInitialize().
otTcpEstablished
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
Ce rappel informe l'application que le handshake TCP à trois voies est terminé et que la connexion est maintenant établie.
Détails | |||
---|---|---|---|
Paramètres |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
Ce rappel informe l'application si une progression a été effectuée dans le transfert des données du tampon d'envoi vers le destinataire.
Ce rappel n'est pas nécessaire au bon fonctionnement du protocole TCP. La plupart des applications peuvent simplement s'appuyer sur le rappel otTcpSendDone() pour récupérer les tampons associés une fois que la pile TCP a fini de les utiliser. L'objectif de ce rappel est de prendre en charge les applications avancées qui bénéficient d'informations plus précises sur la progression de la connexion dans le transfert des données vers le pair de connexion.
L'opération de ce rappel est étroitement liée au tampon d'envoi du TCP. Le tampon d'envoi peut être considéré comme ayant deux régions. Tout d'abord, il y a la région "en cours de transfert" à la tête (avant) du tampon d'envoi. Il correspond aux données qui ont été envoyées au destinataire, mais qui n'ont pas encore été confirmées. La seconde est la région "backlog", qui comprend toutes les données du tampon d'envoi qui ne se trouvent pas dans la région "en cours de transfert". La région "en attente" correspond aux données en attente d'envoi, mais qui n'ont pas encore été envoyées.
Le rappel est invoqué en réponse à deux types d'événements. Tout d'abord, la région "en cours de transfert" du tampon d'envoi peut être réduite (par exemple, lorsque le destinataire reconnaît les données envoyées précédemment). Ensuite, la région du "backlog" du tampon d'envoi peut être réduite (par exemple, de nouvelles données ont été envoyées). Ces deux conditions se produisent souvent en même temps, en réponse à un segment ACK du pair de connexion, c'est pourquoi elles sont combinées dans un seul rappel.
La pile TCP n'utilise que les octets aInSendBuffer
à la fin du tampon d'envoi. Lorsque aInSendBuffer
diminue d'une valeur x, cela signifie que x octets supplémentaires qui étaient auparavant en tête du tampon d'envoi ne font plus partie du tampon d'envoi et peuvent désormais être récupérés (c'est-à-dire remplacés) par l'application. Notez que la structure otLinkedBuffer elle-même ne peut être récupérée qu'une fois que tous les octets auxquels elle fait référence ne font plus partie du tampon d'envoi.
Ce rappel sous-utilise otTcpSendDone(), au sens suivant: les applications peuvent déterminer à quel moment les tampons associés peuvent être récupérés en comparant aInSendBuffer
au nombre d'octets qui se trouvent dans chaque tampon associé. Cependant, nous nous attendons à ce que otTcpSendDone(), qui indique directement quels otLinkedBuffers peuvent être récupérés, sera beaucoup plus simple à utiliser. Si les deux rappels sont enregistrés et sont déclenchés par le même événement (par exemple, le même segment ACK reçu), le rappel otTcpSendDone() est déclenché en premier, suivi de ce rappel.
De plus, ce rappel fournit aBacklog
, qui indique le nombre d'octets de données dans le tampon d'envoi qui ne sont pas encore en cours de transfert. Pour les applications qui ne souhaitent ajouter des données au tampon d'envoi que lorsqu'elles ont la certitude qu'elles seront bientôt envoyées, il peut être souhaitable de n'envoyer des données que lorsque aBacklog
est suffisamment faible (0 ou proche de 0). Par exemple, une application peut utiliser aBacklog
pour pouvoir réagir à l'accumulation de la file d'attente en supprimant ou en agrégeant des données afin d'éviter de créer un arriéré de données.
Après un appel à otTcpSendByReference() ou otTcpSendByExtension() avec un nombre positif d'octets, le rappel otTcpForwardProgress() est assuré d'être appelé pour indiquer à quel moment les octets ajoutés au tampon d'envoi sont envoyés. L'appel de otTcpForwardProgress() peut être effectué immédiatement après l'ajout des octets au tampon d'envoi (si certains de ces octets sont immédiatement envoyés, ce qui réduit le traitement en attente), ou ultérieurement (une fois que la connexion enverra une partie ou la totalité des données, ce qui réduira le traitement en attente). Par "Immédiatement", nous entendons que l'exécution du rappel dans un tasklet est immédiatement planifiée. Pour éviter la complexité liée à la réentrance, le rappel otTcpForwardProgress() n'est jamais appelé directement à partir des fonctions otTcpSendByReference() ou otTcpSendByExtension().
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
otTcpIncomingConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
Définit les actions de connexion entrantes.
Il est utilisé dans le rappel otTcpAcceptReady().
otTcpListener
struct otTcpListener otTcpListener
otTcpListenerInitializeArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
Contient des arguments de la fonction otTcpListenerInitialize().
otTcpReceiveAvailable
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
Ce rappel indique le nombre d'octets disponibles à la consommation à partir du tampon de réception.
Elle est appelée chaque fois que des octets sont ajoutés au tampon de réception et lorsque la fin du flux est atteinte. Si la fin du flux est atteinte (c'est-à-dire si plus aucune donnée ne peut être lue parce que le pair de connexion a fermé son extrémité de la connexion pour l'écriture), aEndOfStream
est défini sur "true". Enfin, aBytesRemaining
indique la capacité restante dans le tampon de réception pour stocker les données supplémentaires.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
Ce rappel informe l'application que les données du aData
fourni ont été confirmées par le pair de connexion, et que le aData
et les données qu'il contient peuvent être récupérés par l'application.
Les aData
sont garantis comme étant identiques à ceux transmis au TCP via otTcpSendByReference(), y compris toutes les extensions concernées via otTcpSendByExtension().
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
distantes
otTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
Met fin à la connexion TCP associée à ce point de terminaison TCP de manière forcée.
Le point de terminaison TCP devient immédiatement libre d'utilisation pour une autre connexion et vide les tampons d'envoi et de réception, en transférant la propriété de toutes les données fournies par l'application dans les appels otTcpSendByReference() et otTcpSendByExtension() vers l'application. Les rappels et la mémoire du point de terminaison TCP restent associés au tampon de réception.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
Lie le point de terminaison TCP à une adresse IP et à un port.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpCommitReceive
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Informe la pile TCP que l'application a fini de traiter aNumBytes
octets de données au début du tampon de réception et que la pile TCP n'a plus besoin de conserver ces octets dans le tampon de réception.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
Enregistre l'hôte et le port distants pour cette connexion.
L'ouverture rapide TCP doit être activée ou désactivée à l'aide de aFlags
. S'il est désactivé, le handshake d'établissement de connexion TCP est lancé immédiatement. Si elle est activée, cette fonction enregistre simplement l'hôte et le port distants, et le handshake d'établissement de la connexion TCP n'a lieu que lors du premier appel à otTcpSendByReference()
.
Si TCP Fast Open est désactivé, l'appelant doit attendre le rappel otTcpEstablished
, qui indique que le handshake d'établissement de connexion TCP a lieu avant de pouvoir commencer à envoyer des données, par exemple en appelant otTcpSendByReference()
.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpEndpointDeinitialize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
Déinitialise ce point de terminaison TCP.
Cela signifie qu'OpenThread n'effectue plus le suivi de ce point de terminaison TCP et libère toutes les ressources qu'il a allouées en interne à ce point de terminaison TCP. L'application peut réutiliser la mémoire qui sauvegarde le point de terminaison TCP comme elle le souhaite.
Si elle correspond à une connexion TCP active, la connexion est interrompue de manière non cérémonie (comme dans otTcpAbort()). Toutes les ressources fournies par l'application pour ce point de terminaison TCP (tampons liés pour le tampon d'envoi, mémoire pour le tampon de réception, structure aEndpoint
elle-même, etc.) sont immédiatement renvoyées à l'application.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
Permet d'obtenir le pointeur de contexte associé à aEndpoint
lors de l'initialisation.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Pointeur de contexte associé à
aEndpoint . |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
Récupère l'instance otInstance associée à aEndpoint
lors de l'initialisation.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Pointeur otInstance associé à
aEndpoint . |
otTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
Initialise un point de terminaison TCP.
En appelant cette fonction, OpenThread peut suivre le point de terminaison TCP et stocker et récupérer les données TCP dans aEndpoint
. L'application ne doit pas accéder directement aux champs de aEndpoint
ni les modifier. Si l'application doit récupérer la mémoire de sauvegarde aEndpoint
, elle doit appeler otTcpEndpointDeinitialize().
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
Récupère un pointeur vers l'hôte et le port locaux d'un point de terminaison TCP.
Le contenu de l'hôte et du port peut être obsolète si ce socket n'est pas connecté et n'a pas été lié après sa dernière déconnexion.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Hôte local et port de
aEndpoint |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
Récupère un pointeur vers l'hôte et le port d'un point de terminaison TCP.
Le contenu de l'hôte et du port peut être obsolète si ce socket n'est pas connecté.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Hôte et port du pair de connexion de
aEndpoint |
otTcpListen
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
Entraîne le déclenchement des rappels de cet écouteur TCP par les connexions TCP entrantes correspondant à l'adresse IP et au port spécifiés.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpListenerDeinitialize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
Déinitialise cet écouteur TCP.
Cela signifie qu'OpenThread n'effectue plus le suivi de cet écouteur TCP et libère toutes les ressources qu'il a allouées en interne à cet écouteur TCP. L'application peut réutiliser la mémoire pour sauvegarder l'écouteur TCP comme elle le souhaite.
Si l'écouteur TCP est en cours d'écoute, il cesse d'écouter.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
Permet d'obtenir le pointeur de contexte associé à aListener
lors de l'initialisation.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Pointeur de contexte associé à
aListener . |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
Récupère l'instance otInstance associée à aListener
lors de l'initialisation.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
Pointeur otInstance associé à
aListener . |
otTcpListenerInitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
Initialise un écouteur TCP.
En appelant cette fonction, OpenThread peut suivre l'écouteur TCP et stocker et récupérer les données TCP dans aListener
. L'application ne doit pas accéder directement aux champs de aListener
ni les modifier. Si l'application doit récupérer la mémoire de sauvegarde aListener
, elle doit appeler otTcpListenerDeinitialize().
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpReceiveByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
Fournit à l'application une chaîne de tampon associée qui fait référence aux données actuellement dans le tampon de réception TCP.
La chaîne de tampon associée reste valide jusqu'à l'appel suivant du rappel "receive ready" (réception prête) ou jusqu'au prochain appel à otTcpReceiveContiguify() ou otTcpCommitReceive().
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpReceiveContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
Réorganise le tampon de réception pour qu'il soit entièrement contigu en mémoire.
Cette étape est facultative. Une application peut simplement parcourir la chaîne de tampon associée obtenue en appelant otTcpReceiveByReference
. Certaines applications peuvent appeler cette fonction pour que le tampon de réception soit contigu afin de simplifier le traitement des données, mais au détriment du temps CPU nécessaire à la réorganisation des données dans le tampon de réception.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Ajoute des données au tampon d'envoi en prolongeant la longueur de l'élément otLinkedBuffer final dans le tampon d'envoi selon la quantité spécifiée.
Si le tampon d'envoi est vide, l'opération échoue.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
Ajoute au tampon d'envoi les données référencées par le tampon associé pointé par aBuffer
.
Lors d'un appel réussi à cette fonction, le tampon associé et les données auxquelles il fait référence appartiennent à la pile TCP. Ils ne doivent pas être modifiés par l'application tant qu'un rappel d'envoi terminé n'a pas renvoyé la propriété de ces objets à l'application. Il est possible d'appeler cette fonction pour ajouter un autre tampon associé à la file d'attente d'envoi, même si le rappel "send complete" (envoi terminé) pour un appel précédent de cette fonction n'a pas encore été déclenché.
Notez que aBuffer
ne doit pas être enchaîné. Son champ mNext doit être NULL. Si des données supplémentaires sont ajoutées juste après cet appel, l'indicateur OT_TCP_SEND_MORE_TO_COME doit être utilisé comme une indication sur l'implémentation TCP.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs de retour |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
Informe le pair de connexion que ce point de terminaison TCP n'enverra plus de données.
Utilisez cette option lorsque l'application n'a plus de données à envoyer au pair de connexion. Pour cette connexion, les futures lectures sur le pair de connexion entraîneront la condition de "fin du flux", et les futures écritures sur ce point de terminaison échoueront.
La condition de "fin de flux" ne s'applique qu'une fois que le pair de connexion a reçu les données précédemment fournies à la pile TCP à envoyer.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
Entraîne l'arrêt de l'écoute des connexions entrantes par cet écouteur TCP.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs de retour |
|
Macros
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 392
OT_TCP_ENDPOINT_TCB_SIZE_BASE et OT_TCP_ENDPOINT_TCB_NUM_POINTERS sont choisis de sorte que le champ mTcb d'otTcpEndpoint ait la même taille que la structure tcpcb dans TCPlp.
Cette opération est nécessaire, car le champ mTcb, bien qu'opaque dans sa déclaration, est traité comme struct tcpcb dans l'implémentation 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 et OT_TCP_LISTENER_TCB_NUM_POINTERS sont choisis de sorte que le champ mTcbListener d'otTcpListener ait la même taille que le struct tcpcb_listen dans TCPlp.
Cette opération est nécessaire, car le champ mTcbListen, bien qu'opaque dans sa déclaration, est traité comme struct tcpcb dans l'implémentation TCP.
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
Taille de mémoire tampon recommandée pour les connexions TCP qui traversent environ trois sauts sans fil ou moins.
Sur les plates-formes où la mémoire est particulièrement limitée et dans les situations où une bande passante élevée n'est pas nécessaire, il peut être souhaitable de sélectionner manuellement une taille de mémoire tampon inférieure.
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
Taille de mémoire tampon recommandée pour les connexions TCP qui passent par de nombreux sauts sans fil.
Si la connexion TCP traverse un très grand nombre de sauts (plus de six), il peut être conseillé de sélectionner manuellement une grande taille de mémoire tampon.
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.