Skip to content
Snippets Groups Projects
Select Git revision
  • 5c71fbd418fcbbb4587bdd05f6c46d42bdd8fec2
  • master default protected
  • hai
  • isaac
  • CheHao
  • Eldar
  • mpriymak
  • master-before-merging-with-hai
  • master-before-merging-with-isaac
  • rmi-working-before-merging-with-isaac
  • all-code-merged-by-hai-v1
11 results

ChatController.java

Blame
  • ChatController.java 2.32 KiB
    package server;
    
    import remote.IChatController;
    import remote.IChatUpdate;
    
    import java.io.Serializable;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    
    public class ChatController extends UnicastRemoteObject implements IChatController, Serializable
    {
        private Server server;
    
        public ChatController(Server server) throws RemoteException
        {
            this.server = server;
        }
    
        @Override
        public boolean broadcastMessage(String fromClient, String message) throws RemoteException
        {
            System.out.print("Broadcasting message to everyone...");
    
            for( User u : server.users )
            {
                u.getIChatUpdate().notifyChat(fromClient, message, false);
            }
    
            System.out.print("...DONE\n");
    
            return true;
        }
    
        @Override
        public boolean broadcastMessageUserLogin(String fromClient) throws RemoteException {
            System.out.print("Broadcasting message to everyone...");
    
            IChatUpdate client;
    
            for( User u : server.users )
            {
                client = u.getIChatUpdate();
                client.notifyUserLogin(fromClient);
            }
    
            System.out.print("...DONE\n");
            System.out.println(fromClient + " has joined the room.");
    
            return true;
        }
    
        @Override
        public boolean broadcastMessageUserLogout(String fromClient) throws RemoteException {
            System.out.print("Broadcasting message to everyone...");
    
            IChatUpdate client;
    
            for( User u : server.users )
            {
                client = u.getIChatUpdate();
                client.notifyUserLogout(fromClient);
            }
    
            System.out.print("...DONE\n");
            System.out.println(fromClient + " has left the room.");
    
            return true;
        }
    
        @Override
        public boolean sendPrivateMessage(String fromClient, String toClient, String message) throws RemoteException
        {
            int toClientIndex = server.clientController.getUserIndex(toClient);
            int fromClientIndex = server.clientController.getUserIndex(fromClient);
    
            if( toClientIndex >= 0 && fromClientIndex >= 0 )
            {
                server.users.get(toClientIndex).getIChatUpdate().notifyChat(fromClient, message, true);
    
                server.users.get(fromClientIndex).getIChatUpdate().notifyChat(fromClient, message, true);
    
                return true;
            }
    
            return false;
        }
    }