O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl :: Tecer:: TLV :: TLVWriter

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

Fornece um codificador eficiente de memória para gravar dados em Weave TLV formato.

Resumo

TLVWriter implementa um forward-only, codificador de estilo fluxo para Weave TLV dados. Aplicações gravar dados em uma codificação chamando um do escritor Put () métodos, passando informações tag e valor associado, conforme necessário. Similarmente aplicações pode codificar TLV tipos de contentores (estruturas, matrizes ou caminhos) chamando o escritor OpenContainer () métodos ou EnterContainer ().

UmTLVWriter objecto pode escrever dados directamente para uma memória intermédia de saída fixa, ou para uma cadeia de um ou mais objectos PacketBuffer. Além disso, os aplicativos podem fornecer suas próprias GetNewBuffer e FinalizeBuffer funções para direcionar a saída para um destino arbitrário, por exemplo, uma tomada ou uma fila de eventos.

Herança

Dirigir Subclasses conhecidas: nl :: Weave :: TLV :: CircularTLVWriter

Tipos protegidos

@72 {
kEndOfContainerMarkerSize = 1
}
enum

Tipos públicos

FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR (*
Uma função utilizada para realizar a finalização da saída a partir de umTLVWriter objecto.
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
Uma função que fornecimentos novo espaço de memória de saída para umTLVWriter .

Atributos públicos

AppData
void *
Um campo de ponteiro que pode ser usado para dados específicos do aplicativo.
FinalizeBuffer
Um ponteiro para uma função que será chamado quando oTLVWriter está finalizado.
GetNewBuffer
Um ponteiro para uma função que irá fornecer novo espaço de memória intermédia de saída para umTLVWriter .
ImplicitProfileId
uint32_t
O ID do perfil das tags que devem ser codificadas de forma implícita.

Atributos protegidos

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

Funções públicas

CloseContainer (TLVWriter & containerWriter)
Completa a escrita de um TLV recipiente após uma chamada para OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
Codifica uma TLV valor de cadeia de byte.
CopyContainer (TLVReader & container)
Cópias de um TLV elemento recipiente deTLVReader objecto.
CopyContainer (uint64_t tag,TLVReader & container)
Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro.
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Codifica uma TLV elemento de recipiente que contém elementos de membro de um recipiente pré-codificado.
CopyElement (TLVReader & reader)
Cópias de um TLV elemento a partir de um objecto leitor para o gravador.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
Completa a codificação de um TLV elemento recipiente.
Finalize (void)
Terminar a escrita de um TLV de codificação.
GetContainerType (void) const
Retorna o tipo de recipiente dentro do qual oTLVWriter está actualmente a escrever.
GetLengthWritten (void)
uint32_t
Retorna o número total de bytes gravados desde que o gravador foi inicializado.
Init (uint8_t *buf, uint32_t maxLen)
void
Inicializa umaTLVWriter objecto para escrever para um tampão de saída único.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
Inicializa umTLVWriter objeto para gravar em um único PacketBuffer.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Inicializa umTLVWriter objeto para gravar em um ou mais PacketBuffers.
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Inicializa umaTLVWriter objecto para escrever para um tampão dinâmico.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
Inicializa uma novaTLVWriter objeto para escrever os membros de uma TLV elemento recipiente.
Put (uint64_t tag, int8_t v)
Codifica uma TLV assinado valor inteiro.
Put (uint64_t tag, int8_t v, bool preserveSize)
Codifica uma TLV assinado valor inteiro.
Put (uint64_t tag, int16_t v)
Put (uint64_t tag, int16_t v, bool preserveSize)
Put (uint64_t tag, int32_t v)
Put (uint64_t tag, int32_t v, bool preserveSize)
Put (uint64_t tag, int64_t v)
Put (uint64_t tag, int64_t v, bool preserveSize)
Put (uint64_t tag, uint8_t v)
Codifica uma TLV valor inteiro sem sinal.
Put (uint64_t tag, uint8_t v, bool preserveSize)
Codifica uma TLV valor inteiro sem sinal.
Put (uint64_t tag, uint16_t v)
Put (uint64_t tag, uint16_t v, bool preserveSize)
Put (uint64_t tag, uint32_t v)
Put (uint64_t tag, uint32_t v, bool preserveSize)
Put (uint64_t tag, uint64_t v)
Put (uint64_t tag, uint64_t v, bool preserveSize)
Put (uint64_t tag, float v)
Put (uint64_t tag, double v)
Codifica uma TLV valor de ponto flutuante.
PutBoolean (uint64_t tag, bool v)
Codifica uma TLV valor booleano.
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
Codifica uma TLV valor de cadeia de byte.
PutNull (uint64_t tag)
Codifica uma TLV valor nulo.
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro.
PutString (uint64_t tag, const char *buf)
Codifica uma TLV valor de string UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
Codifica uma TLV valor de string UTF8.
PutStringF (uint64_t tag, const char *fmt, ...)
Codificar a saída string formatada de acordo com o formato do TLV elemento.
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Começa que codifica um novo TLV elemento recipiente.
StartPutBytes (uint64_t tag, uint32_t totalLen)
Codifica uma TLV byte string em vários pedaços.
VPutStringF (uint64_t tag, const char *fmt, va_list ap)
Codificar a saída string formatada de acordo com o formato do TLV elemento.

Funções estáticas públicas

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
Uma implementação de umTLVWriter função FinalizeBuffer para escrever a uma cadeia de PacketBuffers.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Uma implementação de umTLVWriter função GetNewBuffer para escrever para um buffer dinâmico.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Uma implementação de umTLVWriter função GetNewBuffer para escrever a uma cadeia de PacketBuffers.

Funções protegidas

IsCloseContainerReserved (void) const
bool
Determine se o contêiner deve reservar espaço para o símbolo CloseContainer no ponto de início / abertura do contêiner.
IsContainerOpen (void) const
bool
SetCloseContainerReserved (bool aCloseContainerReserved)
void
Defina se o contêiner deve reservar espaço para o símbolo CloseContainer no ponto de início / abertura do contêiner.
SetContainerOpen (bool aContainerOpen)
void
WriteData (const uint8_t *p, uint32_t len)
WriteElementHead (TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData ( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

Tipos protegidos

@ 72

 @72

Tipos públicos

FinalizeBufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

Uma função utilizada para realizar a finalização da saída a partir de umTLVWriter objecto.

Funções deste tipo são chamados quando umTLVWriter 's Finalizar () método é chamado. Espera-se que a função execute qualquer limpeza ou finalização necessária relacionada ao consumo da saída do objeto gravador. Exemplos disso incluem coisas como gravar o comprimento final da codificação ou fechar um descritor de arquivo.

Detalhes
Parâmetros
[in] writer
Uma referência aoTLVWriter objecto que está a ser finalizado.
[in,out] bufHandle
Um valor de contexto uintptr_t que foi definido por chamadas anteriores à GetNewBuffer função.
[in,out] bufStart
Um ponteiro para o início do buffer de saída atual (e final).
[in,out] bufLen
O número de bytes contidos no buffer apontado por bufStart .
Valores Retornados
WEAVE_NO_ERROR
Se a finalização foi bem-sucedida.
other
Outro Weave ou códigos de erro específicos da plataforma indicando que ocorreu um erro durante a finalização.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

Uma função que fornecimentos novo espaço de memória de saída para umTLVWriter .

Funções deste tipo são usados para preparar novo espaço de buffer para umTLVWriter para gravar. Quando chamada, espera-se que a função retorne um ponteiro para um local da memória onde novos dados devem ser gravados, junto com um comprimento máximo associado. A função pode fornecer espaço de gravação alocando um novo buffer para armazenar os dados ou limpando os dados gravados anteriormente de um buffer existente.

Detalhes
Parâmetros
[in] writer
Uma referência aoTLVWriter objecto que está solicitando o novo espaço tampão.
[in,out] bufHandle
Uma referência a um valor uintptr_t que a função pode usar para armazenar dados de contexto entre chamadas. Este valor é inicializado em 0 antes da primeira chamada.
[in,out] bufStart
Uma referência a um ponteiro de dados. Na entrada para a função, bufStart aponta o início do buffer de saída atual. Na saída, bufStart é esperado para apontar para o início do novo buffer de saída. O novo valor do ponteiro pode ser igual ao valor anterior (por exemplo, se a função copiou os dados existentes em outro lugar) ou pode apontar para um local totalmente novo.
[in,out] bufLen
Uma referência a um inteiro sem sinal. Na entrada para a função, bufLen contém o número de bytes de espaço não utilizado no tampão corrente. Na saída, bufLen está prevista para conter o número máximo de bytes que podem ser escritas de novo o tampão de saída.
Valores Retornados
WEAVE_NO_ERROR
Se a função foi capaz de fornecer mais espaço de buffer para o gravador.
other
Outros códigos de erro Weave ou específicos da plataforma que indicam que ocorreu um erro impedindo a função de produzir espaço de buffer adicional.

Atributos públicos

Dados do aplicativo

void * AppData

Um campo de ponteiro que pode ser usado para dados específicos do aplicativo.

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

Um ponteiro para uma função que será chamado quando oTLVWriter está finalizado.

UmTLVWriter objecto vai chamar a função FinalizeBuffer sempre que a sua Finalizar () método é chamado. Os aplicativos podem definir o ponteiro de função em qualquer ponto antes de chamar Finalize () . Por padrão, o ponteiro é definido como NULL, o que faz com que o Finalize () método para renunciar a chamar a função.

Consulte a definição de tipo FinalizeBufferFunct para obter informações adicionais sobre a implementação de uma função FinalizeBuffer.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

Um ponteiro para uma função que irá fornecer novo espaço de memória intermédia de saída para umTLVWriter .

UmTLVWriter objecto vai chamar a função GetNewBuffer sempre que é feita uma tentativa para gravar dados que excedem o tamanho do buffer de saída de corrente. Se definido como NULL (o valor padrão), o gravador retornará um WEAVE_ERROR_NO_MEMORY se os dados de saída estourarem o buffer atual.

GetNewBuffer pode ser definido por um aplicativo a qualquer momento, mas normalmente é definido quando o gravador é inicializado.

Consulte a definição de tipo GetNewBufferFunct para obter informações adicionais sobre a implementação de uma função GetNewBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

A identificação do perfil das tags que devem ser codificadas de forma implícita.

Quando um escritor é convidado para codificar um novo elemento, se o ID de perfil do tag associado com o novo elemento corresponde ao valor do ImplicitProfileId membro, o escritor vai codificar o tag em forma implícita, omitindo o ID de perfil no processo.

Por padrão, o ImplicitProfileId propriedade é definida como kProfileIdNotSpecified, que instrui o escritor não emitir etiquetas codificadas implicitamente. Os aplicativos podem definir ImplicitProfileId a qualquer momento para permitir que codificam marcas em forma implícita a partir do ponto atual na codificação. O id de perfil apropriado a ser definido geralmente depende do contexto do aplicativo ou protocolo que está sendo falado.

Atributos protegidos

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Funções públicas

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

Completa a escrita de um TLV recipiente após uma chamada para OpenContainer () .

O CloseContainer () método restaura o estado de um dos paisTLVWriter objecto após uma chamada para OpenContainer () . Para cada chamada para OpenContainer () aplicações deve fazer uma chamada correspondente à CloseContainer () , passando uma referência para o mesmo escritor recipiente para ambos os métodos.

Quando CloseContainer () retorna, aplicações pode continuar a usar o escritor pai para escrever adicionais TLV elementos que aparecem depois do elemento de recipiente. Neste ponto, o gravador de contêiner fornecido deve ser considerado 'não inicializado' e não deve ser usado sem a reinicialização.

Detalhes
Parâmetros
[in] containerWriter
Uma referência aoTLVWriter objecto que foi fornecido ao OpenContainer () método.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o gravador de contêiner fornecido não estiver no estado correto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se outro contêiner tiver sido aberto no contêiner fornecido e ainda não tiver sido fechado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a conclusão da codificação do contêiner exceder o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

Codifica uma TLV valor de cadeia de byte.

Isso deve ser usado com StartPutBytes.

Detalhes
Parâmetros
[in] buf
Um ponteiro para um buffer que contém a string de bytes a ser codificada.
[in] len
O número de bytes a serem codificados.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Cópias de um TLV elemento recipiente deTLVReader objecto.

O CopyContainer () codifica um novo TLV elemento recipiente copiando um elemento recipiente pré-codificada localiza-se na posição actual de umTLVReader objecto. O método grava todo o novo elemento do contêiner em uma chamada, copiando o tipo do contêiner, a tag e os elementos da codificação de origem. Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.

Detalhes
Parâmetros
[in] container
Uma referência a umTLVReader objecto identificar o pré-codificado TLV recipiente a ser copiado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento de contêiner.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se o subjacente TLV codificando associado com o leitor fornecido terminada prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um inválido ou não suportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou um TLV tag em um contexto inválido, ou se o tag associado ao contêiner de origem é inválida ou inadequada no contexto em que o novo recipiente está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma retornados pelas configurado GetNewBuffer () ou FinalizeBuffer () funções, ou pela função GetNextBuffer () associado com o objeto leitor.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Codifica uma TLV elemento de recipiente a partir de um conjunto pré-codificado de elementos de membro.

O CopyContainer () método codifica um novo TLV elemento de recipiente (uma estrutura, matriz ou localização) que contém um conjunto de elementos de membro tomadas a partir de umTLVReader objecto. Quando o método é chamado, o objeto leitor fornecido está prevista para ser posicionado sobre um TLV elemento recipiente. O contêiner recém-codificado terá o mesmo tipo e membros do contêiner de entrada. A tag para o novo contêiner é especificada como um parâmetro de entrada.

Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.

Detalhes
Parâmetros
[in] tag
O TLV etiqueta para ser codificado com o recipiente, ou AnonymousTag se o recipiente deve ser codificada sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] container
Uma referência a umTLVReader objecto a identificação de uma pré-codificado TLV recipiente cujo tipo e membros deve ser copiado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento de contêiner.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se o subjacente TLV codificando associado com o leitor fornecido terminada prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um inválido ou não suportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou um TLV tag em um contexto inválido, ou se a tag fornecida é inválida ou inadequada no contexto em que o novo recipiente está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma retornados pelas configurado GetNewBuffer () ou FinalizeBuffer () funções, ou pela função GetNextBuffer () associado com o objeto leitor.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

Codifica uma TLV elemento de recipiente que contém elementos de membro de um recipiente pré-codificado.

O CopyContainer () método codifica um novo TLV elemento de recipiente (uma estrutura, matriz ou localização) que contém um conjunto de elementos de membro tomadas a partir do conteúdo de um recipiente pré-codificado fornecido. Quando o método é chamado, os dados na memória intermédia de entrada fornecido é analisado como um TLV elemento recipiente um um novo recipiente é escrito que tem o mesmo tipo e membros como o recipiente de entrada. A tag para o novo contêiner é especificada como um parâmetro de entrada.

Quando o método retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos seguintes o elemento de recipiente.

Detalhes
Parâmetros
[in] tag
O TLV etiqueta para ser codificado com o recipiente, ou AnonymousTag se o recipiente deve ser codificada sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] encodedContainer
Uma solução tampão com um pré-codificado TLV recipiente cujo tipo e membros deve ser copiado.
[in] encodedContainerLen
O comprimento em bytes do contêiner pré-codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se o contêiner codificado terminou prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o recipiente codificada continha um inválido ou não suportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Se o recipiente codificado continha uma TLV tag em um contexto inválido, ou se a tag fornecida é inválida ou inadequada no contexto em que o novo recipiente está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma retornados pelas configurado GetNewBuffer () ou FinalizeBuffer () funções, ou pela função GetNextBuffer () associado com o objeto leitor.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Cópias de um TLV elemento a partir de um objecto leitor para o gravador.

O CopyElement () método codifica um novo TLV elemento cujo tipo, marca e valor são tomadas a partir de umTLVReader objecto. Quando o método é chamado, o objeto leitor fornecido está prevista para ser posicionada sobre a fonte TLV elemento. O elemento recém-codificado terá o mesmo tipo, tag e conteúdo do contêiner de entrada. Se o elemento fornecido é um TLV recipiente (estrutura, matriz ou caminho), todo o conteúdo do recipiente vai ser copiada.

Detalhes
Parâmetros
[in] reader
Uma referência a umTLVReader objecto a identificação de uma pré-codificado TLV elemento que deve ser copiada.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o leitor fornecido não estiver posicionado em um elemento.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_TLV_UNDERRUN
Se o subjacente TLV codificando associado com o leitor fornecido terminada prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor fornecido encontrou um inválido ou não suportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Se o leitor fornecido encontrou um TLV tag em um contexto inválido, ou se a tag fornecida é inválida ou inadequada no contexto em que o novo recipiente está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma retornados pelas configurado GetNewBuffer () ou FinalizeBuffer () funções, ou pela função GetNextBuffer () associado com o objeto leitor.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

Completa a codificação de um TLV elemento recipiente.

O EndContainer () método completa a codificação de um TLV elemento recipiente e restaura o estado de um objecto TLVWrite após uma chamada anterior para StartContainer () . Para cada chamada para StartContainer () aplicações deve fazer uma chamada correspondente a EndContainer () , passando o valor TLVType retornado pelo StartContainer () chamada. Quando EndContainer () retorna, o objeto escritor pode ser usada para escrever adicionais TLV elementos que se seguem o elemento do recipiente.

Detalhes
Parâmetros
[in] outerContainerType
O valor TLVType que foi devolvido pelo StartContainer () método.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se um correspondente StartContainer () chamada não foi feita.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Finalizar

WEAVE_ERROR Finalize(
  void
)

Terminar a escrita de um TLV de codificação.

O Finalizar () método termina o processo de escrever um TLV de codificação para a memória intermédia de saída subjacente. O método deve ser chamado pelo aplicativo antes de usar o conteúdo do buffer. Finalize () só pode ser chamado quando não existem escritores recipiente aberto para o escritor atual. (Veja OpenContainer() ).

Detalhes
Valores Retornados
WEAVE_NO_ERROR
Se a codificação foi finalizada com sucesso.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado FinalizeBuffer () função.

GetContainerType

TLVType GetContainerType(
  void
) const 

Retorna o tipo de recipiente dentro do qual oTLVWriter está actualmente a escrever.

O GetContainerType () retorna o tipo do TLV recipiente dentro do qual aTLVWriter está actualmente a escrever. Se oTLVWriter não é escrita elementos dentro de um recipiente (isto é, se a escrita no mais externa nível de uma codificação) o método retorna kTLVType_NotSpecified.

Detalhes
Devoluções
O TLVType do recipiente atual, ou kTLVType_NotSpecified se oTLVWriter não está escrevendo elementos dentro de um recipiente.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Retorna o número total de bytes gravados desde que o gravador foi inicializado.

Detalhes
Devoluções
Número total de bytes gravados desde que o gravador foi inicializado.

Iniciar

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

Inicializa umaTLVWriter objecto para escrever para um tampão de saída único.

Detalhes
Parâmetros
[in] buf
Um apontador para a memória intermédia em que TLV deve ser escrito.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.

Iniciar

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Inicializa umTLVWriter objeto para gravar em um único PacketBuffer.

A escrita começa imediatamente após o último byte de dados existentes no buffer fornecido.

Detalhes
Parâmetros
[in] buf
Um apontador para um PacketBuffer em que TLV deve ser escrito.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.

Iniciar

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

Inicializa umTLVWriter objeto para gravar em um ou mais PacketBuffers.

A escrita começa imediatamente após o último byte de dados existentes no buffer especificado. Se allowDiscontiguousBuffers é verdadeiro, PacketBuffers adicionais serão alocados e encadeada para o tampão fornecido como necessário para acomodar a quantidade de dados gravados. Se o buffer de saída especificado já for o cabeça de uma cadeia de buffers, a saída será gravada nos buffers subsequentes na cadeia antes que novos buffers sejam alocados.

Detalhes
Parâmetros
[in] buf
Um apontador para um PacketBuffer em que TLV de dados devem ser escritos.
[in] maxLen
O número máximo de bytes que devem ser gravados no (s) buffer (s) de saída.
[in] allowDiscontiguousBuffers
Se verdadeiro, grava os dados em uma cadeia de PacketBuffers, alocando novos buffers conforme necessário para armazenar os dados gravados. Se falso, a gravação falhará com WEAVE_ERROR_BUFFER_TOO_SMALL se os dados gravados excederem o espaço disponível no buffer de saída inicial.

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

Inicializa umaTLVWriter objecto para escrever para um tampão dinâmico.

Detalhes
Parâmetros
[in] buf
Uma referência a um ponteiro que receberá o buffer alocado.
[in] maxLen
O número máximo de bytes que devem ser gravados no buffer de saída.
[in] initialBufSize
O número inicial de bytes que devem ser alocados para o buffer.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

Inicializa uma novaTLVWriter objeto para escrever os membros de uma TLV elemento recipiente.

O OpenContainer () método é usado para escrever TLV elementos recipiente (estrutura, matrizes ou caminhos) a uma codificação. O método leva o tipo ea tag (se houver) do novo recipiente, e uma referência a um novo objeto escritor (o escritor container) que serão inicializados com o propósito de escrever elementos do contêiner. Aplicações escrever os membros do novo contêiner usando o escritor recipiente e, em seguida, chamar CloseContainer () para completar a codificação recipiente.

Enquanto o gravador de contêiner estiver aberto, os aplicativos não devem fazer chamadas ou alterar de outra forma o estado do gravador pai.

O gravador de contêiner herda várias propriedades de configuração do gravador pai. Estes são:

  • O id de perfil implícito (ImplicitProfileId)
  • O ponteiro de dados do aplicativo (AppData)
  • Os ponteiros de função GetNewBuffer e FinalizeBuffer

Detalhes
Parâmetros
[in] tag
O TLV etiqueta para ser codificado com o recipiente, ou AnonymousTag se o recipiente deve ser codificada sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] containerType
O tipo de contêiner a ser codificado. Deve ser um dos kTLVType_Structure , kTLVType_Array ou kTLVType_Path .
[out] containerWriter
Uma referência a umTLVWriter objeto que será inicializado para escrever os membros do novo elemento de recipiente. Todos os dados associados ao objeto fornecido são sobrescritos.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_WRONG_TLV_TYPE
Se o valor especificado para containerType estiver incorreto.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Codifica uma TLV assinado valor inteiro.

Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Colocar

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

