mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Methods for creating, adding and removing forums have been moved to the `ForumManager`. In order to still handle removing forums properly, a `RemoveForumHook` has been introduced. Methods for sharing forums with all current and future contacts have been removed along with the localGroup where this information was saved. The `ShareForumActivity` now has the proper label. The `SessionId` and the `ProtocolEngine` have been moved to the `clients` package. This addresses part of #322 and part of what has been discussed in #320.
43 lines
1.4 KiB
Java
43 lines
1.4 KiB
Java
package org.briarproject.api.clients;
|
|
|
|
import org.briarproject.api.event.Event;
|
|
|
|
import java.util.List;
|
|
|
|
public interface ProtocolEngine<A, S, M> {
|
|
StateUpdate<S, M> onLocalAction(S localState, A action);
|
|
|
|
StateUpdate<S, M> onMessageReceived(S localState, M received);
|
|
|
|
StateUpdate<S, M> onMessageDelivered(S localState, M delivered);
|
|
|
|
class StateUpdate<S, M> {
|
|
public final boolean deleteMessage;
|
|
public final boolean deleteState;
|
|
public final S localState;
|
|
public final List<M> toSend;
|
|
public final List<Event> toBroadcast;
|
|
|
|
/**
|
|
* This class represents an update of the local protocol state.
|
|
* It only shows how the state should be updated,
|
|
* but does not carry out the updates on its own.
|
|
*
|
|
* @param deleteMessage whether to delete the message that triggered the state update. This will be ignored for {@link ProtocolEngine#onLocalAction}.
|
|
* @param deleteState whether to delete the localState {@link S}
|
|
* @param localState the new local state
|
|
* @param toSend a list of messages to be sent as part of the state update
|
|
* @param toBroadcast a list of events to broadcast as result of the state update
|
|
*/
|
|
public StateUpdate(boolean deleteMessage, boolean deleteState,
|
|
S localState, List<M> toSend, List<Event> toBroadcast) {
|
|
|
|
this.deleteMessage = deleteMessage;
|
|
this.deleteState = deleteState;
|
|
this.localState = localState;
|
|
this.toSend = toSend;
|
|
this.toBroadcast = toBroadcast;
|
|
}
|
|
}
|
|
}
|