Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: TLV :: TLVUpdater

#include <src/lib/core/WeaveTLV.h>

Proporciona una interfaz de lectura / escritura unificada para editar / agregar / eliminar elementos en la codificación TLV .

Resumen

TLVUpdater es una unión de los objetosTLVReader yTLVWriter y proporciona métodos de interfaz para editar / eliminar datos en una codificación, así como agregar nuevos elementos a la codificación TLV . El objeto TLVUpdater actúa esencialmente como dos cursores, uno para leer la codificación existente y otro para escribir (ya sea para copiar datos existentes o escribir datos nuevos).

Semánticamente, el objeto TLVUpdater funciona como una unión deTLVReader yTLVWriter . Los métodos TLVUpdater tienen significados más o menos similares a sus homólogos con nombres similares en TLVReader / TLVWriter. Donde hay diferencias en la semántica, las diferencias están claramente documentadas en la sección de comentarios de la función en WeaveTLVUpdater.cpp .

Una nota particularmente importante sobre los métodos PutBytes () y PutString () de TLVUpdater es que puede dejar la codificación en un estado corrupto con solo el encabezado del elemento escrito cuando ocurre un desbordamiento. Las aplicaciones pueden llamar a GetRemainingFreeLength () para asegurarse de que haya aproximadamente suficiente espacio libre para escribir la codificación. Tenga en cuenta que GetRemainingFreeLength () solo le indica los bytes libres disponibles y no hay forma de que la aplicación sepa la longitud de los datos codificados que se escriben. En caso de un desbordamiento, tanto PutBytes () como PutString () devolverán WEAVE_ERROR_BUFFER_TOO_SMALL a la persona que llama.

Además, tenga en cuenta que el método Next () está sobrecargado tanto para omitir el elemento actual como para avanzar el lector interno al siguiente elemento. Debido a que omitir elementos ya codificados requiere cambiar las variables de estado de espacio libre del escritor interno para tener en cuenta el nuevo espacio liberado (disponible al omitir), se espera que la aplicación llame a Next () en el actualizador después de un método Get () cuyo valor no no deseo volver a escribir (lo que equivale a omitir el elemento actual).

Funciones publicas

CopyElement (TLVReader & reader)
CopyElement (uint64_t tag,TLVReader & reader)
DupBytes (uint8_t *& buf, uint32_t & dataLen)
DupString (char *& buf)
EndContainer ( TLVType outerContainerType)
EnterContainer ( TLVType & outerContainerType)
Prepara un objeto TLVUpdater para leer elementos de un contenedor.
ExitContainer ( TLVType outerContainerType)
Completa la lectura de un elemento contenedor TLV y codifica un final de elemento TLV en el TLV de salida.
Finalize (void)
Get (bool & v)
Get (int8_t & v)
Get (int16_t & v)
Get (int32_t & v)
Get (int64_t & v)
Get (uint8_t & v)
Get (uint16_t & v)
Get (uint32_t & v)
Get (uint64_t & v)
Get (float & v)
Get (double & v)
GetBytes (uint8_t *buf, uint32_t bufSize)
GetContainerType (void) const
GetDataPtr (const uint8_t *& data)
GetImplicitProfileId (void)
uint32_t
GetLength (void) const
uint32_t
GetLengthRead (void) const
uint32_t
GetLengthWritten (void)
uint32_t
GetReader (TLVReader & containerReader)
void
GetRemainingFreeLength (void)
uint32_t
GetRemainingLength (void) const
uint32_t
GetString (char *buf, uint32_t bufSize)
GetTag (void) const
uint64_t
GetType (void) const
Init (uint8_t *buf, uint32_t dataLen, uint32_t maxLen)
Inicialice un objeto TLVUpdater para editar un búfer de entrada único.
Init (TLVReader & aReader, uint32_t freeLen)
Inicialice un objeto TLVUpdater usando unTLVReader .
Move (void)
Copias el elemento actual de la entrada TLV a la salida TLV .
MoveUntilEnd (void)
void
Mueva todo desde el punto de lectura actual de TLVUpdater hasta el final del búfer de TLV de entrada a la salida.
Next (void)
Omita el elemento actual y avance el objeto TLVUpdater al siguiente elemento en el TLV de entrada.
Put (uint64_t tag, int8_t v)
Put (uint64_t tag, int16_t v)
Put (uint64_t tag, int32_t v)
Put (uint64_t tag, int64_t v)
Put (uint64_t tag, uint8_t v)
Put (uint64_t tag, uint16_t v)
Put (uint64_t tag, uint32_t v)
Put (uint64_t tag, uint64_t v)
Put (uint64_t tag, int8_t v, bool preserveSize)
Put (uint64_t tag, int16_t v, bool preserveSize)
Put (uint64_t tag, int32_t v, bool preserveSize)
Put (uint64_t tag, int64_t v, bool preserveSize)
Put (uint64_t tag, uint8_t v, bool preserveSize)
Put (uint64_t tag, uint16_t v, bool preserveSize)
Put (uint64_t tag, uint32_t v, bool preserveSize)
Put (uint64_t tag, uint64_t v, bool preserveSize)
Put (uint64_t tag, float v)
Put (uint64_t tag, double v)
PutBoolean (uint64_t tag, bool v)
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
PutNull (uint64_t tag)
PutString (uint64_t tag, const char *buf)
PutString (uint64_t tag, const char *buf, uint32_t len)
SetImplicitProfileId (uint32_t profileId)
void
Establezca el ID de perfil implícito para el objeto TLVUpdater .
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
VerifyEndOfContainer (void)

