Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
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.1.0 .5 em diante


HTML
<table border='1' width='100%'><tr bgcolor='#ccccff'><td colspan='2'><font size='+2'><b>Propriedades</b></font></td></tr><tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b>ClientInfoProp</b></font><table width='100%'><tr><td>          </td><td width='100%'>Setar o conteudo da propriedade client para envio da mensagem<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgId</b></font><table width='100%'><tr><td>          </td><td width='100%'>Indica um ID para a mensagem<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgType</b></font><table width='100%'><tr><td>          </td><td width='100%'>Indica o tipo da mensagem<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgContent</b></font><table width='100%'><tr><td>          </td><td width='100%'>Conteudo da mensagem<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgAud</b></font><table width='100%'><tr><td>          </td><td width='100%'>Conteudo para auditoria<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>numérico</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgDeliveryTag</b></font><table width='100%'><tr><td>          </td><td width='100%'>Indica uma flag de entrega da mensagem<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>numérico</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgAckDeliveryTag</b></font><table width='100%'><tr><td>          </td><td width='100%'>Seta a flag de entrega da mensagem no conhecimento de recebimento (metodo AckMessage)<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>numérico</font></td>
<td valign='top' width='100%'><font face='monospace'><b>MsgAck</b></font><table width='100%'><tr><td>          </td><td width='100%'>Seta a flag do metodo AckMessage<br />
</td></tr></table>
</td></tr>
</table>
<br />
<table border='1' width='100%'><tr bgcolor='#ccccff'><td colspan='2'><font size='+2'><b>Resumo dos Métodos</b></font></td></tr><tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#isrunning()'>isRunning</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Retorna verdadeiro (TRUE) se o gRPC Server esta rodando corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#clientsetup()'>clientSetup</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#tenantsetup()'>tenantSetup</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#tenantundo()'>tenantUndo</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#sendmessages()'>sendMessages</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Retorna verdadeiro (TRUE) se a mensagem foi enviada com sucesso ao gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#waitformessages()'>waitForMessages</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>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()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>lógico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#ackmessage()'>ackMessage</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>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()<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>numérico</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#errorcode()'>ErrorCode</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Codigo de erro (obs: erros 100 são internos)<br />
</td></tr></table>
</td></tr>
<tr><td valign='top' align='right'><font face='monospace'>caractere</font></td>
<td valign='top' width='100%'><font face='monospace'><b><a href='#errordesc()'>ErrorDesc</a></b>()</font><table width='100%'><tr><td>          </td><td width='100%'>Descricao do erro<br />
</td></tr></table>
</td></tr>
</table>
<br />
<table border='1' width='100%'><tr bgcolor='#ccccff'><td><font size='+2'><b>Detalhes dos Métodos</b></font></td></tr></table>

<a name='New()'><!-- --></a><p><b>New</b></p><dl><dt><font face='monospace'>Objeto - <b>New</b>()</p>
</font></dt><dd><p>Cria um objeto tGrpc com um servidor pelo protocolo gRPC no modelo do arquivo .proto informado. Atualmente, aceita o modelo Smartlink, predeterminado pela TOTVS.</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>objeto lRet</font> - retorna o objeto da classe</dd>
</dl><dl><dt><b>Exemplos:</b></dt>Local oClient := tGrpc():New("smartlink.proto","localhost",5001)<br />
</font></dd></dl></dd></dl><hr />

 <a name='isrunning()'><!-- --></a><p><b>isRunning</b></p><dl><dt><font face='monospace'>lógico - <b>isRunning</b>()</p>
</font></dt><dd><p>Checa se o gRPC Server esta rodando corretamente.</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - Retorna verdadeiro (TRUE) se o gRPC Server esta rodando corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>if ogRPC:isRunning()<br />
conout("Server is online")<br />
else<br />
conout(ogRPC:ErrorDesc())<br />
endif<br /><br />
   <br />
</font></dd></dl></dd></dl><hr />
<a name='clientsetup()'><!-- --></a><p><b>clientSetup</b></p><dl><dt><font face='monospace'>lógico - <b>clientSetup</b>()</p>
</font></dt><dd><p>Configura um client no servidor</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:ClientInfoProp = '{"dummy.json":{"clientproperties":[{"prop01": false}]}}'<br />
if ogRPC:clientSetup()<br />
conout(ogRPC:ErrorDesc())<br />
endif<br />

