rsfbclient icon indicating copy to clipboard operation
rsfbclient copied to clipboard

EventAlert

Open timanagement opened this issue 2 years ago • 5 comments

Desde já quero parabenizar todos os envolvidos. Existe algo para utilização de Firebird EventAlert no RUST com a rsfbclient ?

timanagement avatar Sep 24 '22 07:09 timanagement

Desde já quero parabenizar todos os envolvidos.

Obrigado

Existe algo para utilização de Firebird EventAlert no RUST com a rsfbclient ?

Ainda não, mas posso implementar. Tens um caso de uso ou algum fonte/biblioteca de outra linguagem para servir de exemplo?

fernandobatels avatar Sep 24 '22 21:09 fernandobatels

Caro Fernando, criei um projeto console com .Net6 onde pode ser verificado a aplicação do FbRemoteEvent que pertence ao package FirebirdSql.Data.FirebirdClient

Juntei ao projeto demo a base de dados que criei para este exemplo.

Depois vou subir um projeto de conexão com RUST usando a tua crates e deixar público para ajudar quem desejar aprender RUST e conectar ao Firebird.

https://github.com/timanagement/console_fbevent

timanagement avatar Sep 26 '22 08:09 timanagement

Bacana. Vou verificar o material e estudar como trazer esse recurso para a crate.

fernandobatels avatar Sep 27 '22 01:09 fernandobatels

Bacana. Vou verificar o material e estudar como trazer esse recurso para a crate.

Será muito bem vindo, pois permitirá, por exemplo, criar uma aplicação como serviço que execute determinada rotina acionada por um evento...

Se precisar de algo a mais, por favor não deixe de comunicar.

timanagement avatar Sep 27 '22 07:09 timanagement

Essa API de eventos do Firebird é bem desafiadora hehe. Até o momento fiquei levantando o material sobre o assunto e tudo o que precisarei implementar.

Você possui experiência com essa API a nível mais baixo? Pelo que andei vendo, preciso registrar o evento no fb e manter um loop esperando pela operação op_event.

fernandobatels avatar Oct 19 '22 01:10 fernandobatels

Na verdade, pelo pouco que analisei, o componente que trata eventos estabelece uma conexão direta com o banco(penso que teria que ter uma crate que lide diretamente com a conexão com o banco) e então quando registramos um evento, o SGDB retorna a string registrada para todos que se registraram.

Segundo o manual, os eventos retornam string.

Infelizmente não possuo experiências, além do uso, conforme descrito no manual o qual deixarei o link abaixo:

https://www.firebirdsql.org/file/documentation/papers_presentations/Power_Firebird_events.pdf

Outro link que possa te interessar para estudo, é sobre o node e de como eles usam o "fb-native.cpp" para lidar com eventos. Em especial, a partir da linha 226:

https://github.com/asfernandes/node-firebird-drivers/blob/master/packages/node-firebird-native-api/src/native/fb-native.cpp

Ou diretamente olhando em:

https://github.com/FirebirdSQL/firebird/blob/master/examples/interfaces/08.events.cpp

timanagement avatar Nov 02 '22 02:11 timanagement

Sim. Consegui um material bom nos exemplos do firebird:

https://github.com/FirebirdSQL/firebird/blob/master/examples/api/api16.c#L131

Ainda não tive uma grade evolução, mas aos poucos vai avançando.

fernandobatels avatar Nov 02 '22 13:11 fernandobatels

Travei no isc_event_block. Vou deixar essa issue de lado por um tempo. Mais tarde faço push do que estava sendo desenvolvido. Futuramente volto a atacar esse problema.

fernandobatels avatar Nov 15 '22 14:11 fernandobatels

Caro Fernando, vou buscando mais informações e, caso encontre, vou reportando aqui. Desde já agradeço seus esforços.

Como é o caso deste material da embarcadero:

https://docwiki.embarcadero.com/InterBase/2020/en/Creating_EPBs_with_isc_event_block(_)

timanagement avatar Nov 21 '22 16:11 timanagement

Travei no isc_event_block. Vou deixar essa issue de lado por um tempo. Mais tarde faço push do que estava sendo desenvolvido. Futuramente volto a atacar esse problema.

Tem um repositório que implementou para uso com node: node-firebird-libfbclient. Acredito que mostra o ponto onde vc disse ter travado. Veja os dois arquivos abaixo:

fb-bindings-eventblock.h fb-bindings-eventblock.cc

https://github.com/xdenser/node-firebird-libfbclient/tree/master/src

Espero que seja útil.

Abraços

timanagement avatar Dec 10 '22 09:12 timanagement

Opa.

Aparentemente o isc_event_block não foi usado, vou tentar entender como o projeto usa o isc_que_events sem ele.

Obrigado pelo material.

fernandobatels avatar Dec 14 '22 02:12 fernandobatels

Consegui passar o do isc_event_block. Resolvi recorrer ao stackoverflow e deu boa. Logo subo novos commits.

fernandobatels avatar Dec 21 '22 12:12 fernandobatels

@timanagement , creio que deu certo. Você poderia testar a branch firebird-events e verificar se já lhe atende?

fernandobatels avatar Jan 25 '23 02:01 fernandobatels

Seus esforços resultaram em sucesso.

Vou tentar descrever:

Na 1ª imagem está a configuração no seu exemplo para acessar o BD.

Na 2ª imagem está a Trigger criada para escutar o evento "SINC_USUARIO".

Na 3ª imagem está o que será executado, todas as vezes que o evento for escutado.

Na 4ª imagem está o resultado obtido.

imagem 1 image

imagem 2 image

imagem 3 image

imagem 4 image

timanagement avatar Jan 28 '23 22:01 timanagement

Não tenho palavras para te agradecer...

timanagement avatar Jan 28 '23 22:01 timanagement

Hehe, que bom que você curtiu.

Essa semana resolvo o que foi apontado na PR e solto uma nova versão da crate. Obrigado pela paciência e consideração.

fernandobatels avatar Jan 29 '23 20:01 fernandobatels

Crate atualizada. Agora para usar o novo recurso basta usar a nova versão 0.23.0

fernandobatels avatar Jan 31 '23 00:01 fernandobatels

Crate atualizada. Agora para usar o novo recurso basta usar a nova versão 0.23.0

Perfeito. Obrigado mais uma vez.

timanagement avatar Feb 02 '23 05:02 timanagement