view src/org/dancres/blitz/notify/RemoteEventDispatcher.java @ 27:511648fa4d64 Version 2.1

Version to 2.1
author Dan Creswell <dan.creswell@gmail.com>
date Mon, 04 Jan 2010 13:00:40 +0000
parents 3dc0c5604566
children
line wrap: on
line source

package org.dancres.blitz.notify;

import java.util.logging.*;

import net.jini.space.JavaSpace;

import org.dancres.blitz.task.Tasks;

import org.dancres.blitz.Logging;

import org.dancres.blitz.remote.NullJavaSpace;

/**
   Converts internal events into external RemoteEvents and arranges for
   their dispatch.
*/
public class RemoteEventDispatcher {
    static Logger theLogger =
        Logging.newLogger("org.dancres.blitz.notify.RemoteEventDispatcher");


    private static JavaSpace theSource = new NullJavaSpace();

    /**
       Used to configure the EventGenerator with an appropriate remote
       source reference for passing out with each event
     */
    public static synchronized void setSource(JavaSpace aSource) {
        theSource = aSource;
    }

    RemoteEventDispatcher() {
    }

    void sendEvent(DispatchTask aTask, EventGenerator aGenerator) {
        try {
            aTask.newDispatch();
            Tasks.queue("RemoteEvent",
                    new SendTask(theSource, aTask, aGenerator));
        } catch (InterruptedException anIE) {
            theLogger.log(Level.SEVERE, "Failed to add event to queue",
                          anIE);
        }
    }
}