Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Abstracciones de TCP

Este módulo incluye abstracciones fáciles de usar junto con la API de TCP base.

Resumen

Typedefs

otTcpCircularSendBuffer typedef
Esta estructura representa un búfer de envío circular para usar con un extremo de TCP.

Functions

otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
Anula la inicialización de un búfer de envío circular de TCP y lo desconecta si está conectado.
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
void
Se fuerza la eliminación de todos los datos en el búfer de envío circular.
otTcpCircularSendBufferFreeSpace(otTcpCircularSendBuffer *aSendBuffer)
size_t
Muestra la cantidad de espacio libre en el búfer de envío circular TCP.
otTcpCircularSendBufferHandleForwardProgress(otTcpCircularSendBuffer *aSendBuffer, size_t aInSendBuffer)
void
Realiza controles específicos de búfer de envío circular en la devolución de llamada otTcpForwardProgress.
otTcpCircularSendBufferInitialize(otTcpCircularSendBuffer *aSendBuffer, void *aDataBuffer, size_t aCapacity)
void
Inicializa un búfer de envío circular de TCP.
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, void *aData, size_t aLength, size_t *aWritten)
Envía datos en un extremo de TCP con el búfer de envío circular de TCP proporcionado para administrar el almacenamiento en búfer.

Structs

otTcpCircularSendBuffer

Esta estructura representa un búfer de envío circular para usar con un extremo de TCP.

Typedefs

otTcpCircularSendBuffer

struct otTcpCircularSendBuffer otTcpCircularSendBuffer

Esta estructura representa un búfer de envío circular para usar con un extremo de TCP.

El uso de un búfer de envío circular es opcional. Las aplicaciones pueden usar un extremo TCP para enviar datos mediante la administración directa de otLinkedBuffers. Sin embargo, para algunas aplicaciones, puede ser más conveniente tener un búfer de envío circular. Esas aplicaciones pueden llamar a otTcpCircularSendBufferWrite() para adjuntar un búfer de envío circular a un extremo de TCP y enviar datos en ese extremo de TCP, que dependen del búfer de envío circular para administrar los otLinkedBuffers subyacentes.

otTcpCircularSendBuffer se implementa sobre la API basada en otLinkedBuffer que proporciona un otTcpEndpoint. Una vez conectado a un otTcpEndpoint, un otTcpCircularSendBuffer realiza todo el trabajo de administrar otLinkedBuffers para la conexión. Esto significa que, una vez que se adjunta un otTcpCircularSendBuffer a un otTcpEndpoint, la aplicación no debe llamar a otTcpSendByReference() ni otTcpSendByExtension() en ese otTcpEndpoint. En su lugar, la aplicación debe usar otTcpCircularSendBufferWrite() para agregar datos al búfer de envío.

La devolución de llamada otTcpForwardProgress() es la manera prevista para que los usuarios sepan cuándo hay espacio disponible en el búfer de envío circular. En un otTcpEndpoint al que se adjunta un otTcpCircularSendBuffer, la aplicación DEBE instalar una devolución de llamada otTcpForwardProgress() y llamar a otTcpCircularSendBufferHandleForwardProgress() en el otTcpCircularSendBuffer al comienzo de la función de devolución de llamada. Se recomienda que el usuario NO instale una devolución de llamada otTcpSendDone(), ya que toda la administración de otLinkedBuffers se controla con el búfer de envío circular.

La aplicación no debe inspeccionar los campos de esta estructura directamente; solo debe interactuar con él mediante las funciones de la API de búfer de envío circular de TCP cuya firma se proporciona en este archivo.

Functions

otTcpCircularSendBufferDeInitialize

otError otTcpCircularSendBufferDeinitialize(
  otTcpCircularSendBuffer *aSendBuffer
)

Anula la inicialización de un búfer de envío circular de TCP y lo desconecta si está conectado.

Si el búfer de envío circular de TCP no está vacío, esta operación fallará.

Detalles
Parámetros
[in] aSendBuffer
El búfer de envío circular de TCP para anular la inicialización.
Valores que se muestran
OT_ERROR_NONE
Anula de forma correcta la inicialización del búfer de envío circular de TCP.
OT_ERROR_BUSY
El búfer circular contiene datos y no se puede inicializar.

otTcpCircularSendBufferForceDismissAll

void otTcpCircularSendBufferForceDiscardAll(
  otTcpCircularSendBuffer *aSendBuffer
)

Se fuerza la eliminación de todos los datos en el búfer de envío circular.

Se espera que la aplicación llame a esta función cuando una conexión TCP se cierra de forma indebida (p.ej., si la aplicación llama a otTcpEndpointAbort() o se le informa sobre un restablecimiento a través de la devolución de llamada otTcpConnectionLost()).

