Add recently connected state to core and UI.

This commit is contained in:
akwizgran
2020-05-04 16:08:42 +01:00
parent 8fd9a40ffb
commit d1cda4fb1e
38 changed files with 391 additions and 275 deletions

View File

@@ -5,8 +5,7 @@ import org.briarproject.bramble.api.contact.PendingContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent;
import org.briarproject.bramble.api.plugin.event.ConnectionOpenedEvent;
import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
import org.briarproject.bramble.api.plugin.event.ConnectionStatusChangedEvent;
import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionClosedEvent;
import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionOpenedEvent;
@@ -21,15 +20,15 @@ public interface ConnectionRegistry {
/**
* Registers a connection with the given contact over the given transport.
* Broadcasts {@link ConnectionOpenedEvent}. Also broadcasts
* {@link ContactConnectedEvent} if this is the only connection with the
* contact.
* {@link ConnectionStatusChangedEvent} if this is the only connection with
* the contact.
*/
void registerConnection(ContactId c, TransportId t, boolean incoming);
/**
* Unregisters a connection with the given contact over the given transport.
* Broadcasts {@link ConnectionClosedEvent}. Also broadcasts
* {@link ContactDisconnectedEvent} if this is the only connection with
* {@link ConnectionStatusChangedEvent} if this is the only connection with
* the contact.
*/
void unregisterConnection(ContactId c, TransportId t, boolean incoming);
@@ -45,9 +44,9 @@ public interface ConnectionRegistry {
boolean isConnected(ContactId c, TransportId t);
/**
* Returns true if the given contact is connected via any transport.
* Returns the connection status of the given contact via all transports.
*/
boolean isConnected(ContactId c);
ConnectionStatus getConnectionStatus(ContactId c);
/**
* Registers a connection with the given pending contact. Broadcasts

View File

@@ -0,0 +1,5 @@
package org.briarproject.bramble.api.plugin;
public enum ConnectionStatus {
CONNECTED, RECENTLY_CONNECTED, DISCONNECTED
}

View File

@@ -3,24 +3,31 @@ package org.briarproject.bramble.api.plugin.event;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.ConnectionStatus;
import javax.annotation.concurrent.Immutable;
/**
* An event that is broadcast when a contact connects that was not previously
* connected via any transport.
* An event that is broadcast when a contact's connection status changes.
*/
@Immutable
@NotNullByDefault
public class ContactConnectedEvent extends Event {
public class ConnectionStatusChangedEvent extends Event {
private final ContactId contactId;
private final ConnectionStatus status;
public ContactConnectedEvent(ContactId contactId) {
public ConnectionStatusChangedEvent(ContactId contactId,
ConnectionStatus status) {
this.contactId = contactId;
this.status = status;
}
public ContactId getContactId() {
return contactId;
}
public ConnectionStatus getConnectionStatus() {
return status;
}
}

View File

@@ -1,26 +0,0 @@
package org.briarproject.bramble.api.plugin.event;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable;
/**
* An event that is broadcast when a contact disconnects and is no longer
* connected via any transport.
*/
@Immutable
@NotNullByDefault
public class ContactDisconnectedEvent extends Event {
private final ContactId contactId;
public ContactDisconnectedEvent(ContactId contactId) {
this.contactId = contactId;
}
public ContactId getContactId() {
return contactId;
}
}