Следуя дизайну / архитектуре, которую я создал для многопользовательской / сетевой пошаговой игры с обратными вызовами RMI-сервера, я попытался создать распределенную анимацию, в которой моя модель (Ball) является удаленным объектом и обновляет клиентов с помощью механизма обратного вызова из сервер.
Текущая ситуация с кодом:
Удаленный объект модели, который выполняет итерацию списка клиентов и вызывает метод их обновления,
public class BallImpl extends UnicastRemoteObject implements Ball,Runnable {
private List<ICallback> clients = new ArrayList<ICallback>();
protected static ServerServices chatServer;
static ServerServices si;
BallImpl() throws RemoteException {
super();
}
....
public synchronized void move() throws RemoteException {
loc.translate((int) changeInX, (int) changeInY);
}
public void start() throws RemoteException {
if (gameThread.isAlive()==false )
if (run==false){
gameThread.start();
}
}
/** Start the ball bouncing. */
// Run the game logic in its own thread.
public void run() {
while (true) {
run=true;
// Execute one game step
try {
updateClients();
} catch (RemoteException e) {
e.printStackTrace();
}
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
}
}
}
public void updateClients() throws RemoteException {
si = new ServerServicesImpl();
List<ICallback> j = si.getClientNames();
System.out.println("in messimpl " + j.size());
if (j != null) {
System.out.println("in ballimpl" + j.size());
for (ICallback aClient : j) {
aClient.updateClients(this);
}
} else
System.err.println("Clientlist is empty");
}
}
Клиент, который реализует интерфейс обратного вызова и имеет реализацию метода обновления:
public final class thenewBallWhatIwant implements Runnable, ICallback {
.....
@Override
public void updateClients(final Ball ball) throws RemoteException {
try {
ball.move();
try {
Thread.sleep(50);
} catch (Exception e) {
System.exit(0);
}
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
.....
}
Мое общее мнение состоит в том, что я реализую механизм проталкивания с RMI, и в этом сценарии мне нужно реализовать опрос)
если это так, как я могу реализовать механизм опроса с RMI?
спасибо за любые отзывы.
jibbylala