<br />
ogRPC:ClientInfoProp = '{"dummy.json":{"clientproperties":[{"prop01": true}]}}'<br />
if ogRPC:clientSetup()<br />
conout("configuração realizada com sucesso")<br />
endif<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='tenantsetup()'><!-- --></a><p><b>tenantSetup</b></p><dl><dt><font face='monospace'>lógico - <b>tenantSetup</b>()</p>
</font></dt><dd><p>Configura um um grupo ou entidade de recursos no servidor gRPC</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789"<br />
if ogRPC:tenantSetup()<br />
conout(ogRPC:ErrorDesc())<br />
endif<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='tenantundo()'><!-- --></a><p><b>tenantUndo</b></p><dl><dt><font face='monospace'>lógico - <b>tenantUndo</b>()</p>
</font></dt><dd><p>Desfaz a configuração um um grupo ou entidade de recursos no servidor gRPC</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - Retorna verdadeiro (TRUE) se a configuração funcionou no gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:ClientInfoProp := "e4vddea4-baba-4c9a-b772-gh77a5fce789"<br />
if ogRPC:tenantUndo()<br />
conout(ogRPC:ErrorDesc())<br />
endif<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='sendmessages()'><!-- --></a><p><b>sendMessages</b></p><dl><dt><font face='monospace'>lógico - <b>sendMessages</b>()</p>
</font></dt><dd><p>Envia uma mensagem do client para o servidor</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - Retorna verdadeiro (TRUE) se a mensagem foi enviada com sucesso ao gRPC Server corretamente. Em caso de erro retorna FALSE, consultar ErrorCode() e ErrorDesc()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
oGRPC:MsgId := "idval"<br />
oGRPC:MsgType := "C"<br />
oGRPC:MsgContent := "mensagem enviada do client para o server"<br />
oGRPC:MsgAud := "audience"<br />
oGRPC:MsgDeliveryTag := 0<br />

<br />

<br />
if ogRPC:sendMessage()<br />
conout("Mensagem enviada com sucesso)<br />
else<br />
conout(ogRPC:ErrorDesc())<br />
endif<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='waitformessages()'><!-- --></a><p><b>waitForMessages</b></p><dl><dt><font face='monospace'>caractere - <b>waitForMessages</b>()</p>
</font></dt><dd><p>Aguarda e recebe uma mensagem do servidor</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>caractere lRet</font> - 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()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:MsgContent := ""<br />
conout(ogRPC:waitForMessages())<br />
if(ogRPC:MsgContent = "")<br />
conout("erro, nao veio informacao do servidor")<br />
conout(ogRPC:ErrorDesc())<br />
else<br />
conout("Mensagem recebida com sucesso)<br />
endif<br />

<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='ackmessage()'><!-- --></a><p><b>ackMessage</b></p><dl><dt><font face='monospace'>lógico - <b>ackMessage</b>()</p>
</font></dt><dd><p>Envia reconhecimento de uma mensagem no cliente</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>lógico lRet</font> - 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()</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:MsgContent := ""<br />
conout(ogRPC:waitForMessages())<br />
if(ogRPC:MsgContent = "")<br />
conout("erro, nao veio informacao do servidor")<br />
conout(ogRPC:ErrorDesc())<br />
else<br />
oGRPC:MsgAckDeliveryTag := 1<br />
ogRPC:MsgAck := .T.<br />
if ogRPC:ackMessage()<br />
else<br />
conout("setar reconhecimento falhou")<br />
conout(ogRPC:ErrorDesc())<br />
endif<br />
conout("Mensagem recebida com sucesso)<br />
endif<br />

<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='errorcode()'><!-- --></a><p><b>ErrorCode</b></p><dl><dt><font face='monospace'>numérico - <b>ErrorCode</b>()</p>
</font></dt><dd><p>Retorna o codigo de erro do ultimo comando realizado</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>numérico lRet</font> - Codigo de erro (obs: erros 100 são internos)</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:MsgContent := ""<br />
conout(ogRPC:waitForMessages())<br />
if(ogRPC:MsgContent = "")<br />
conout("erro, nao veio informacao do servidor")<br />
conout(ogRPC:ErrorCode())<br />
else<br />
conout("Mensagem recebida com sucesso)<br />
endif<br />

<br />
[code]<br />
</font></dd></dl></dd></dl><hr />
<a name='errordesc()'><!-- --></a><p><b>ErrorDesc</b></p><dl><dt><font face='monospace'>caractere - <b>ErrorDesc</b>()</p>
</font></dt><dd><p>Retorna a descrição do erro do ultimo comando realizado</p>
<dl><dt><b>Retorno:</b></dt>
<dd><font face='monospace'>caractere lRet</font> - Descricao do erro</dd>
</dl><dl><dt><b>Exemplos:</b></dt>
<dd>[code]<br />
ogRPC:MsgContent := ""<br />
conout(ogRPC:waitForMessages())<br />
if(ogRPC:MsgContent = "")<br />
conout("erro, nao veio informacao do servidor")<br />
conout(ogRPC:ErrorDesc())<br />
else<br />
conout("Mensagem recebida com sucesso)<br />
endif<br />

<br />
[code]<br />
</font></dd></dl></dd></dl><br />