package org.corfudb.runtime.view; import org.corfudb.protocols.wireprotocol.TokenResponse; import org.corfudb.protocols.wireprotocol.TxResolutionInfo; import org.corfudb.runtime.CorfuRuntime; import org.corfudb.util.CFUtils; import java.util.Set; import java.util.UUID; /** * Created by mwei on 12/10/15. */ public class SequencerView extends AbstractView { public SequencerView(CorfuRuntime runtime) { super(runtime); } /** * Return the next token in the sequence for a particular stream. * * If numTokens == 0, then the streamAddressesMap returned is the last handed out token for * each stream (if streamIDs is not empty). The token returned is the global address as * previously defined, namely, max global address across all the streams. * * @param streamIDs The stream IDs to retrieve from. * @param numTokens The number of tokens to reserve. * @return The first token retrieved. */ public TokenResponse nextToken(Set<UUID> streamIDs, int numTokens) { return layoutHelper(l -> CFUtils.getUninterruptibly(l.getSequencer(0).nextToken(streamIDs, numTokens))); } public TokenResponse nextToken(Set<UUID> streamIDs, int numTokens, TxResolutionInfo conflictInfo) { return layoutHelper(l -> CFUtils.getUninterruptibly(l.getSequencer(0).nextToken( streamIDs, numTokens, conflictInfo))); } }