Funciones publicas

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

DupString

WEAVE_ERROR DupString(
  char *& buf
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Entrar Contenedor

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

Prepara un objeto TLVUpdater para leer elementos de un contenedor.

También codifica un inicio de objeto contenedor en el TLV de salida.

El método EnterContainer () prepara el objeto TLVUpdater actual para comenzar a leer los elementos miembros de un contenedor TLV (una estructura, matriz o ruta). Para cada llamada a EnterContainer (), las aplicaciones deben realizar una llamada correspondiente a ExitContainer () .

Cuando se llama EnterContainer (), el lector de TLVUpdater debe colocarse en el elemento contenedor. El método toma como argumento una referencia a un valor TLVType que se utilizará para guardar el contexto del actualizador mientras lee el contenedor.

Cuando regresa el método EnterContainer () , el actualizador se coloca inmediatamente antes del primer miembro del contenedor. Al llamar repetidamente a Next () , el actualizador avanzará a través de los miembros de la colección hasta que se alcance el final, momento en el que el actualizador devolverá WEAVE_END_OF_TLV.

Una vez que la aplicación ha terminado de leer un contenedor, puede continuar leyendo los elementos después del contenedor llamando al método ExitContainer () .

Detalles
Parámetros
[out] outerContainerType
Una referencia a un valor TLVType que recibirá el contexto del actualizador.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INCORRECT_STATE
Si el lector TLVUpdater no está colocado en un elemento contenedor.
other
Cualquier otro código de error de Weave o plataforma devuelto por TLVWriter :: StartContainer () o TLVReader :: EnterContainer () .

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Completa la lectura de un elemento contenedor TLV y codifica un final de elemento TLV en el TLV de salida.

El método ExitContainer () restaura el estado de un objeto TLVUpdater después de una llamada a EnterContainer () . Para cada llamada a EnterContainer (), las aplicaciones deben realizar una llamada correspondiente a ExitContainer () , pasando el valor de contexto devuelto por el método EnterContainer () .

Cuando regresa ExitContainer () , el lector TLVUpdater se coloca inmediatamente antes del primer elemento que sigue al contenedor en el TLV de entrada. Desde este punto, las aplicaciones pueden llamar a Next () para avanzar a través de los elementos restantes.

Una vez que se ha llamado a EnterContainer () , las aplicaciones pueden llamar a ExitContainer () en el actualizador en cualquier momento, independientemente de si se han leído todos los elementos del contenedor subyacente. Además, tenga en cuenta que si llama a ExitContainer () antes de leer todos los elementos del contenedor, el contenedor actualizado se truncará en el TLV de salida.

Detalles
Parámetros
[in] outerContainerType
El valor TLVType que devolvió el método EnterContainer () .
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_TLV_UNDERRUN
Si la codificación TLV subyacente finalizó prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el actualizador encontró un tipo de elemento TLV no válido o no admitido.
WEAVE_ERROR_INVALID_TLV_TAG
Si el actualizador encontró una etiqueta TLV en un contexto no válido.
other
Cualquier otro código de error de Weave o plataforma devuelto por TLVWriter :: EndContainer () o TLVReader :: ExitContainer () .

Finalizar

WEAVE_ERROR Finalize(
  void
)

Obtener

WEAVE_ERROR Get(
  bool & v
)

Obtener

WEAVE_ERROR Get(
  int8_t & v
)

Obtener

WEAVE_ERROR Get(
  int16_t & v
)

Obtener

WEAVE_ERROR Get(
  int32_t & v
)

Obtener

WEAVE_ERROR Get(
  int64_t & v
)

Obtener

WEAVE_ERROR Get(
  uint8_t & v
)

Obtener

WEAVE_ERROR Get(
  uint16_t & v
)

Obtener

WEAVE_ERROR Get(
  uint32_t & v
)

Obtener

WEAVE_ERROR Get(
  uint64_t & v
)

Obtener

WEAVE_ERROR Get(
  float & v
)

Obtener

WEAVE_ERROR Get(
  double & v
)

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

GetContainerType

TLVType GetContainerType(
  void
) const 

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

GetImplicitProfileId

uint32_t GetImplicitProfileId(
  void
)

GetLength

uint32_t GetLength(
  void
) const 

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

GetReader

void GetReader(
  TLVReader & containerReader
)

GetRemainingFreeLength

uint32_t GetRemainingFreeLength(
  void
)

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

GetTag

uint64_t GetTag(
  void
) const 

GetType

TLVType GetType(
  void
) const 

En eso

WEAVE_ERROR Init(
  uint8_t *buf,
  uint32_t dataLen,
  uint32_t maxLen
)

Inicialice un objeto TLVUpdater para editar un búfer de entrada único.

Al llamar a este método, los datos de TLV en el búfer se mueven al final del búfer y se inicializa un objetoTLVReader privado en este búfer reubicado. También se inicializa un objetoTLVWriter privado en el espacio libre que ahora está disponible al principio. Las aplicaciones pueden usar el objeto TLVUpdater para analizar los datos de TLV y modificar / eliminar elementos existentes o agregar nuevos elementos a la codificación.

Detalles
Parámetros
[in] buf
Un puntero a un búfer que contiene los datos TLV que se van a editar.
[in] dataLen
La longitud de los datos TLV en el búfer.
[in] maxLen
La longitud total del búfer.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la dirección del búfer no es válida.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el búfer es demasiado pequeño.

En eso

WEAVE_ERROR Init(
  TLVReader & aReader,
  uint32_t freeLen
)

Inicialice un objeto TLVUpdater usando unTLVReader .

Al llamar a este método, los datos de TLV en el búfer al que apuntaTLVReader se mueven desde el punto de lectura actual al final del búfer. Se inicializa un nuevo objetoTLVReader privado para leer desde esta nueva ubicación, mientras que un nuevo objetoTLVWriter privado se inicializa para escribir en el espacio de búfer liberado.

Tenga en cuenta que si elTLVReader ya está posicionado "en" un elemento, primero se retrocede al inicio de ese elemento. También tenga en cuenta que este retroceso funciona bien con elementos de contenedor, es decir, si elTLVReader ya se usó para llamar a EnterContainer () , entonces no hay nada para retroceder. Pero si elTLVReader secolocó en el elemento contenedor y aún no se llamó a EnterContainer () , entonces el objetoTLVReader se retrocede al inicio del encabezado del contenedor.

El objetoTLVReader de entrada se destruirá antes de regresar y la aplicación no debe hacer uso del mismo al regresar.

Detalles
Parámetros
[in,out] aReader
Referencia a un objetoTLVReader que se destruirá antes de regresar.
[in] freeLen
La longitud de espacio libre (en bytes) disponible en el búfer de datos precodificados.
Valores devueltos
WEAVE_NO_ERROR
Si el método tuvo éxito.
WEAVE_ERROR_INVALID_ARGUMENT
Si la dirección del búfer no es válida.
WEAVE_ERROR_NOT_IMPLEMENTED
Si el lector se inicializó en una cadena de búferes.

Moverse

WEAVE_ERROR Move(
  void
)

Copias el elemento actual de la entrada TLV a la salida TLV .

Los Move () método copia el elemento actual en la que el TLVUpdater 'se coloca en el lector s, a la TLVUpdater ' escritor s. La aplicación debe llamar a Next () y colocar el lector de TLVUpdater en un elemento antes de llamar a este método. Al igual que el método TLVReader :: Next () , si el lector está posicionado en un elemento contenedor en el momento de la llamada, se copiarán todos los miembros del contenedor. Si el lector no se posiciona sobre ningún elemento, nada cambia al llamar a este método.

Detalles
Valores devueltos
WEAVE_NO_ERROR
Si el lector TLVUpdater se colocó correctamente en un nuevo elemento.
WEAVE_END_OF_TLV
Si el lector de TLVUpdater apunta al final del contenedor.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Si el lector de TLVIpdater no está colocado en un elemento TLV válido.
other
Devuelve otros códigos de error devueltos por el método TLVReader :: Skip () .

MoveUntilEnd

void MoveUntilEnd(
  void
)

Mueva todo desde el punto de lectura actual de TLVUpdater hasta el final del búfer TLV de entrada a la salida.

Este método permite mover todo desde el punto de lectura actual de TLVUpdater hasta el final del búfer del lector al escritor de TLVUpdater .

próximo

WEAVE_ERROR Next(
  void
)

Omita el elemento actual y avance el objeto TLVUpdater al siguiente elemento en el TLV de entrada.

El método Next () omite el elemento actual en el TLV de entrada y avanza el lector de TLVUpdater al siguiente elemento que reside en el mismo contexto de contención. En particular, si el lector está ubicado en el nivel más externo de una codificación TLV , llamar a Next () lo avanzará al siguiente elemento superior. Si el lector está ubicado dentro de un elemento contenedor TLV (una estructura, matriz o ruta), llamar a Next () lo avanzará al siguiente elemento miembro del contenedor.

Dado que Next () restringe el movimiento del lector al contexto de contención actual, llamar a Next () cuando el lector está posicionado en un elemento contenedor avanzará sobre el contenedor, omitiendo sus elementos miembros (y los miembros de cualquier contenedor anidado) hasta que llegue al primero elemento después del contenedor.

Cuando no hay más elementos dentro de un contexto de contención particular, el método Next () devolverá un error WEAVE_END_OF_TLV y la posición del lector permanecerá sin cambios.

Detalles
Valores devueltos
WEAVE_NO_ERROR
Si el lector TLVUpdater se colocó correctamente en un nuevo elemento.
other
Devuelve los códigos de error de plataforma o Weave devueltos por el método TLVReader :: Skip () y TLVReader :: Next () .

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Poner

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

SetImplicitProfileId

void SetImplicitProfileId(
  uint32_t profileId
)

Establezca el ID de perfil implícito para el objeto TLVUpdater.

Este método establece el ID de perfil implícito para el objeto TLVUpdater. Cuando se le pide al actualizador que codifique un nuevo elemento, si el ID de perfil de la etiqueta asociada con el nuevo elemento coincide con el valor del profileId, el actualizador codificará la etiqueta en forma implícita, omitiendo así el ID de perfil en el proceso.

Detalles
Parámetros
[in] profileId
El ID de perfil de las etiquetas que deben codificarse de forma implícita.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)