mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 20:29:52 +01:00
add transactional versions of some API calls
This commit is contained in:
@@ -58,15 +58,16 @@ class ConversationManagerImpl implements ConversationManager {
|
||||
@Override
|
||||
public Collection<ConversationMessageHeader> getMessageHeaders(ContactId c)
|
||||
throws DbException {
|
||||
return db.transactionWithResult(true,
|
||||
txn -> getMessageHeaders(txn, c));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ConversationMessageHeader> getMessageHeaders(Transaction txn, ContactId c)
|
||||
throws DbException {
|
||||
List<ConversationMessageHeader> messages = new ArrayList<>();
|
||||
Transaction txn = db.startTransaction(true);
|
||||
try {
|
||||
for (ConversationClient client : clients) {
|
||||
messages.addAll(client.getMessageHeaders(txn, c));
|
||||
}
|
||||
db.commitTransaction(txn);
|
||||
} finally {
|
||||
db.endTransaction(txn);
|
||||
for (ConversationClient client : clients) {
|
||||
messages.addAll(client.getMessageHeaders(txn, c));
|
||||
}
|
||||
return messages;
|
||||
}
|
||||
@@ -125,10 +126,14 @@ class ConversationManagerImpl implements ConversationManager {
|
||||
@Override
|
||||
public void setReadFlag(GroupId g, MessageId m, boolean read)
|
||||
throws DbException {
|
||||
db.transaction(false, txn -> {
|
||||
boolean wasRead = messageTracker.setReadFlag(txn, g, m, read);
|
||||
if (read && !wasRead) db.startCleanupTimer(txn, m);
|
||||
});
|
||||
db.transaction(false, txn -> setReadFlag(txn, g, m, read));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadFlag(Transaction txn, GroupId g, MessageId m, boolean read)
|
||||
throws DbException {
|
||||
boolean wasRead = messageTracker.setReadFlag(txn, g, m, read);
|
||||
if (read && !wasRead) db.startCleanupTimer(txn, m);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -466,8 +466,14 @@ class MessagingManagerImpl implements MessagingManager, IncomingMessageHook,
|
||||
|
||||
@Override
|
||||
public String getMessageText(MessageId m) throws DbException {
|
||||
return db.transactionWithNullableResult(true, txn ->
|
||||
getMessageText(txn, m));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessageText(Transaction txn, MessageId m) throws DbException {
|
||||
try {
|
||||
BdfList body = clientHelper.getMessageAsList(m);
|
||||
BdfList body = clientHelper.getMessageAsList(txn, m);
|
||||
if (body.size() == 1) return body.getString(0); // Legacy format
|
||||
else return body.getOptionalString(1);
|
||||
} catch (FormatException e) {
|
||||
|
||||
Reference in New Issue
Block a user