package lsr.paxos.storage;

import java.io.IOException;
import java.util.Collection;

import lsr.paxos.Snapshot;

public interface DiscWriter {

    /* Synchronous */

    void changeInstanceView(int instanceId, int view);

    void changeInstanceValue(int instanceId, int view, byte[] value);

    void changeViewNumber(int view);

    void close() throws IOException;

    Collection<ConsensusInstance> load() throws IOException;

    int loadViewNumber() throws IOException;

    void newSnapshot(Snapshot snapshot);

    Snapshot getSnapshot();

    /* Asynchronous (but must be written before/with next synchronous) */

    void decideInstance(int instanceId);

}