nl::Weave::Profiles::BDX_Development

Esse namespace inclui todas as interfaces do Weave para o perfil da Transferência de dados em massa (BDX) que estão ativamente em desenvolvimento e não devem ser usadas para uso em produção.

Resumo

Enumerações

@80 enum
@81 enum
@82 enum
@83 enum

Typedefs

BdxClient typedef
BdxServer typedef
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode) typedef
void(*
Esse manipulador é chamado sempre que é encontrado um erro do Weave que não pode ser retornado diretamente por meio de códigos de erro para o fluxo de controle definido pelo aplicativo pelo usuário.
GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock) typedef
void(*
Get a block of data to be transmitted.
PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock) typedef
void(*
Processar o bloco de dados apontados por um aDataBlock de comprimento aLength.
ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg) typedef
Callback invocado quando um ReceiveInit enviado anteriormente é aceito pelo destino.
ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg) typedef
uint16_t(*
Callback invocado ao receber uma mensagem ReceiveInit.
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport) typedef
void(*
Invocado se uma das mensagens Init anteriores foi rejeitada pelo destino.
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg) typedef
Callback invocado quando um SendInit enviado anteriormente é aceito pelo destino.
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg) typedef
uint16_t(*
Callback invocado ao receber uma mensagem SendInit.
XferDoneHandler)(BDXTransfer *aXfer) typedef
void(*
Lidar com casos em que a transferência é concluída.
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError) typedef
void(*
Gerenciar mensagens TransferError recebidas ou enviadas pelo BDX.

remotas

GetBDXAckFlag(ExchangeContext *anEc)
uint16_t
GetBDXAckFlag retorna a sinalização adequada para o campo RequestAck, dependendo da conexão do contexto de troca (nenhuma confirmação de solicitação para TCP) e com base no suporte ao tempo de compilação para WRMP.

Aulas

nl::Weave::Profiles::BDX_Development::BdxNode
nl::Weave::Profiles::BDX_Development::BlockAck

A mensagem BlockAck é usada para confirmar um bloco de dados.

nl::Weave::Profiles::BDX_Development::BlockAckV1

A mensagem BlockAckV1 é usada para confirmar um bloco de dados.

nl::Weave::Profiles::BDX_Development::BlockEOF

A mensagem BlockEOF é usada para transferir o último bloco de dados do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::BlockEOFAck

A mensagem BlockEOFAck é usada para confirmar o último bloco de dados.

nl::Weave::Profiles::BDX_Development::BlockEOFAckV1

A mensagem BlockEOFAckV1 é usada para confirmar o último bloco de dados.

nl::Weave::Profiles::BDX_Development::BlockEOFV1

A mensagem BlockEOFV1 é usada para transferir o último bloco de dados do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::BlockQuery

A mensagem BlockQuery é usada para solicitar que um bloco de dados seja transferido do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::BlockQueryV1

A mensagem BlockQueryV1 é usada para solicitar que um bloco de dados seja transferido do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::BlockSend

A mensagem BlockSend é usada para transferir um bloco de dados do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::BlockSendV1

A mensagem BlockSendV1 é usada para transferir um bloco de dados do remetente para o destinatário.

nl::Weave::Profiles::BDX_Development::ReceiveAccept

A mensagem ReceiveAccept é usada para aceitar uma troca proposta quando o destinatário é o iniciador.

nl::Weave::Profiles::BDX_Development::ReceiveInit

A mensagem ReceiveInit é usada para iniciar uma troca quando o receptor é o iniciador.

nl::Weave::Profiles::BDX_Development::ReceiveReject

A mensagem ReceiveReject é usada para rejeitar uma troca proposta quando o remetente é o iniciador.

nl::Weave::Profiles::BDX_Development::SendAccept

A mensagem SendAccept é usada para aceitar uma troca proposta quando o remetente é o iniciador.

nl::Weave::Profiles::BDX_Development::SendInit

A mensagem SendInit é usada para iniciar uma troca quando o remetente é o iniciador.

nl::Weave::Profiles::BDX_Development::SendReject

A mensagem SendReject é usada para rejeitar uma troca proposta quando o remetente é o iniciador.

nl::Weave::Profiles::BDX_Development::TransferError

Essa mensagem é usada para informar um erro e cancelar uma troca.

Estruturas

nl::Weave::Profiles::BDX_Development::BDXHandlers
nl::Weave::Profiles::BDX_Development::BDXTransfer

Essa estrutura contém membros de dados que representam uma transferência ativa do BDX.

Namespaces

nl::Weave::Profiles::BDX_Development::BdxProtocol

Enumerações

@80

 @80

@81

 @81

@82

 @82

@83

 @83

Typedefs

BdxClient

BdxNode BdxClient

BdxServer

BdxNode BdxServer

ErrorHandler

void(* ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode)

Esse manipulador é chamado sempre que é encontrado um erro do Weave que não pode ser retornado diretamente por meio de códigos de erro para o fluxo de controle definido pelo aplicativo pelo usuário.

Ou seja, se ocorrer um erro em outro gerenciador com uma assinatura que tenha o tipo de retorno nulo (por exemplo, em resposta a uma mensagem Weave recebida ou mesmo despachada pelo protocolo), esse gerenciador será chamado para que o usuário possa determinar se a transferência pode ser recuperada e continuar ou se deve chamar Shutdown(). Observe que é possível ocorrer um erro antes que uma BDXTransfer seja inicializada (por exemplo, muitos objetos de transferência alocados). Nesse caso, esse erro será registrado pelo Weave e o protocolo processará a limpeza de qualquer estado necessário alocado.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] anErrorCode
O código do erro que precisamos processar

