package org.briarproject.api; import org.briarproject.api.event.Event; import java.util.List; public interface ProtocolEngine { StateUpdate onLocalAction(S localState, A action); StateUpdate onMessageReceived(S localState, M received); StateUpdate onMessageDelivered(S localState, M delivered); class StateUpdate { public final boolean deleteMessages; public final boolean deleteState; public final S localState; public final List toSend; public final List toBroadcast; public StateUpdate(boolean deleteMessages, boolean deleteState, S localState, List toSend, List toBroadcast) { this.deleteMessages = deleteMessages; this.deleteState = deleteState; this.localState = localState; this.toSend = toSend; this.toBroadcast = toBroadcast; } } }