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.