package jas2.util.rmi;
import java.rmi.*;
import java.rmi.server.*;
import java.io.*;
import java.util.*;
import javax.swing.SwingUtilities;
public class RMIEventDelivery extends UnicastRemoteObject implements RemoteEventReceiver
{
public RMIEventDelivery(boolean swing) throws RemoteException
{
this.swing = swing;
}
public RMIDestination getRMIDestination()
{
RMIDestination result = new RMIDestination(dest.size());
dest.addElement(result);
return result;
}
/**
* An EventDelivery event is generated whenever RMIEventDelivery starts or
* finishes delivering a chunk of events. It can be used to batch together
* multiple events
*
*/
public void addRMIEventDeliveryListener(RMIEventDeliveryListener l)
{
edl.addElement(l);
}
public void removeRMIEventDeliveryListener(RMIEventDeliveryListener l)
{
edl.removeElement(l);
}
private void fireEventDelivery(RMIEventDeliveryEvent event)
{
Enumeration e = edl.elements();
while (e.hasMoreElements())
{
RMIEventDeliveryListener ed = (RMIEventDeliveryListener) e.nextElement();
ed.eventDelivery(event);
}
}
public void remoteUpdate(Serializable[] arg)
{
if (swing) SwingUtilities.invokeLater(new EventDispatcher(arg));
else deliver(arg);
}
private void deliver(Serializable[] arg)
{
if (debug) System.out.println("Starting delivery of "+arg.length+" remote events");
RMIDestination currdest = null;
fireEventDelivery(start);
for (int i=0; i
Ads help maintain this website.