Select Git revision
ChatController.java
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;
}
}