GetBlockHandler

void(* GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)

Get a block of data to be transmitted.

O autor da chamada fornece o espaço de armazenamento em buffer (buffer e comprimento do buffer, transmitidos por referência). O recebedor da chamada (aplicativo do usuário) DEVE usar o buffer fornecido, mas, por motivos de compatibilidade com versões anteriores, pode retornar o próprio buffer. O recebedor da chamada não pode fornecer mais do que o aLength de bytes. Quando retornamos, aLength contém o número real de bytes lidos no buffer.

Detalhes
Parâmetros
[in] aXfer
O BDXTransfer associado a esta transferência em andamento
[in,out] aLength
O comprimento dos dados lidos e armazenados neste bloco. Na chamada para a função contém o comprimento do buffer transmitido na aDataBlock. Ao retornar, a variável contém o tamanho dos dados realmente lidos.
[in,out] aDataBlock
O ponteiro para o bloco de dados. Na entrada, ele contém o buffer fornecido pelo framework. O recebedor da chamada pode usar esse espaço para preencher o buffer ou fornecer o próprio espaço de buffer (para aplicativos de compatibilidade com versões anteriores). Os aplicativos que usam o buffer fornecido não podem presumir nenhum alinhamento.
[out] aLastBlock
"True", se o bloco precisa ser enviado como um BlockEOF e a transferência foi concluída. Caso contrário, é "false".

PutBlockHandler

void(* PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)

Processar o bloco de dados apontados por um aDataBlock de comprimento aLength.

Provavelmente, isso envolve gravar em um arquivo e fechar esse arquivo se isLastBlock for verdadeiro.

Detalhes
Parâmetros
[in] aXfer
O BDXTransfer associado a esta transferência em andamento
[in] aLength
O comprimento dos dados lidos e armazenados no bloco especificado
[in] aDataBlock
O verdadeiro bloco de dados
[in] aLastBlock
Verdadeiro se o bloco foi recebido como um BlockEOF e a transferência foi concluída. Caso contrário, será falso. Se verdadeiro, o programador provavelmente deve finalizar todos os identificadores de arquivo, tendo em mente que o XferDoneHandler será chamado depois disso.

ReceiveAcceptHandler

WEAVE_ERROR(* ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg)

