package org.opendaylight.controller.cluster.access.client;
import com.google.common.base.Preconditions;
-import java.util.function.Consumer;
-import org.opendaylight.controller.cluster.access.concepts.Request;
-import org.opendaylight.controller.cluster.access.concepts.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Forwarder class responsible for routing requests from the previous connection incarnation back to the originator,
* @author Robert Varga
*/
public abstract class ReconnectForwarder {
- static final Logger LOG = LoggerFactory.getLogger(ReconnectForwarder.class);
// Visible for subclass method handle
private final AbstractReceivingClientConnection<?> successor;
this.successor = Preconditions.checkNotNull(successor);
}
- protected final void sendToSuccessor(final Request<?, ?> request, final Consumer<Response<?, ?>> callback) {
- successor.sendRequest(request, callback);
+ protected final void sendToSuccessor(final ConnectionEntry entry) {
+ successor.sendRequest(entry.getRequest(), entry.getCallback());
}
- protected abstract void forwardEntry(ConnectionEntry entry);
+ protected final void replayToSuccessor(final ConnectionEntry entry) {
+ successor.enqueueRequest(entry.getRequest(), entry.getCallback(), entry.getEnqueuedTicks());
+ }
+
+ protected abstract void forwardEntry(ConnectionEntry entry, long now);
+
+ protected abstract void replayEntry(ConnectionEntry entry, long now);
final AbstractReceivingClientConnection<?> successor() {
return successor;