帆软使用的第三方框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.2 KiB

7 years ago
/**
* Copyright (c) 2012-2019 Nikita Koksharov
7 years ago
*
* 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.fr.third.socketio;
/**
* Base ack callback class.
*
* Notifies about acknowledgement received from client
* via {@link #onSuccess} callback method.
*
* By default it may wait acknowledgement from client
* while {@link SocketIOClient} is alive. Timeout can be
* defined {@link #timeout} as constructor argument.
*
* This object is NOT actual anymore if {@link #onSuccess} or
* {@link #onTimeout} was executed.
*
* @param <T> - any serializable type
*
* @see VoidAckCallback
* @see MultiTypeAckCallback
*
*/
public abstract class AckCallback<T> {
protected final Class<T> resultClass;
protected final int timeout;
/**
* Create AckCallback
*
* @param resultClass - result class
*/
public AckCallback(Class<T> resultClass) {
this(resultClass, -1);
}
/**
* Creates AckCallback with timeout
*
* @param resultClass - result class
* @param timeout - callback timeout in seconds
*/
public AckCallback(Class<T> resultClass, int timeout) {
this.resultClass = resultClass;
this.timeout = timeout;
}
public int getTimeout() {
return timeout;
}
/**
* Executes only once when acknowledgement received from client.
*
* @param result - object sended by client
*/
public abstract void onSuccess(T result);
/**
* Invoked only once then <code>timeout</code> defined
*
*/
public void onTimeout() {
}
/**
* Returns class of argument in {@link #onSuccess} method
*
* @return - result class
*/
public Class<T> getResultClass() {
return resultClass;
}
}