Callback invocado quando um ReceiveInit enviado anteriormente é aceito pelo destino.

Use essa oportunidade para abrir arquivos ou alocar recursos para a transferência, caso não tenha feito isso ao iniciá-la.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aReceiveAcceptMsg
Ponteiro para a mensagem ReceiveAccept que estamos processando

ReceiveInitHandler

uint16_t(* ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg)

Callback invocado ao receber uma mensagem ReceiveInit.

A função dele é determinar se você deseja aceitar o recebimento e, em caso afirmativo, definir aXfer->mIsAccepted=true para que o protocolo envie uma mensagem de aceitação para o iniciador. O objeto BDXTransfer é iniciado para as configurações padrão. Esse é um bom momento para anexar qualquer estado específico do aplicativo (identificadores de arquivo abertos etc.) a aXfer->mAppState. Também é preciso anexar os gerenciadores necessários para, por exemplo, lidar com blocos ao objeto BDXTransfer. Se um código de erro diferente de kStatus_Success for retornado, presume-se que a transferência foi rejeitada e o protocolo tratará o envio de uma mensagem de rejeição com o código.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aReceiveInitMsg
Ponteiro para a mensagem ReceiveInit que estamos processando

RejectHandler

void(* RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport)

Invocado se uma das mensagens Init anteriores foi rejeitada pelo destino.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aReport
Ponteiro para a rejeição da mensagem StatusReport que estamos processando

SendAcceptHandler

WEAVE_ERROR(* SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg)

Callback invocado quando um SendInit enviado anteriormente é aceito pelo destino.

Use essa oportunidade para abrir arquivos ou alocar recursos para a transferência, caso não tenha feito isso ao iniciá-la.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aSendAcceptMsg
Ponteiro para a mensagem SendAccept que estamos processando.

SendInitHandler

uint16_t(* SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg)

Callback invocado ao receber uma mensagem SendInit.

A função dele é determinar se você quer aceitar o SendInit e, em caso afirmativo, definir aXfer->mIsAccepted=true para que o protocolo envie uma mensagem de aceitação para o iniciador. O objeto BDXTransfer é iniciado para as configurações padrão. Esse é um bom momento para anexar qualquer estado específico do aplicativo (identificadores de arquivo abertos etc.) a aXfer->mAppState. Também é preciso anexar os gerenciadores necessários para, por exemplo, lidar com blocos ao objeto BDXTransfer. Se for retornado um código de erro diferente de WEAVE_NO_ERROR, presume-se que a transferência foi rejeitada e o protocolo processará o envio de uma mensagem de rejeição com o código.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aSendInitMsg
Ponteiro para a mensagem SendInit que estamos processando

XferDoneHandler

void(* XferDoneHandler)(BDXTransfer *aXfer)

Lidar com casos em que a transferência é concluída.

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência

XferErrorHandler

void(* XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)

Gerenciar mensagens TransferError recebidas ou enviadas pelo BDX.

Observação:presume-se que a transferência BDX seja potencialmente recuperável (possivelmente temporária, por exemplo, fora dos pacotes Buffers no momento) e, portanto, a opção de chamar Shutdown() é deixada para o programador do aplicativo e os callbacks definidos. TODO: verifique e reconcilie com a linguagem no documento BDX, que afirma: "[Um TransferError] pode ser enviado a qualquer momento por qualquer uma das partes para encerrar prematuramente a transferência de dados em massa".

Detalhes
Parâmetros
[in] aXfer
Ponteiro para o BDXTransfer associado a essa transferência
[in] aXferError
Ponteiro para o erro da mensagem StatusReport que estamos processando

remotas

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckFlag retorna a sinalização adequada para o campo RequestAck, dependendo da conexão do contexto de troca (nenhuma confirmação de solicitação para TCP) e com base no suporte ao tempo de compilação para WRMP.

Detalhes
Parâmetros
[in] anEc
O contexto da troca em que vamos conseguir a sinalização com base
Retorna
0 ou kSendFlag_RequestAck