package ufrn.imd.controller.impl; import ufrn.imd.controller.Controller; import ufrn.imd.domain.Client; import ufrn.imd.service.impl.BalanceServiceImpl; import ufrn.imd.utils.ServerResponse; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject; import java.util.*; import static ufrn.imd.utils.NameSpace.HOST_BALANCE_SERVICE; import static ufrn.imd.utils.NameSpace.PORT_BALANCE_SERVICE; @lombok.extern.java.Log public class BalanceControllerImpl extends UnicastRemoteObject implements Controller { private volatile Queue<Client> clients = new ArrayDeque<>(); private final BalanceServiceImpl service; public BalanceControllerImpl(BalanceServiceImpl service) throws RemoteException, MalformedURLException, AlreadyBoundException { super(); LocateRegistry.createRegistry(PORT_BALANCE_SERVICE); Naming.bind(HOST_BALANCE_SERVICE, this); log.info("Starting Balance service!"); this.service = service; log.info(String.format("Initializing server in %s", HOST_BALANCE_SERVICE)); } @Override public ServerResponse getResponse(Object obj) throws RemoteException { Client client = (Client) obj; return this.service.balance(Optional.of(client)); } }