mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
This Introduction BSP Client uses its own group to communicate with existing contacts. It uses four types of messages to facilitate introductions: the introduction, the response, the ack and the abort. The protocol logic is encapsulated in two protocol engines, one for the introducer and one for the introducee. The introduction client keeps the local state for each engine, hands messages over to the engines and processes the result and state changes they return.
44 lines
1.3 KiB
Java
44 lines
1.3 KiB
Java
package org.briarproject.api.introduction;
|
|
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE_ABORT;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE_ACK;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE_REQUEST;
|
|
import static org.briarproject.api.introduction.IntroductionConstants.TYPE_RESPONSE;
|
|
|
|
public enum IntroduceeAction {
|
|
|
|
LOCAL_ACCEPT,
|
|
LOCAL_DECLINE,
|
|
LOCAL_ABORT,
|
|
REMOTE_REQUEST,
|
|
REMOTE_ACCEPT,
|
|
REMOTE_DECLINE,
|
|
REMOTE_ABORT,
|
|
ACK;
|
|
|
|
public static IntroduceeAction getRemote(int type, boolean accept) {
|
|
if (type == TYPE_REQUEST) return REMOTE_REQUEST;
|
|
if (type == TYPE_RESPONSE && accept) return REMOTE_ACCEPT;
|
|
if (type == TYPE_RESPONSE) return REMOTE_DECLINE;
|
|
if (type == TYPE_ACK) return ACK;
|
|
if (type == TYPE_ABORT) return REMOTE_ABORT;
|
|
return null;
|
|
}
|
|
|
|
public static IntroduceeAction getRemote(int type) {
|
|
return getRemote(type, true);
|
|
}
|
|
|
|
public static IntroduceeAction getLocal(int type, boolean accept) {
|
|
if (type == TYPE_RESPONSE && accept) return LOCAL_ACCEPT;
|
|
if (type == TYPE_RESPONSE) return LOCAL_DECLINE;
|
|
if (type == TYPE_ABORT) return LOCAL_ABORT;
|
|
return null;
|
|
}
|
|
|
|
public static IntroduceeAction getLocal(int type) {
|
|
return getLocal(type, true);
|
|
}
|
|
|
|
}
|