/*
* 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.shared.communication;
/**
* The mode of bidirectional ("push") communication that is in use.
*
* @see com.vaadin.server.DeploymentConfiguration#getPushMode()
*
* @author Vaadin Ltd
* @since 7.1
*/
public enum PushMode {
/**
* Push is disabled. Regular AJAX requests are used to communicate between
* the client and the server. Asynchronous messages from the server are not
* possible. {@link com.vaadin.ui.UI#push() ui.push()} throws
* IllegalStateException.
* <p>
* This is the default mode unless
* {@link com.vaadin.server.DeploymentConfiguration#getPushMode()
* configured} otherwise.
*/
DISABLED,
/**
* Push is enabled. A bidirectional channel is established between the
* client and server and used to communicate state changes and RPC
* invocations. The client is not automatically updated if the server-side
* state is asynchronously changed; {@link com.vaadin.ui.UI#push()
* ui.push()} must be explicitly called.
*/
MANUAL,
/**
* Push is enabled. Like {@link #MANUAL}, but asynchronous changes to the
* server-side state are automatically pushed to the client once the session
* lock is released.
*/
AUTOMATIC;
/**
* Checks whether the push mode is using push functionality
*
* @return <code>true</code> if this mode requires push functionality;
* <code>false</code> if no push functionality is used for this
* mode.
*/
public boolean isEnabled() {
return this != DISABLED;
}
}