/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.server.communication;
import java.io.Serializable;
import com.vaadin.ui.UI;
/**
* Represents a bidirectional ("push") connection between a single UI and its
* client-side. A single {@code PushConnection} instance is bound to a UI as
* long as push is enabled in that UI, even if the actual connection is
* momentarily dropped either due to a network failure or as a normal part of
* the transport mechanism.
* <p>
* This interface is an internal API, only meant to be used by the framework.
*
* @author Vaadin Ltd
* @since 7.1
*/
public interface PushConnection extends Serializable {
/**
* Pushes pending state changes and client RPC calls to the client. Can be
* called even if {@link #isConnected()} is false; the push will be deferred
* until a connection is available. It is NOT safe to invoke this method if
* not holding the session lock.
* <p>
* This is internal API; please use {@link UI#push()} instead.
*/
public void push();
/**
* Closes the connection. Cannot be called if {@link #isConnected()} is
* false.
*/
public void disconnect();
/**
* Returns whether this connection is currently open.
*/
public boolean isConnected();
}