Codifica uma TLV assinado valor inteiro.

Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
[in] preserveSize
Verdadeiro se o valor deve ser codificado no mesmo número de bytes do tipo de entrada. False se o valor deve ser codificado no número mínimo de bytes necessário para representar o valor. Nota: Os aplicativos são fortemente encorajados a definir este parâmetro como falso.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Codifica uma TLV valor inteiro sem sinal.

Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Colocar

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

Codifica uma TLV valor inteiro sem sinal.

Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
[in] preserveSize
Verdadeiro se o valor deve ser codificado no mesmo número de bytes do tipo de entrada. False se o valor deve ser codificado no número mínimo de bytes necessário para representar o valor. Nota: Os aplicativos são fortemente encorajados a definir este parâmetro como falso.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

Codifica uma TLV valor de ponto flutuante.

Esta é uma função de membro sobrecarregado, fornecido por conveniência. Ela difere da função acima apenas no (s) argumento (s) que aceita.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

Codifica uma TLV valor booleano.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] v
O valor a ser codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Outros erros tecer ou específicos de plataforma devolvidos pela configurado GetNewBuffer () ou ) (FinalizeBuffer funções.

PutBytes

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

Codifica uma TLV valor de cadeia de byte.

Detalhes
Parâmetros
[in] tag
O TLV tag deve ser codificado com o valor, ou AnonymousTag se o valor deve ser codificado sem uma etiqueta. Valores etiqueta deve ser construído com uma das funções de definição de marcação ProfileTag () , ContextTag () ou CommonTag () .
[in] buf
Um ponteiro para um buffer que contém a string de bytes a ser codificada.
[in] len
O número de bytes a serem codificados.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Se um gravador de contêiner foi aberto no gravador atual e ainda não foi fechado.
WEAVE_ERROR_INVALID_TLV_TAG
Se o valor da tag especificado for inválido ou inapropriado no contexto em que o valor está sendo escrito.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se a gravação, o valor excederá o limite do número máximo de bytes especificado quando o gravador foi inicializado.
WEAVE_ERROR_NO_MEMORY
Se uma tentativa de alocar um buffer de saída falhou devido à falta de memória.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encodes a TLV null value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

Encodes a TLV container element from a pre-encoded set of member elements.

The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).

