Skip to content
Snippets Groups Projects
Verified Commit e5cda086 authored by Julian Dehm's avatar Julian Dehm
Browse files

temp save

parent 3dde115f
No related branches found
No related tags found
No related merge requests found
......@@ -556,6 +556,7 @@ class IntroducerProtocolEngine
private IntroducerSession abort(Transaction txn,
IntroducerSession s) throws DbException {
// Broadcast abort event for testing
txn.attach(new IntroductionAbortedEvent(s.getSessionId()));
// Send an ABORT message to both introducees
......
......@@ -19,95 +19,124 @@ import static org.briarproject.briar.mailbox.OwnerState.AWAIT_RESPONSE_M;
class OwnerProtocolEngine extends AbstractProtocolEngine<OwnerSession> {
@Inject
OwnerProtocolEngine(
DatabaseComponent db,
ClientHelper clientHelper,
ContactManager contactManager,
ContactGroupFactory contactGroupFactory,
MessageTracker messageTracker,
IdentityManager identityManager,
MessageParser messageParser,
MessageEncoder messageEncoder,
Clock clock) {
super(db, clientHelper, contactManager, contactGroupFactory,
messageTracker, identityManager, messageParser, messageEncoder,
clock);
}
@Override
public OwnerSession onRequestAction(Transaction txn, OwnerSession s, long timestamp)
throws DbException {
switch (s.getState()) {
case START:
return onLocalRequest(txn, s, timestamp);
case AWAIT_RESPONSE_M:
case M_DECLINED:
case AWAIT_RESPONSE_B:
case B_DECLINED:
case AWAIT_AUTH_M:
case ADDED:
throw new ProtocolStateException(); // Invalid in these states
default:
throw new AssertionError();
}
}
@Override
public OwnerSession onAcceptAction(Transaction txn, OwnerSession session, long timestamp) throws DbException {
return null;
}
@Override
public OwnerSession onDeclineAction(Transaction txn, OwnerSession session, long timestamp) throws DbException {
return null;
}
@Override
public OwnerSession onRequestMessage(Transaction txn, OwnerSession session, RequestMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onAcceptMessage(Transaction txn, OwnerSession session, MailboxAcceptMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onDeclineMessage(Transaction txn, OwnerSession session, DeclineMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onAuthMessage(Transaction txn, OwnerSession session, MailboxAuthMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onAbortMessage(Transaction txn, OwnerSession session, AbortMessage m) throws DbException, FormatException {
return null;
}
private OwnerSession onLocalRequest(Transaction txn, OwnerSession s, long timestamp)
throws DbException {
// Send REQUEST messages
long maxIntroduceeTimestamp =
Math.max(getLocalTimestamp(s, s.getMailbox()), getLocalTimestamp(s, s.getIntroducee()));
long localTimestamp = Math.max(timestamp, maxIntroduceeTimestamp);
Message sentMailbox = sendMailboxRequestMessage(txn, s.getMailbox(), localTimestamp);
@Inject
OwnerProtocolEngine(
DatabaseComponent db,
ClientHelper clientHelper,
ContactManager contactManager,
ContactGroupFactory contactGroupFactory,
MessageTracker messageTracker,
IdentityManager identityManager,
MessageParser messageParser,
MessageEncoder messageEncoder,
Clock clock) {
super(db, clientHelper, contactManager, contactGroupFactory,
messageTracker, identityManager, messageParser, messageEncoder,
clock);
}
@Override
public OwnerSession onRequestAction(Transaction txn, OwnerSession s,
long timestamp)
throws DbException {
switch (s.getState()) {
case START:
return onLocalRequest(txn, s, timestamp);
case AWAIT_RESPONSE_M:
case M_DECLINED:
case AWAIT_RESPONSE_B:
case B_DECLINED:
case AWAIT_AUTH_M:
case ADDED:
throw new ProtocolStateException(); // Invalid in these states
default:
throw new AssertionError();
}
}
@Override
public OwnerSession onAcceptAction(Transaction txn, OwnerSession session,
long timestamp) throws DbException {
throw new UnsupportedOperationException();
}
@Override
public OwnerSession onDeclineAction(Transaction txn, OwnerSession session,
long timestamp) throws DbException {
throw new UnsupportedOperationException();
}
@Override
public OwnerSession onRequestMessage(Transaction txn, OwnerSession session,
RequestMessage m) throws DbException, FormatException {
return abort(txn, session);
}
@Override
public OwnerSession onMailboxAcceptMessage(Transaction txn, OwnerSession s,
MailboxAcceptMessage m) throws DbException, FormatException {
switch (s.getState()) {
case START:
case AWAIT_RESPONSE_M:
onMailboxAccept(txn, s, m);
case M_DECLINED:
case AWAIT_RESPONSE_B:
case B_DECLINED:
case AWAIT_AUTH_M:
case ADDED:
throw new ProtocolStateException(); // Invalid in these states
default:
throw new AssertionError();
}
}
private void onMailboxAccept(Transaction txn, OwnerSession s,
MailboxAcceptMessage m) {
}
@Override
public OwnerSession onDeclineMessage(Transaction txn, OwnerSession session,
DeclineMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onAuthMessage(Transaction txn, OwnerSession session,
MailboxAuthMessage m) throws DbException, FormatException {
return null;
}
@Override
public OwnerSession onAbortMessage(Transaction txn, OwnerSession session,
AbortMessage m) throws DbException, FormatException {
return null;
}
private OwnerSession onLocalRequest(Transaction txn, OwnerSession s,
long timestamp)
throws DbException {
// Send REQUEST messages
long maxIntroduceeTimestamp =
Math.max(getLocalTimestamp(s, s.getMailbox()),
getLocalTimestamp(s, s.getIntroducee()));
long localTimestamp = Math.max(timestamp, maxIntroduceeTimestamp);
Message sentMailbox =
sendMailboxRequestMessage(txn, s.getMailbox(), localTimestamp);
/*
// Track the message
messageTracker.trackOutgoingMessage(txn, sentMailbox);
*/
// Move to the AWAIT_RESPONSES state
Introducee mailbox = new Introducee(s.getMailbox(), sentMailbox);
Introducee b = new Introducee(s.getIntroducee().sessionId, s.getIntroducee().groupId, s.getIntroducee().author);
return new OwnerSession(s.getSessionId(), AWAIT_RESPONSE_M,
localTimestamp, mailbox, b, s.getSessionCounter());
}
private long getLocalTimestamp(OwnerSession s, PeerSession p) {
return getLocalTimestamp(p.getLocalTimestamp(),
s.getRequestTimestamp());
}
// Move to the AWAIT_RESPONSES state
Introducee mailbox = new Introducee(s.getMailbox(), sentMailbox);
Introducee b = new Introducee(s.getIntroducee().sessionId,
s.getIntroducee().groupId, s.getIntroducee().author);
return new OwnerSession(s.getSessionId(), AWAIT_RESPONSE_M,
localTimestamp, mailbox, b, s.getSessionCounter());
}
private long getLocalTimestamp(OwnerSession s, PeerSession p) {
return getLocalTimestamp(p.getLocalTimestamp(),
s.getRequestTimestamp());
}
}
......@@ -8,27 +8,31 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@NotNullByDefault
interface ProtocolEngine<S extends Session> {
S onRequestAction(Transaction txn, S session, long timestamp) throws DbException;
S onRequestAction(Transaction txn, S session, long timestamp)
throws DbException;
S onAcceptAction(Transaction txn, S session, long timestamp)
throws DbException;
S onAcceptAction(Transaction txn, S session, long timestamp)
throws DbException;
S onDeclineAction(Transaction txn, S session, long timestamp)
throws DbException;
S onDeclineAction(Transaction txn, S session, long timestamp)
throws DbException;
S onRequestMessage(Transaction txn, S session, RequestMessage m)
throws DbException, FormatException;
S onRequestMessage(Transaction txn, S session, RequestMessage m)
throws DbException, FormatException;
S onAcceptMessage(Transaction txn, S session, MailboxAcceptMessage m)
throws DbException, FormatException;
S onMailboxAcceptMessage(Transaction txn, S session, MailboxAcceptMessage m)
throws DbException, FormatException;
S onDeclineMessage(Transaction txn, S session, DeclineMessage m)
throws DbException, FormatException;
S onContactAcceptMessage(Transaction txn, S session, MailboxAcceptMessage m)
throws DbException, FormatException;
S onAuthMessage(Transaction txn, S session, MailboxAuthMessage m)
throws DbException, FormatException;
S onDeclineMessage(Transaction txn, S session, DeclineMessage m)
throws DbException, FormatException;
S onAbortMessage(Transaction txn, S session, AbortMessage m)
throws DbException, FormatException;
S onAuthMessage(Transaction txn, S session, MailboxAuthMessage m)
throws DbException, FormatException;
S onAbortMessage(Transaction txn, S session, AbortMessage m)
throws DbException, FormatException;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment