package org.corfudb.runtime.view.replication; import org.corfudb.protocols.wireprotocol.ILogData; import org.corfudb.runtime.exceptions.HoleFillRequiredException; import javax.annotation.Nonnull; import java.util.function.Function; /** * Created by mwei on 4/6/17. */ public interface IHoleFillPolicy { /** Apply the given peek function until hole filling is required or * committed data is returned. If hole filling is required a * HoleFillRequiredException is thrown. * * @param address The address to apply the function. * * @param peekFunction The function to use to peek data * from the log. * * @return The committed data at the given address. * @throws HoleFillRequiredException If hole filling is required. */ @Nonnull ILogData peekUntilHoleFillRequired(long address, Function<Long, ILogData> peekFunction) throws HoleFillRequiredException; }