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
92 lines
2.2 KiB
7 years ago
|
/**
|
||
6 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;
|
||
|
}
|
||
|
|
||
|
}
|