mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 03:09:04 +01:00
Merge branch '595-clients-should-decide-whether-to-share-messages' into 'master'
Let clients decide whether to share messages or not Before this MR, the `ValidationManager` was sharing all messages after they had been delivered. Now, it is within the client's responsibility whether to share messages or not. So far, only the Blog and the Forum client are sharing incoming messages. Closes #595 See merge request !283
This commit is contained in:
@@ -69,6 +69,12 @@ public interface ClientHelper {
|
||||
void mergeMessageMetadata(Transaction txn, MessageId m,
|
||||
BdfDictionary metadata) throws DbException, FormatException;
|
||||
|
||||
/**
|
||||
* Marks the given message as shared or unshared with other contacts.
|
||||
*/
|
||||
void setMessageShared(Transaction txn, Message m, boolean shared)
|
||||
throws DbException;
|
||||
|
||||
byte[] toByteArray(BdfDictionary dictionary) throws FormatException;
|
||||
|
||||
byte[] toByteArray(BdfList list) throws FormatException;
|
||||
|
||||
@@ -162,6 +162,8 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
|
||||
protected void incomingMessage(Transaction txn, Message m, BdfList list,
|
||||
BdfDictionary meta) throws DbException, FormatException {
|
||||
|
||||
clientHelper.setMessageShared(txn, m, true);
|
||||
|
||||
GroupId groupId = m.getGroupId();
|
||||
BlogPostHeader h = getPostHeaderFromMetadata(txn, m.getId(), meta);
|
||||
BlogPostAddedEvent event =
|
||||
|
||||
@@ -239,6 +239,12 @@ class ClientHelperImpl implements ClientHelper {
|
||||
db.mergeMessageMetadata(txn, m, metadataEncoder.encode(metadata));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessageShared(Transaction txn, Message m, boolean shared)
|
||||
throws DbException {
|
||||
db.setMessageShared(txn, m, shared);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] toByteArray(BdfDictionary dictionary) throws FormatException {
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
|
||||
@@ -78,6 +78,8 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
|
||||
protected void incomingMessage(Transaction txn, Message m, BdfList body,
|
||||
BdfDictionary meta) throws DbException, FormatException {
|
||||
|
||||
clientHelper.setMessageShared(txn, m, true);
|
||||
|
||||
ForumPostHeader post = getForumPostHeader(txn, m.getId(), meta);
|
||||
ForumPostReceivedEvent event =
|
||||
new ForumPostReceivedEvent(post, m.getGroupId());
|
||||
|
||||
@@ -358,8 +358,6 @@ class ValidationManagerImpl implements ValidationManager, Service,
|
||||
throw new InvalidMessageException(
|
||||
"Deleted by Client");
|
||||
}
|
||||
|
||||
db.setMessageShared(txn, m, true);
|
||||
db.setMessageState(txn, m, c, DELIVERED);
|
||||
|
||||
// deliver pending dependents
|
||||
|
||||
@@ -192,6 +192,7 @@ public class BlogManagerImplTest extends BriarTestCase {
|
||||
);
|
||||
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(clientHelper).setMessageShared(txn, message, true);
|
||||
oneOf(identityManager)
|
||||
.getAuthorStatus(txn, blog1.getAuthor().getId());
|
||||
will(returnValue(VERIFIED));
|
||||
|
||||
@@ -119,7 +119,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Async delivery
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn2b));
|
||||
oneOf(db).setMessageShared(txn2b, message, true);
|
||||
// Call the hook for the first message
|
||||
oneOf(hook).incomingMessage(txn2b, message, metadata);
|
||||
oneOf(db).getRawMessage(txn2b, messageId);
|
||||
@@ -209,7 +208,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver message in a new transaction
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn3));
|
||||
oneOf(db).setMessageShared(txn3, message, true);
|
||||
oneOf(db).setMessageState(txn3, message, clientId, DELIVERED);
|
||||
oneOf(hook).incomingMessage(txn3, message, metadata);
|
||||
oneOf(db).getRawMessage(txn3, messageId);
|
||||
@@ -233,7 +231,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver the dependent in a new transaction
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn5));
|
||||
oneOf(db).setMessageShared(txn5, message1, true);
|
||||
oneOf(db).setMessageState(txn5, message1, clientId, DELIVERED);
|
||||
oneOf(hook).incomingMessage(txn5, message1, metadata);
|
||||
oneOf(db).getRawMessage(txn5, messageId1);
|
||||
@@ -299,7 +296,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver the pending message
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn3));
|
||||
oneOf(db).setMessageShared(txn3, message, true);
|
||||
oneOf(db).setMessageState(txn3, message, clientId, DELIVERED);
|
||||
oneOf(hook).incomingMessage(txn3, message, metadata);
|
||||
oneOf(db).getRawMessage(txn3, messageId);
|
||||
@@ -499,7 +495,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// async delivery
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn2));
|
||||
oneOf(db).setMessageShared(txn2, message, true);
|
||||
// Call the hook
|
||||
oneOf(hook).incomingMessage(txn2, message, metadata);
|
||||
oneOf(db).getRawMessage(txn2, messageId);
|
||||
@@ -627,7 +622,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// async delivery
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn2));
|
||||
oneOf(db).setMessageShared(txn2, message, true);
|
||||
// Call the hook
|
||||
oneOf(hook).incomingMessage(txn2, message, metadata);
|
||||
oneOf(db).getRawMessage(txn2, messageId);
|
||||
@@ -761,7 +755,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver first message
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn2));
|
||||
oneOf(db).setMessageShared(txn2, message, true);
|
||||
oneOf(hook).incomingMessage(txn2, message, metadata);
|
||||
oneOf(db).getRawMessage(txn2, messageId);
|
||||
will(returnValue(raw));
|
||||
@@ -784,7 +777,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver the pending message
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn4));
|
||||
oneOf(db).setMessageShared(txn4, message1, true);
|
||||
oneOf(hook).incomingMessage(txn4, message1, metadata);
|
||||
oneOf(db).getRawMessage(txn4, messageId1);
|
||||
will(returnValue(raw));
|
||||
@@ -842,7 +834,6 @@ public class ValidationManagerImplTest extends BriarTestCase {
|
||||
// Deliver first message
|
||||
oneOf(db).startTransaction(false);
|
||||
will(returnValue(txn2));
|
||||
oneOf(db).setMessageShared(txn2, message, true);
|
||||
oneOf(hook).incomingMessage(txn2, message, metadata);
|
||||
oneOf(db).getRawMessage(txn2, messageId);
|
||||
will(returnValue(raw));
|
||||
|
||||
Reference in New Issue
Block a user