A classe tGrpc realiza a comunicação GRPC do Application Server e um servidor GRPC através de um conjunto de chamadas de mensagens preestabelecidos.
Observações
- A classe suporta atualmente um conjunto de mensagens preestabelecidas, sendo possivel utilizar para comunicação com outros produtos atraves do protocolo GPRC, desde que utilizem as mesmas mensagens suportadas.
Exemplos
user function Example(aResult) ogRPC := tGrpc():New("smartlink.proto", "localhost",5001) if ogRPC:isRunning() conout("Server is online") else conout(ogRPC:ErrorDesc()) return endif ogRPC:ClientInfoProp := '{"dummy.json":{"clientproperties":[{"prop01": false}]}}' if ogRPC:clientSetup() conout(ogRPC:ErrorDesc()) endif ogRPC:ClientInfoProp := '{"dummy.json":{"clientproperties":[{"prop01": true}]}}' if(ogRPC:clientSetup() == .F.) conout(ogRPC:ErrorDesc()) endif ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789" if (ogRPC:tenantSetup() == .F.) conout(ogRPC:ErrorDesc()) endif ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789" if (ogRPC:tenantUndo() == .F.) conout(ogRPC:ErrorDesc()) endif oGRPC:MsgId := "idval" oGRPC:MsgType := "C" oGRPC:MsgContent := "mensagem enviada do client para o server" oGRPC:MsgAud := "audience" oGRPC:MsgDeliveryTag := 0 if ogRPC:sendMessage() conout("Mensagem enviada com sucesso") else conout(ogRPC:ErrorDesc()) endif conout(ogRPC:waitForMessages()) if(ogRPC:MsgContent = "mensagem enviada do client para o server") conout("erro, nao veio informacao do servidor") else oGRPC:MsgAckDeliveryTag := 1 ogRPC:MsgAck := .T. ogRPC:ackMessage() conout("waitForMessages ok!") endif return
Abrangência
20.3.0.5 em diante
Propriedades | |||
caractere | ClientInfoProp
| ||
caractere | MsgId
| ||
caractere | MsgType
| ||
caractere | MsgContent
| ||
caractere | MsgAud
| ||
numérico | MsgDeliveryTag
| ||
numérico | MsgAckDeliveryTag
| ||
numérico | MsgAck
|
Resumo dos Métodos | |||
lógico | isRunning()
| ||
lógico | clientSetup()
| ||
lógico | tenantSetup()
| ||
lógico | tenantUndo()
| ||
lógico | sendMessages()
| ||
caractere | waitForMessages()
| ||
lógico | ackMessage()
| ||
numérico | ErrorCode()
| ||
caractere | ErrorDesc()
|
Detalhes dos Métodos |
New
- Objeto - New()
Cria um objeto tGrpc com um servidor pelo protocolo gRPC no modelo do arquivo .proto informado. Atualmente, aceita o modelo Smartlink, predeterminado pela TOTVS.
- Retorno:
- objeto lRet - retorna o objeto da classe
- Exemplos: Local oClient := tGrpc():New("smartlink.proto","localhost",5001)
isRunning
- lógico - isRunning()
Checa se o gRPC Server esta rodando corretamente.
- Retorno:
- lógico lRet - Retorna verdadeiro (TRUE) se o gRPC Server esta rodando corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()
- Exemplos: if ogRPC:isRunning()
conout("Server is online")
else
conout(ogRPC:ErrorDesc())
endif
clientSetup
- lógico - clientSetup()
Configura um client no servidor
- Retorno:
- lógico lRet - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
ogRPC:ClientInfoProp = '{"dummy.json":{"clientproperties":[{"prop01": false}]}}'
if ogRPC:clientSetup()
conout(ogRPC:ErrorDesc())
endif
ogRPC:ClientInfoProp = '{"dummy.json":{"clientproperties":[{"prop01": true}]}}'
if ogRPC:clientSetup()
conout("configuração realizada com sucesso")
endif
[code]
tenantSetup
- lógico - tenantSetup()
Configura um um grupo ou entidade de recursos no servidor gRPC
- Retorno:
- lógico lRet - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789"
if ogRPC:tenantSetup()
conout(ogRPC:ErrorDesc())
endif
[code]
tenantUndo
- lógico - tenantUndo()
Desfaz a configuração um um grupo ou entidade de recursos no servidor gRPC
- Retorno:
- lógico lRet - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789"
if ogRPC:tenantUndo()
conout(ogRPC:ErrorDesc())
endif
[code]
sendMessages
- lógico - sendMessages()
Envia uma mensagem do client para o servidor
- Retorno:
- lógico lRet - Retorna verdadeiro (TRUE) se a mensagem foi enviada com sucesso ao gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
oGRPC:MsgId := "idval"
oGRPC:MsgType := "C"
oGRPC:MsgContent := "mensagem enviada do client para o server"
oGRPC:MsgAud := "audience"
oGRPC:MsgDeliveryTag := 0
if ogRPC:sendMessage()
conout("Mensagem enviada com sucesso)
else
conout(ogRPC:ErrorDesc())
endif
[code]
waitForMessages
- caractere - waitForMessages()
Aguarda e recebe uma mensagem do servidor
- Retorno:
- caractere lRet - Retorna o conteudo da mensagem (tambem setada em :MsgContent) se a mensagem foi recebida com sucesso ao gRPC Server corretamente. Em caso de erro não altera o conteudo da :MsgContent, e pode ser consultado ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
ogRPC:MsgContent := ""
conout(ogRPC:waitForMessages())
if(ogRPC:MsgContent = "")
conout("erro, nao veio informacao do servidor")
conout(ogRPC:ErrorDesc())
else
conout("Mensagem recebida com sucesso)
endif
[code]
ackMessage
- lógico - ackMessage()
Envia reconhecimento de uma mensagem no cliente
- Retorno:
- lógico lRet - Retorna o conteudo da mensagem (tambem setada em :MsgContent) se a mensagem foi recebida com sucesso ao gRPC Server corretamente. Em caso de erro não altera o conteudo da :MsgContent, e pode ser consultado ErrorCode() e ErrorDesc()
- Exemplos:
- [code]
ogRPC:MsgContent := ""
conout(ogRPC:waitForMessages())
if(ogRPC:MsgContent = "")
conout("erro, nao veio informacao do servidor")
conout(ogRPC:ErrorDesc())
else
oGRPC:MsgAckDeliveryTag := 1
ogRPC:MsgAck := .T.
if ogRPC:ackMessage()
else
conout("setar reconhecimento falhou")
conout(ogRPC:ErrorDesc())
endif
conout("Mensagem recebida com sucesso)
endif
[code]
ErrorCode
- numérico - ErrorCode()
Retorna o codigo de erro do ultimo comando realizado
- Retorno:
- numérico lRet - Codigo de erro (obs: erros 100 são internos)
- Exemplos:
- [code]
ogRPC:MsgContent := ""
conout(ogRPC:waitForMessages())
if(ogRPC:MsgContent = "")
conout("erro, nao veio informacao do servidor")
conout(ogRPC:ErrorCode())
else
conout("Mensagem recebida com sucesso)
endif
[code]
ErrorDesc
- caractere - ErrorDesc()
Retorna a descrição do erro do ultimo comando realizado
- Retorno:
- caractere lRet - Descricao do erro
- Exemplos:
- [code]
ogRPC:MsgContent := ""
conout(ogRPC:waitForMessages())
if(ogRPC:MsgContent = "")
conout("erro, nao veio informacao do servidor")
conout(ogRPC:ErrorDesc())
else
conout("Mensagem recebida com sucesso)
endif
[code]