nl:: Inet:: TCPEndPoint
#include <src/inet/TCPEndPoint.h>
Os objetos dessa classe representam endpoints de transporte TCP.
Resumo
A Nest Inet Layer encapsula métodos para interagir com endpoints de transporte TCP (soquetes SOCK_STREAM em sistemas Linux e derivados BSD) ou blocos de controle de protocolo TCP LwIP, já que o sistema é configurado de acordo.
Herança
Herda de: nl::Inet::EndPointBasis
Tipos públicos |
|
---|---|
@10{
|
enum Estado dinâmico básico do endpoint subjacente. |
OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de manipulação de eventos de erro de aceitação de conexão. |
OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de manipulação de eventos de estabelecimento de conexão. |
OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
|
typedefvoid(*
Tipo de função de manipulação de eventos de estabelecimento de conexão. |
OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
|
typedefvoid(*
Tipo de conexão da função de manipulação de eventos recebida. |
OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
|
typedefvoid(*
Tipo de função de manipulação de eventos de recepção de dados. |
OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
|
typedefvoid(*
Tipo de função de manipulação do evento de transmissão de dados. |
OnPeerCloseFunct)(TCPEndPoint *endPoint)
|
typedefvoid(*
Tipo de função de manipulação de eventos de recepção de meia-fechada. |
OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
|
typedefvoid(*
O tipo de TCP SubmitIdle mudou a função de manipulação de sinal. |
Atributos públicos |
|
---|---|
OnAcceptError
|
Delegado da função de manipulação de eventos de aceitação de conexão do endpoint.
|
OnConnectComplete
|
Delegado da função de processamento de eventos de estabelecimento de conexão do endpoint.
|
OnConnectionClosed
|
O delegado da função de manipulação do evento de fechamento do endpoint.
|
OnConnectionReceived
|
A conexão do endpoint recebe a delegação da função de manipulação de eventos.
|
OnDataReceived
|
O delegado da função de manipulação do evento de recepção de texto de mensagem do endpoint.
|
OnDataSent
|
O delegado da função de processamento do evento de transmissão de texto de mensagem do endpoint.
|
OnPeerClose
|
O delegado da função de processamento de eventos de recebimento de meio-fechamento do endpoint.
|
OnTCPSendIdleChanged
|
O delegado da função de manipulação de eventos do endpoint sinaliza quando a inatividade do canal de envio da conexão TCP muda.
|
ReceiveEnabled
|
bool
Chave de controle que indica se o aplicativo está recebendo dados.
|
State
|
enum nl::Inet::TCPEndPoint::@10
Estado dinâmico básico do endpoint subjacente.
|
Funções públicas |
|
---|---|
Abort(void)
|
void
fechar o endpoint de forma cancelada, ou seja, enviar pacotes RST.
|
AckReceive(uint16_t len)
|
Confirmar o recebimento do texto da mensagem.
|
Bind(IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr)
|
Vincule o endpoint a um endereço IP de interface.
|
Close(void)
|
Iniciar o fechamento total do TCP, ou seja, finalizado com envio e recebimento.
|
Connect(IPAddress addr, uint16_t port, InterfaceId intf)
|
Inicie uma conexão TCP.
|
DisableKeepAlive(void)
|
Desative a opção "keep-alive" do TCP.
|
DisableReceive(void)
|
void
Desativar recepção.
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
Ative a opção "keep-alive" do TCP.
|
EnableNoDelay(void)
|
"EnableNoDelay".
|
EnableReceive(void)
|
void
Ativar recepção.
|
Free(void)
|
void
Iniciar (ou continuar) o fechamento total do TCP, ignorando erros.
|
GetLocalInfo(IPAddress *retAddr, uint16_t *retPort)
|
Extraia o endereço IP e a porta TCP do endpoint local.
|
GetPeerInfo(IPAddress *retAddr, uint16_t *retPort) const
|
Extraia o endereço IP e a porta TCP do endpoint remoto.
|
IsConnected(void) const
|
bool
Extraia se a conexão TCP está estabelecida.
|
Listen(uint16_t backlog)
|
Prepare o endpoint para receber mensagens TCP.
|
LogId(void)
|
uint16_t
Consiga um identificador para o endpoint.
|
MarkActive(void)
|
void
Observe que a atividade, ou seja, redefina o timer ocioso.
|
PendingReceiveLength(void)
|
uint32_t
Extraia o tamanho dos dados de recebimento não confirmados.
|
PendingSendLength(void)
|
uint32_t
Extraia o tamanho dos dados que aguardam a primeira transmissão.
|
PutBackReceivedData(Weave::System::PacketBuffer *data)
|
Enviar o texto da mensagem de volta para o cabeçalho da fila de recebimento.
|
Send(Weave::System::PacketBuffer *data, bool push)
|
Envie o texto da mensagem na conexão TCP.
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
Defina o tempo limite para que o Connect seja bem-sucedido ou retorne um erro.
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
Define a opção de soquete TCP_USER_TIMEOUT.
|
Shutdown(void)
|
Iniciar o fechamento do TCP, ou seja, concluir o envio.
|
Tipos públicos
10
@10
Estado dinâmico básico do endpoint subjacente.
Os objetos são inicializados no estado "ready" e passam para os estados subsequentes correspondentes a uma simplificação dos estados da máquina de estado de transporte TCP.
Observação:a enumeração de estado kBasisState_Closed
é mapeada para kState_Ready
por motivos históricos de compatibilidade binária. O kState_Closed
existente existe para identificar separadamente a distinção entre "ainda não aberto" e "aberto anteriormente, agora fechado", que existia anteriormente nos estados kState_Ready
e kState_Closed
.
Propriedades | |
---|---|
kState_Bound
|
Endpoint vinculado, mas sem detecção. |
kState_Closed
|
Endpoint fechado, pronto para lançamento. |
kState_Closing
|
Endpoint fechando bidirecionalmente. |
kState_Connected
|
Endpoint conectado, pronto para tx/rx. |
kState_Connecting
|
O endpoint está tentando se conectar. |
kState_Listening
|
Endpoint que recebe conexões. |
kState_Ready
|
O endpoint foi inicializado, mas não está vinculado. |
kState_ReceiveShutdown
|
O endpoint respondeu ao fechamento parcial. |
kState_SendShutdown
|
O endpoint iniciou o fechamento. |
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de manipulação de eventos de erro de aceitação de conexão.
Forneça uma função desse tipo ao membro delegado OnAcceptError
para processar eventos de erro de aceitação de conexão em endPoint
. O argumento err
fornece detalhes específicos sobre o tipo do erro.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de manipulação de eventos de estabelecimento de conexão.
Forneça uma função desse tipo ao membro delegado OnConnectComplete
para processar eventos de estabelecimento de conexão em endPoint
. O argumento err
distingue conexões bem-sucedidas de falhas.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Tipo de função de manipulação de eventos de estabelecimento de conexão.
Forneça uma função desse tipo ao membro delegado OnConnectionClosed
para processar eventos de encerramento de conexão em endPoint
. O argumento err
distingue encerramentos bem-sucedidos de falhas.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnConnectionReceivedFunct
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Tipo de conexão da função de manipulação de eventos recebida.
Forneça uma função desse tipo ao membro delegado OnConnectionReceived
para processar eventos de recepção de conexão em listeningEndPoint
. O endpoint conEndPoint
recém-recebido está localizado no endereço IP peerAddr
e na porta TCP peerPort
.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Tipo de função de manipulação de eventos de recepção de dados.
Forneça uma função desse tipo ao membro delegado OnDataReceived
para processar eventos de recepção de dados no endPoint
, em que data
é o texto da mensagem recebida.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Um manipulador de eventos de recepção de dados precisa confirmar os dados processados usando o método AckReceive
. O método Free
no buffer de dados também precisa ser invocado, a menos que PutBackReceivedData
seja usado.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Tipo de função de manipulação do evento de transmissão de dados.
Forneça uma função desse tipo ao membro delegado OnDataSent
para processar eventos de transmissão de dados em endPoint
, em que len
é o tamanho do texto da mensagem adicionado à janela de transmissão TCP, que está qualificado para envio pela pilha de rede subjacente.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Tipo de função de manipulação de eventos de recepção de meia-fechada.
Forneça uma função desse tipo ao membro delegado OnPeerClose
para processar eventos de encerramento de conexão em endPoint
.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
O tipo de TCP SubmitIdle mudou a função de manipulação de sinal.
Forneça uma função desse tipo ao membro delegado OnTCPSendIdleChanged
para processar o evento do canal de envio do TCPEndPoint mudando de estado entre inativo e não inativo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
Atributos públicos
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Delegado da função de manipulação de eventos de aceitação de conexão do endpoint.
OnConnectComplete
OnConnectCompleteFunct OnConnectComplete
Delegado da função de processamento de eventos de estabelecimento de conexão do endpoint.
OnConnectionClosed
OnConnectionClosedFunct OnConnectionClosed
O delegado da função de manipulação do evento de fechamento do endpoint.
OnConnectionReceived
OnConnectionReceivedFunct OnConnectionReceived
A conexão do endpoint recebe a delegação da função de manipulação de eventos.
OnDataReceived
OnDataReceivedFunct OnDataReceived
O delegado da função de manipulação do evento de recepção de texto de mensagem do endpoint.
OnDataSent
OnDataSentFunct OnDataSent
O delegado da função de processamento do evento de transmissão de texto de mensagem do endpoint.
OnPeerClose
OnPeerCloseFunct OnPeerClose
O delegado da função de processamento de eventos de recebimento de meio-fechamento do endpoint.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
O delegado da função de manipulação de eventos do endpoint sinaliza quando a inatividade do canal de envio da conexão TCP muda.
Isso é utilizado pelas camadas superiores para tomar as medidas apropriadas com base na entrega confiável dos dados enviados ao peering.
ReceiveEnabled
bool ReceiveEnabled
Chave de controle que indica se o aplicativo está recebendo dados.
Estado
enum nl::Inet::TCPEndPoint::@10 State
Estado dinâmico básico do endpoint subjacente.
Os objetos são inicializados no estado "ready" e passam para os estados subsequentes correspondentes a uma simplificação dos estados da máquina de estado de transporte TCP.
Observação:a enumeração de estado kBasisState_Closed
é mapeada para kState_Ready
por motivos históricos de compatibilidade binária. O kState_Closed
existente existe para identificar separadamente a distinção entre "ainda não aberto" e "aberto anteriormente, agora fechado", que existia anteriormente nos estados kState_Ready
e kState_Closed
.
Funções públicas
Cancelar
void Abort( void )
fechar o endpoint de forma cancelada, ou seja, enviar pacotes RST.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Confirmar o recebimento do texto da mensagem.
Use este método para confirmar a recepção de todos ou parte dos dados recebidos. A semântica operacional será indefinida se len
for maior que o total de dados recebidos não confirmados pendentes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
Vincular
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Vincule o endpoint a um endereço IP de interface.
Vincula o endpoint ao endereço IP da interface de rede especificado.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||
Valores de retorno |
|
Em LwIP, esse método não pode ser chamado com o bloqueio de pilha LwIP já adquirido.
Fechar
INET_ERROR Close( void )
Iniciar o fechamento total do TCP, ou seja, finalizado com envio e recebimento.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|
Conectar
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Inicie uma conexão TCP.
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
DisableKeepAlive
INET_ERROR DisableKeepAlive( void )
Desative a opção "keep-alive" do TCP.
TCPEndPoint::DesativarKeepAlive.
Desativar sondagens de sinal de atividade do TCP na conexão TCP associada.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Valores de retorno |
|
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método não fará nada se os sinais de atividade não tiverem sido ativados no endpoint.
DisableReceive
void DisableReceive( void )
Desativar recepção.
Desative todos os manipuladores de eventos. Os dados enviados para um endpoint que desativa a recepção serão confirmados até que a janela de recebimento se esgote.
EnableKeepAlive
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
Ative a opção "keep-alive" do TCP.
Começa a transmitir automaticamente segmentos de sondagem de "keep-alive" TCP a cada interval
segundos. A conexão será cancelada automaticamente após receber uma resposta negativa ou enviar timeoutCount
segmentos de sondagem sem receber uma resposta positiva.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||
Valores de retorno |
|
Consulte o RFC 1122, seção 4.2.3.6 para obter detalhes da especificação.
Ativar sondagens de sinal de atividade TCP na conexão TCP associada.
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método pode ser chamado várias vezes para ajustar o intervalo de sinal de atividade ou a contagem de tempo limite.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
EnableNoDelay
INET_ERROR EnableNoDelay( void )
"EnableNoDelay".
Desative o algoritmo de buffering de nagle no TCP definindo as opções de soquete TCP_NODURATION.
EnableReceive
void EnableReceive( void )
Ativar recepção.
Ative todos os manipuladores de eventos. Os dados enviados para um endpoint que desativa a recepção serão confirmados até que a janela de recebimento se esgote.
Sem custo financeiro
void Free( void )
Iniciar (ou continuar) o fechamento total do TCP, ignorando erros.
O objeto é retornado para o pool sem custo financeiro, e todas as referências de usuário restantes se tornam inválidas posteriormente.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Extraia o endereço IP e a porta TCP do endpoint local.
Não use valores de ponteiro NULL
para nenhum dos argumentos.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Extraia o endereço IP e a porta TCP do endpoint remoto.
Não use valores de ponteiro NULL
para nenhum dos argumentos.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
IsConnected
bool IsConnected( void ) const
Extraia se a conexão TCP está estabelecida.
Ouvir
INET_ERROR Listen( uint16_t backlog )
Prepare o endpoint para receber mensagens TCP.
Se State
já for kState_Listening
, nenhuma operação será realizada. Caso contrário, o State
será definido como kState_Listening
e o endpoint estará preparado para receber mensagens TCP, de acordo com a semântica da plataforma.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
Em algumas plataformas, o argumento backlog
não é usado (a profundidade da fila é fixa; apenas uma conexão pode ser aceita por vez).
Em sistemas LwIP, esse método não pode ser chamado com o bloqueio de pilha LwIP já adquirido
LogId
uint16_t LogId( void )
Consiga um identificador para o endpoint.
Detalhes | |
---|---|
Retorna |
Retorna um identificador exclusivo opaco para registros de uso.
|
MarkActive
void MarkActive( void )
Observe que a atividade, ou seja, redefina o timer ocioso.
Redefina o timer de inatividade para zero.
PendingReceiveLength
uint32_t PendingReceiveLength( void )
Extraia o tamanho dos dados de recebimento não confirmados.
Detalhes | |
---|---|
Retorna |
Número de bytes na fila de recebimento que ainda não foram confirmados com
AckReceive(uint16_t len) . |
PendingSendLength
uint32_t PendingSendLength( void )
Extraia o tamanho dos dados que aguardam a primeira transmissão.
Detalhes | |
---|---|
Retorna |
Número de bytes não transmitidos na fila de transmissão.
|
PutBackReceivedData
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Enviar o texto da mensagem de volta para o cabeçalho da fila de recebimento.
Esse método só pode ser chamado por manipuladores de eventos de recepção de dados para colocar uma parte não confirmada dos dados de volta na fila de recebimento. A semântica operacional será indefinida se o autor da chamada estiver fora do escopo de um manipulador de eventos de recepção de dados, data
não for o Weave::System::PacketBuffer
fornecido ao gerenciador ou data
não contiver a parte não confirmada restante após os bytes reconhecidos por uma chamada anterior para o método AckReceive(uint16_t len)
.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
Enviar
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
Envie o texto da mensagem na conexão TCP.
O método Weave::System::PacketBuffer::Free
é chamado no argumento data
, independentemente do sucesso da transmissão ou da falha.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Defina o tempo limite para que o Connect seja bem-sucedido ou retorne um erro.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
Define a opção de soquete TCP_USER_TIMEOUT.
Quando o valor é maior que 0, ele especifica o tempo máximo em milissegundos em que os dados transmitidos podem permanecer não confirmados antes que o TCP force o fechamento da conexão correspondente. Se o valor da opção for especificado como 0, o TCP usará o padrão do sistema. Consulte RFC 5482 para mais detalhes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
Define a opção de soquete de tempo limite do usuário TCP.
Quando o valor é maior que 0, ele especifica o tempo máximo em milissegundos em que os dados transmitidos podem permanecer não confirmados antes que o TCP force o fechamento da conexão correspondente. Se o valor da opção for especificado como 0, o TCP usará o padrão do sistema. Consulte RFC 5482 para mais detalhes.
Observação:esse método só pode ser chamado quando o endpoint está em um dos estados conectados. Esse método pode ser chamado várias vezes para ajustar o intervalo de sinal de atividade ou a contagem de tempo limite.
Desligamento
INET_ERROR Shutdown( void )
Iniciar o fechamento do TCP, ou seja, concluir o envio.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Valores de retorno |
|