The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[in] data
A pointer to a buffer containing zero of more encoded TLV elements that will become the members of the new container.
[in] dataLen
The number of bytes in the data buffer.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encodes a TLV UTF8 string value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the null-terminated UTF-8 string to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

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

Encodes a TLV UTF8 string value.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the UTF-8 string to be encoded.
[in] len
The length (in bytes) of the string to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ...
A list of arguments to be formatted in the output value according to fmt.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

StartContainer

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

Begins encoding a new TLV container element.

The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.

Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[out] outerContainerType
A reference to a TLVType value that will receive the context of the writer.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Encodes a TLV byte string in multiple chunks.

This should be used with ContinuePutBytes.

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] totalLen
The total number of bytes to be encoded.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Detalhes
Parâmetros
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ap
A list of arguments to be formatted in the output value according to fmt.
Valores Retornados
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

Funções estáticas públicas

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

An implementation of aTLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.

The FinalizePacketBuffer() function performs the necessary finalization required when using aTLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.

See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.

GetNewBuffer_Malloced

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a dynamic buffer.

The GetNewBuffer_Malloced() function supplies new output space to aTLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.

The GetNewPacketBuffer() function supplies new output space to aTLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

Note that when using the GetNewPacketBuffer with aTLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.

Funções protegidas

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

WriteElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)