All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.grizzly.comet.CometHandler Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2007, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.grizzly.comet;

import java.io.IOException;

import org.glassfish.grizzly.http.server.Response;

/**
 * This interface represents a suspended connection (or response). Passing an instance of this class to
 * {@link CometContext#addCometHandler(CometHandler)} automatically tells Grizzly Comet to suspend the underlying
 * connection and to avoid committing the response. Since the response is not committed, the connection is considered as
 * suspended and can be resumed later when an event happens by invoking
 * {@link CometContext#resumeCometHandler(CometHandler)}, from {@link CometHandler#onEvent}.
 * {@link CometContext#resumeCometHandler(CometHandler)}, resume the connection by committing the response. As an
 * example, a browser icons will spins when a connection is suspended, as the complete response hasn't been sent back.
 * 

* Components that implement this interface will be notified {@link org.glassfish.grizzly.comet.CometContext#notify()} * is invoked or when the {@link CometContext#getExpirationDelay()} expires. */ public interface CometHandler { /** * @return the response associated with the handler. */ Response getResponse(); void setResponse(Response response); CometContext getCometContext(); void setCometContext(CometContext context); /** * Receive {@link CometEvent} notification. This method will be invoked every time a {@link CometContext#notify} is * invoked. The {@link CometEvent} will contains the message that can be pushed back to the remote client, cached or * ignored. This method can also be used to resume a connection once a notified by invoking * {@link CometContext#resumeCometHandler}.
* its not optimal to flush outputstream in this method for long polling, flush is performed in each CometContext.resume * call.
* flushing multiple times can fragment the data into several tcp packets, that leads to extra IO and overhead in * general due to client ack for each packet etc. */ void onEvent(CometEvent event) throws IOException; /** * Receive {@link CometEvent} notification when Grizzly is about to suspend the connection. This method is always * invoked during the processing of {@link CometContext#addCometHandler} operations. */ void onInitialize(CometEvent event) throws IOException; /** * Receive {@link CometEvent} notification when the response is resumed by a {@link CometHandler} or by the * {@link CometContext} */ void onTerminate(CometEvent event) throws IOException; /** * Receive {@link CometEvent} notification when the underlying tcp communication is resumed by Grizzly. This happens * when the {@link CometContext#setExpirationDelay} expires or when the remote client close the connection. */ void onInterrupt(CometEvent event) throws IOException; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy