Contact manager hooks. #209

This commit is contained in:
akwizgran
2016-01-19 19:16:35 +00:00
parent 33ef09a6bf
commit 82cf12040f
29 changed files with 333 additions and 195 deletions

View File

@@ -5,14 +5,37 @@ import org.briarproject.api.identity.AuthorId;
public class Contact {
public enum Status {
ADDING(0), ACTIVE(1), REMOVING(2);
private final int value;
Status(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static Status fromValue(int value) {
for (Status s : values()) if (s.value == value) return s;
throw new IllegalArgumentException();
}
}
private final ContactId id;
private final Author author;
private final AuthorId localAuthorId;
private final Status status;
public Contact(ContactId id, Author author, AuthorId localAuthorId) {
public Contact(ContactId id, Author author, AuthorId localAuthorId,
Status status) {
this.id = id;
this.author = author;
this.localAuthorId = localAuthorId;
this.status = status;
}
public ContactId getId() {
@@ -27,6 +50,10 @@ public class Contact {
return localAuthorId;
}
public Status getStatus() {
return status;
}
@Override
public int hashCode() {
return id.hashCode();

View File

@@ -8,6 +8,12 @@ import java.util.Collection;
public interface ContactManager {
/** Registers a hook to be called whenever a contact is added. */
void registerContactAddedHook(ContactAddedHook hook);
/** Registers a hook to be called whenever a contact is removed. */
void registerContactRemovedHook(ContactRemovedHook hook);
/**
* Stores a contact associated with the given local and remote pseudonyms,
* and returns an ID for the contact.
@@ -22,4 +28,12 @@ public interface ContactManager {
/** Removes a contact and all associated state. */
void removeContact(ContactId c) throws DbException;
interface ContactAddedHook {
void contactAdded(ContactId c);
}
interface ContactRemovedHook {
void contactRemoved(ContactId c);
}
}

View File

@@ -297,6 +297,9 @@ public interface DatabaseComponent {
*/
void removeTransport(TransportId t) throws DbException;
/** Sets the status of the given contact. */
void setContactStatus(ContactId c, Contact.Status s) throws DbException;
/** Marks the given message as valid or invalid. */
void setMessageValidity(Message m, ClientId c, boolean valid)
throws DbException;

View File

@@ -13,12 +13,6 @@ public interface MessagingManager {
/** Returns the unique ID of the messaging client. */
ClientId getClientId();
/**
* Informs the messaging manager that a new contact has been added.
* Creates a private conversation with the contact.
*/
void addContact(ContactId c) throws DbException;
/** Stores a local private message. */
void addLocalMessage(PrivateMessage m) throws DbException;

View File

@@ -6,6 +6,26 @@ package org.briarproject.api.sync;
*/
public interface ValidationManager {
enum Status {
UNKNOWN(0), INVALID(1), VALID(2);
private final int value;
Status(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static Status fromValue(int value) {
for (Status s : values()) if (s.value == value) return s;
throw new IllegalArgumentException();
}
}
/** Sets the message validator for the given client. */
void setMessageValidator(ClientId c, MessageValidator v);
}