package org.limewire.mojito.concurrent;
import java.util.concurrent.TimeUnit;
import org.limewire.concurrent.AsyncValueFuture;
import org.limewire.concurrent.FutureEvent;
import org.limewire.listener.EventListener;
import org.limewire.mojito.util.EventUtils;
/**
*
*/
public class DHTValueFuture<V> extends AsyncValueFuture<V> implements DHTFuture<V> {
/**
* Creates a {@link DHTValueFuture}
*/
public DHTValueFuture() {
}
/**
* Creates a {@link DHTValueFuture} with the given value
*/
public DHTValueFuture(V value) {
setValue(value);
}
/**
* Creates a {@link DHTValueFuture} with the given {@link Throwable}
*/
public DHTValueFuture(Throwable exception) {
setException(exception);
}
@Override
public long getTimeout(TimeUnit unit) {
return 0L;
}
@Override
public long getTimeoutInMillis() {
return getTimeout(TimeUnit.MILLISECONDS);
}
@Override
public boolean isTimeout() {
return false;
}
@Override
protected boolean isEventThread() {
return EventUtils.isEventThread();
}
@Override
protected void fireOperationComplete(
final EventListener<FutureEvent<V>>[] listeners,
final FutureEvent<V> event) {
Runnable task = new Runnable() {
@Override
public void run() {
DHTValueFuture.super.fireOperationComplete(listeners, event);
}
};
EventUtils.fireEvent(task);
}
}