Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Atribui um valor máximo de espera (ou timeout) para a recepção de mensagens repostas de comandos vindas do servidor.

Sintaxe

Bloco de código
oRedisAfter := oRedisClient:SetRecvTimeout(nTimeInSeconds)

Parâmetros

NomeTipoDescriçãoObrigatórioReferênciaObservações
nTimeInSeconds
numérico

Número de segundos máximo a esperar; frações de segundo podem ser usadas

X

Retorno


Observações

  • Caso o método ::SetRecvTimeout() receba como parâmetro um valor inadequado de tempo de timeout, negativo ou nulo, o valor anterior não será alterado, e nem haverá indicação de erro.

  • O método ::SetRecvTimeout() altera diretamente o valor da propriedade ::nTimeout.  Apenas ele pode alterá-la;

  • O método ::SetRecvTimeout() é muito importante para aplicações críticas que dependam de tempo de resposta preciso; isto é: quanto o tempo o servidor Redis levará para responder.
E também


  • ::SetRecvTimeout() também é útil para uma aplicação que interaja com um servidor
remoto, que pode até mesmo não responder, devido a perda de conexão com o programa cliente, que tenta disparar comandos no servidor.
Por ora o
  • Redis ou muito ocupado, ou muito instável, pois permite ajustar o limite máximo de tempo que o cliente poderá aguardar por uma resposta, antes de considerar que ela não virá;

  • A chamada método ::SetRecvTimeout() não
retorna
  • gera um valor específico de resultado,
mas isto pode ser alterado em versões subsequentes da biblioteca.
  • e isto é indicado pelo valor negativo na propriedade ::nReplyType do objeto através tRedisClient do qual foi chamado.

    Em vez disso ::SetRecvTimeout() retorna o próprio objeto tRedisClient sobre o qual foi chamado.

  • Para avaliar o efeito de ::SetRecvTimeout(), e confirmar sua ação, deve-se consultar a propriedade ::nTimeout;

  • Caso o servidor não responda um comando emitido pelo cliente em um tempo (em segundos) menor do que o valor especificado em ::SetRecvTimeout(), o comando retornará com erro e essa informação será registrada na propriedade ::lOk, que conterá .F.

Exemplos

Exemplo 1 - uso básico de ::SetRecvTimeout()
Toggle Cloak

Cloak
cpptrue

A função de usuário SetTout()  mostra a ação de ::SetRevTimeout() de duas formas: a listagem dos atributos do objeto tRedisClient através de VarInfo(), e através da impressão direta da propriedade ::nTimeout.

Veja também

Exemplos

Bloco de código
languagecpp
linenumberstrue
#include 'protheus.ch'
  
// Setup Redis
Static cRedisHost := "tec-clima"
Static nRedisPort := 6379
Static cRedisAuth := ""
  
User Function redTst()
  oRedisCli:= tRedisClient():New()
  oRedisCli:Connect(cRedisHost, nRedisPort, cRedisAuth)
 
  If oRedisCli:lConnected)
    ConOut("Successful connection.")
 
    // Sets timeout of server answers to 10 seconds
	oRedisClient:SetRecvTimeout(10)

    // TODO Redis store manipulation commands

    oRdClient:Disconnect()
    ConOut("The client was disconnected from the server.")

    Return .T.
  EndIf
 
Return .F.
Veja também