Package test.core

Source Code of test.core.TestCometNotifier

/*
* TestAsyncServerResponse.java
*
* Created on 3 de enero de 2007, 12:33
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package test.core;

import java.io.Serializable;
import org.itsnat.core.CometNotifier;
import org.itsnat.core.CommMode;
import org.itsnat.core.html.ItsNatHTMLDocument;
import org.itsnat.core.event.ItsNatDOMStdEvent;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;
import org.w3c.dom.html.HTMLDocument;
import test.shared.EventListenerSerial;

/**
*
* @author jmarranz
*/
public class TestCometNotifier implements EventListener,Serializable
{
    protected ItsNatHTMLDocument itsNatDoc;
    protected Element startStopElem;
    protected CometNotifier comet;

    /**
     * Creates a new instance of TestAsyncServerResponse
     */
    public TestCometNotifier(ItsNatHTMLDocument itsNatDoc)
    {
        this.itsNatDoc = itsNatDoc;

        load();
    }

    public void load()
    {
        Document doc = itsNatDoc.getDocument();
        this.startStopElem = doc.getElementById("cometNotifierTestId");
        itsNatDoc.addEventListener((EventTarget)startStopElem,"click", this, false,CommMode.XHR_SYNC);
    }

    public void handleEvent(final Event evt)
    {
        ItsNatDOMStdEvent itsNatEvent = (ItsNatDOMStdEvent)evt;
        final ItsNatHTMLDocument itsNatDoc = (ItsNatHTMLDocument)itsNatEvent.getItsNatDocument();
        outText("OK " + evt.getType() + " "); // Para que se vea

        if ((comet == null)||comet.isStopped())
        {
            this.comet = itsNatEvent.getClientDocument().createCometNotifier();
            //comet.setExpirationDelay(10000);

            EventListener listener = new EventListenerSerial()
            {
                public void handleEvent(Event evt)
                {
                    outText("OK Comet Event " + evt.getType() + " ");
                }
            };
            comet.addEventListener(listener);

            final CometNotifier comet = this.comet;
            Thread task = new Thread()
            {
                public void run()
                {
                    long t1 = System.currentTimeMillis();
                    long t2 = t1;
                    long timeout = 10*1000;
                    while((t2 - t1) < timeout)
                    {
                        try
                        {
                            Thread.sleep(2000);
                        }
                        catch(InterruptedException ex) { }

                        synchronized(itsNatDoc)
                        {
                            outText("OK End Comet Task ");
                        }

                        if (comet.isStopped()) // por ejemplo cuando salgamos de la p�gina
                            break;                       

                        comet.notifyClient(); // No es necesario sincronizar con el documento pero no pasar�a nada
                       
                        t2 = System.currentTimeMillis();
                    }

                    comet.stop(); // Si ya est� parado no hace nada
                    outText("Stop Notifier (thread) ");

                    synchronized(itsNatDoc)
                    {
                        if ((t2 - t1) >= timeout)
                            outText("End Thread (timeout) ");
                        else
                            outText("End Thread (notifier stopped) ");
                    }
                }
            };

            task.start();

            outText("Created Notifier ");
        }
        else
        {
            comet.stop();
            outText("Stop Notifier (manual) ");
        }
    }

    public void outText(String msg)
    {
        HTMLDocument doc = (HTMLDocument)itsNatDoc.getDocument();
        Element parent = doc.getElementById("cometLogId");
        parent.appendChild(doc.createTextNode(msg)); // Para que se vea
    }
}
TOP

Related Classes of test.core.TestCometNotifier

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.