Skip to content

guiaugusto/chat_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chat FSO

Informações sobre a implementação do Protocolo

  Segue os tópicos solicitados que já estão implementados no projeto.

  1. Criação do Chat: É possível criar uma chat personalizado com seu nome/apelido (chat-NAME).

   image

  1. Permissões: Após a criação da fila do próprio usuário é lhe concedido permissão de leitura e escrita para sua própria fila. Para os demais usuários é dado somente a permissão para escrita.

   image

  1. Formato da mensagem: Seguindo o solicitado, para enviar a mensagem deve-se escrever no seguinte formato DE:PARA:MENSAGEM. Onde o programa enviará a mensagem ao usuário que terá seu nome substituído no campo "PARA". Sendo então mostrado ao destinatário a mensagem no formato REMETENTE: MENSAGEM.

   image

  OBS 1: Sendo a função de verificação de mensagem na fila é blocante, foi criado uma thread para que não haja disputa de prioridade e trave o programa enquanto o usuário não receba uma mensagem.

  1. Fila inexistente: Caso o destinatário da mensagem não exista, será mostrado ao remetente a mensagem UNKNOWUSER <DESTINATÁRIO>.

   image

  1. Retry: Ao enviar uma mensagem, a fila do destinatário esteja cheia, ou por algum motivo de conexão não foi possível conectar a fila, são efetuadas três outras tentativas que espera um certo tempo para tentar reenviá-la novamente, isso tudo acontecendo em uma nova thread.

  2. Usuários onlines: Um usuário é considerado online quando sua fila está criada. Então, foi criado um comando chamado List que quando acionado, ele lista todos os usuários que estão ativos naquele momento. Facilitando então o envio da mensagem para quem o usuário deseja.

   image

  1. Broadcast: Ao digitar DE:ALL:MENSAGEM, a mensagem é enviada para todos os usuários que estão onlines naquele momento, aparecendo aos destinatários a seguinte mensagem Broadcast de : MENSAGEM.

   image

  1. Terminar execução: Foi bloqueado o comando Ctrl+C para finalizar a execução do programa. Assim, quando o usuário tenta finalizar, é apresentado uma mensagem solicitando que digite "Sair" para a finalizar o programa.

   image

Bonus

  1. Foram acrescentadas cores aos textos para diferenciar cada ação do chat.

 Segue então as cores do chat:

  • Verde: Mensagem do usuário remetente
  • Rosa: Mensagem do usuário destinatário
  • Amarelo: Mensagem de validações, UNKNOWUSER, Mensagem vazia, etc.
  • Vermelho: Mensagem de aviso, "Digite o comando sair para finalizar a execução"
  1. Caso o usuário esteja com alguma dúvida sobre o que ele pode fazer, ele poderá digitar o help que o auxiliará em como utilizar o programa.

   image

  1. E para saber mais sobre o estado da sua fila, basta o usuário digitar stats que conseguirá ver algumas informações sobre sua fila.

   image

Problemas conhecidos

  1. Quando você está digitando uma mensagem e recebe uma mensagem do broadcast, a mensagem a qual você está escrevendo é resetada.

Dificuldades de implementação das Threads

  1. Foi uma implementação um pouco mais tranquila, baseada no estudo que os membros do projeto já estavam fazendo. Então a maior dificuldade foi quando necessário fazer o Retry da mensagem, tendo que reenviá-la três vezes.

Comandos para executar

  1. Execute o comando seguinte para compilar e executar o código:
make run-all

  Com o comando anterior você já consegue criar seu próprio chat e conversa com outras pessoas.

  1. Caso queira abrir novos chats, não há necessidade de executar tudo novamente, então rode somente o seguinte comando em uma outra aba do terminal:
make run

About

A simple chat system with mqueue comunication

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published