Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Abstracciones de TCP

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

Resumen

Enumeraciones

anonymous enum Enum
Esta enumeración define las marcas que se pasan a otTcpCircularSendBufferWrite.

Typedefs

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

Funciones

otTcpCircularSendBufferDeinitialize(otTcpCircularSendBuffer *aSendBuffer)
Anula la inicialización de un búfer de envío circular TCP, desvinculándolo si está conectado.
otTcpCircularSendBufferForceDiscardAll(otTcpCircularSendBuffer *aSendBuffer)
void
Se fuerza la eliminación de todos los datos del búfer de envío circular.
otTcpCircularSendBufferGetFreeSpace(const 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 el manejo específico del 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 TCP.
otTcpCircularSendBufferWrite(otTcpEndpoint *aEndpoint, otTcpCircularSendBuffer *aSendBuffer, const void *aData, size_t aLength, size_t *aWritten, uint32_t aFlags)
Envía datos en un extremo TCP, mediante el búfer de envío circular 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 TCP.

Enumeraciones

enumeración anónima

 anonymous enum

Esta enumeración define las marcas que se pasan a otTcpCircularSendBufferWrite.

Typedefs

otTcpCircularSendBuffer

struct otTcpCircularSendBuffer otTcpCircularSendBuffer

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

Usar 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 resultar 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 a otTcpSendByExtension() en ese otTcpEndpoint. En cambio, la aplicación debe usar otTcpCircularSendBufferWrite() para agregar datos al búfer de envío.

La devolución de llamada otTcpForwardProgress() es la forma 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 adjuntó un otTcpCircularSendBuffer, la aplicación DEBE instalar una devolución de llamada otTcpForwardProgress() y llamar a otTcpCircularSendBufferHandleForwardProgress() en el otTcpCircularSendBuffer al inicio de la función de devolución de llamada. Se recomienda que el usuario NO instale una devolución de llamada otTcpSendDone(), ya que el búfer de envío circular maneja la administración de otLinkedBuffers.

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

Funciones

otTcpCircularSendBufferDeinitialize

otError otTcpCircularSendBufferDeinitialize(
  otTcpCircularSendBuffer *aSendBuffer
)

Anula la inicialización de un búfer de envío circular TCP, desvinculándolo 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 TCP para la inicialización.
Valores de retorno
OT_ERROR_NONE
Se inicializó correctamente el búfer de envío circular de TCP.
OT_ERROR_BUSY
El búfer circular contiene datos y no se puede inicializar.

otTcpCircularSendBufferForceDescartarTodos

void otTcpCircularSendBufferForceDiscardAll(
  otTcpCircularSendBuffer *aSendBuffer
)

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

Se espera que la aplicación llame a esta función cuando una conexión TCP se cierre de forma involuntaria (p.ej., si la aplicación llama a otTcpEndpointAbort() o se le informa de 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 de TCP no vacío conectado a un extremo de TCP da como resultado un comportamiento indefinido.

Detalles
Parámetros
[in] aSendBuffer
El búfer de envío circular TCP cuyos datos se descartarán.

otTcpCircularSendBufferGetFreeSpace

size_t otTcpCircularSendBufferGetFreeSpace(
  const otTcpCircularSendBuffer *aSendBuffer
)

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

Esta operación siempre tendrá éxito.

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

otTcpCircularSendBufferHandleForwardProgress

void otTcpCircularSendBufferHandleForwardProgress(
  otTcpCircularSendBuffer *aSendBuffer,
  size_t aInSendBuffer
)

Realiza el manejo específico del 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 comienzo 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 al llamar a otTcpCircularSendBufferInitialize().

Detalles
Parámetros
[in] aSendBuffer
Un puntero al búfer de envío circular TCP para el extremo para el que se invocó otTcpForwardProgress().
[in] aInSendBuffer
El valor de aInSendBuffer se pasó 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 TCP.

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

otTcpCircularSendBufferWrite

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

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

Una vez que se llama a esta función, aSendBuffer y aEndpoint se consideran vinculadas entre sí. Mientras estén adjuntos, TODAS las operaciones de envío de aEndpoint deben realizarse con aSendBuffer, y TODAS las operaciones de aSendBuffer deben asociarse con aEndpoint .

La única forma de &separar 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 en el búfer de envío se envían y se confirman en el curso normal del funcionamiento 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 TCP asociado. Este patrón de uso recomendado evita los problemas descritos anteriormente, ya que siempre usa 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 un prefijo de los datos proporcionados se copia en el búfer de envío circular.

Detalles
Parámetros
[in] aEndpoint
El extremo TCP en el que se envían los datos.
[in] aSendBuffer
El búfer de envío circular TCP en el que se copiarán datos.
[in] aData
Un puntero para los datos que se copiarán en el búfer de envío circular de 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 su capacidad máxima.
[in] aFlags
Marcas que especifican opciones para esta operación (consulta la enumeración anterior).
Qué muestra
OT_ERROR_NONE Se copiaron correctamente los datos en el búfer de envío y se enviaron al extremo TCP.
Qué muestra
OT_ERROR_FAILED No se pudieron enviar los datos en el extremo TCP.

Recursos

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