Llamar a esta función en un búfer de envío circular no vacío de TCP conectado a un extremo de TCP da como resultado un comportamiento indefinido.

Detalles
Parámetros
[in] aSendBuffer
Búfer de envío de TCP circular cuyos datos se deben descartar

otTcpCircularSendBufferFreeSpace

size_t otTcpCircularSendBufferFreeSpace(
  otTcpCircularSendBuffer *aSendBuffer
)

Muestra la cantidad de espacio libre en el búfer de envío circular TCP.

Esta operación siempre se realizará correctamente.

Detalles
Parámetros
[in] aSendBuffer
Un puntero al búfer de envío circular TCP cuya cantidad de espacio libre para mostrar.
Qué muestra
Espacio disponible en el búfer de envío.

otTcpCircularSendBufferHandleForwardProgress

void otTcpCircularSendBufferHandleForwardProgress(
  otTcpCircularSendBuffer *aSendBuffer,
  size_t aInSendBuffer
)

Realiza controles específicos de búfer de envío circular en la devolución de llamada otTcpForwardProgress.

Se espera que la aplicación instale una devolución de llamada otTcpForwardProgress() en el otTcpEndpoint y llame a esta función al inicio de la función de devolución de llamada para el procesamiento específico del búfer de envío circular.

En la función de devolución de llamada, la aplicación puede determinar la cantidad de espacio libre en el búfer de envío circular llamando a otTcpCircularSendBufferFreeSpace() o comparando aInSendBuffer con la capacidad de búfer de envío elegida por el usuario cuando llama a otTcpCircularSendBufferInitialize().

Detalles
Parámetros
[in] aSendBuffer
Un puntero al búfer de envío circular de TCP para el extremo para el que se invocó otTcpForwardProgress().
[in] aInSendBuffer
Valor de aInSendBuffer que se pasa a la devolución de llamada otTcpForwardProgress().

otTcpCircularSendBufferInitialize

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

Inicializa un búfer de envío circular de TCP.

Detalles
Parámetros
[in] aSendBuffer
Un puntero al búfer de envío circular de TCP para inicializar.
[in] aDataBuffer
Un puntero para la memoria que se usa a fin de almacenar datos en el búfer de envío circular TCP.
[in] aCapacity
La capacidad, en bytes, del búfer de envío circular TCP, que debe ser igual al tamaño de la memoria a la que apunta aDataBuffer .

otTcpCircularSendBufferWrite

otError otTcpCircularSendBufferWrite(
  otTcpEndpoint *aEndpoint,
  otTcpCircularSendBuffer *aSendBuffer,
  void *aData,
  size_t aLength,
  size_t *aWritten
)

Envía datos en un extremo de TCP con el búfer de envío circular de TCP proporcionado para administrar el almacenamiento en búfer.

Una vez que se llama a esta función, aSendBuffer y aEndpoint se consideran adjuntos. Mientras están adjuntos, todas las operaciones de envío de aEndpoint deben realizarse con aSendBuffer y TODAS las operaciones de aSendBuffer deben estar asociadas con aEndpoint.

La única forma de desconectar un búfer de envío circular de TCP y un extremo de TCP es esperar a que el búfer de envío se vacíe por completo. Esto puede suceder de dos maneras: (1) todos los datos del búfer de envío se envían y se confirman en el transcurso normal de la operación del protocolo TCP, o (2) la conexión se termina.

El patrón de uso recomendado es usar un solo búfer de envío circular TCP con un extremo TCP y enviar datos en ese extremo TCP solo a través de su búfer circular circular asociado. Este patrón de uso recomendado evita los problemas descritos anteriormente mediante el uso de un extremo de TCP y un búfer de envío circular de TCP juntos.

Si el búfer de envío circular alcanza la capacidad, solo se copia un prefijo de los datos proporcionados en el búfer de envío circular.

Detalles
Parámetros
[in] aEndpoint
El extremo de TCP al que se enviarán los datos.
[in] aSendBuffer
El búfer de envío circular de TCP en el que se copian los datos.
[in] aData
Un puntero para los datos que se copiarán en el búfer de envío circular TCP.
[in] aLength
La longitud de los datos a los que apunta aData para copiar en el búfer de envío circular TCP.
[out] aWritten
Se propaga con la cantidad de datos copiados en el búfer de envío, que puede ser inferior a aLength si el búfer de envío alcanza la capacidad.
Qué muestra
OT_ERROR_NONE copió los datos correctamente en el búfer de envío y los enviaron al extremo TCP.
Qué muestra
OT_ERROR_ERRORS No se pudieron enviar los datos en el extremo TCP.

Recursos

Los temas de referencia de la API de OpenThread se originan en el código fuente, disponible en GitHub. Para obtener más información o colaborar con nuestra documentación, consulta Recursos.