ORDENAR PRIORIDADES, DE FORMA TEMPORARIA.

RAFALNX 18/06/2012 09:32:51
#404352
Bom dia,

Estou montando um servidor telnet, onde outras máquinas se conectam para efetuar o envio de alertas SMS, porém preciso ordenar esse envio, por exemplo: envios de Prioridade 0, são mais importantes e precisam ser enviados antes que os de Prioridade 1, os de Prioridade 1, antes dos de Prioridade 2 e assim sucessivamente, com isso estou tendo dificuldades, não sei se a melhor forma é colocar em um arquivo temporário .txt, ou se existe uma outra forma que eu possa estar fazendo isso, pois a maior necessidade é que seja ordenado por ordem crescente, e o envio ocorre uma vez, ou seja, depois de enviado, essa linha deveria ser excluída.

Se alguém puder me dar uma luz, desde iá fico grato.

Abraços;
LLAIA 18/06/2012 15:33:56
#404386
O envio tem que ser imediato ao recebimento das mensagens no servidor, ou é de x em x unidades de tempo? Explique como vc está estruturando essa parte de recebimento das mensagens.
RAFALNX 18/06/2012 15:45:04
#404388
Preciso ordenar da seguinte forma..

Os alertas de prioridade 0 terão que ser enviados imediatamente, os de prioridade 1 somente quando não houver alertas de prioridade 0 na fila, por isso eventualmente irão ocorrer problemas de prioridade 1 e após os de prioridade 0, por isso preciso ordenar de forma crescente, para que o arquivo .bat com o comando para enviar SMS seja chamado antes dos que estão com prioridade 1.

Hoje apenas o cliente se conecta ao servidor telnet e chama o .bat referente a sua prioridade, porém ocorre que eventos de prioridade 5 por exemplo, são enviados antes dos que possuem prioridade 0,1,2...

Por isso minha dúvida, não sei como fazer essa ordenação, se através de arquivos .txt ou temporários.

Obrigado
FEDERHEN 18/06/2012 17:48:49
#404412
Acredito que você deve criar uma tabela com os seguintes campos:
MENSAGEM
PRIORIDADE
DATAHORA
ENVIADO
... e gravar os dados nesta tabela, para que entrem numa fila de envio.

Para mandar a mensagem, voce faz um
SELECT * FROM TABELA WHERE ENVIADO=[ô]N[ô] ORDER BY PRIORIDADE,DATAHORA
e envia sempre a mensagem para o primeiro registro retorno no select.

Após enviar a mensagem, você atualiza o campo ENVIADO para [ô]S[ô]

Para a proxima mensagem, você repete todo o processo a partir do SELECT...

LLAIA 19/06/2012 08:38:15
#404430
Esses bats pra cada prioridade, eles pegam os dados de onde? BD, arquivos? Como tá a arquitetura disso aí?
RAFALNX 19/06/2012 08:44:36
#404432
Pessoal,
Já consegui fazer a parte de gravar a prioridade e o comando que ela deve executar no programa, e ainda ordenar.
Só o que me falta no momento é ele ler a primeira linha desse banco de dados .mbd e depois excluir, fazer uma verificação se existem mais registros e fazer o mesmo com eles, dando uma pausa de 30 segundos entre uma leitura e outra.
Espero ter sido claro.

Obrigado
Tópico encerrado , respostas não são mais permitidas