Skip to content
Snippets Groups Projects
Verified Commit e2d64e0a authored by Torsten Grote's avatar Torsten Grote
Browse files

allow adding contacts within an existing transactions

parent 51c3528e
No related branches found
No related tags found
No related merge requests found
......@@ -16,12 +16,21 @@ public interface ContactManager {
/** Registers a hook to be called whenever a contact is removed. */
void registerRemoveContactHook(RemoveContactHook hook);
/**
* Stores a contact within the given transaction associated with the given
* local and remote pseudonyms, and returns an ID for the contact.
*/
ContactId addContact(Transaction txn, Author remote, AuthorId local,
SecretKey master, long timestamp, boolean alice, boolean active)
throws DbException;
/**
* Stores a contact associated with the given local and remote pseudonyms,
* and returns an ID for the contact.
*/
ContactId addContact(Author remote, AuthorId local, SecretKey master,
long timestamp, boolean alice, boolean active) throws DbException;
ContactId addContact(Author remote, AuthorId local,
SecretKey master, long timestamp, boolean alice, boolean active)
throws DbException;
/** Returns the contact with the given ID. */
Contact getContact(ContactId c) throws DbException;
......
......@@ -46,6 +46,18 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
removeHooks.add(hook);
}
@Override
public ContactId addContact(Transaction txn, Author remote, AuthorId local,
SecretKey master,long timestamp, boolean alice, boolean active)
throws DbException {
ContactId c = db.addContact(txn, remote, local, active);
keyManager.addContact(txn, c, master, timestamp, alice);
Contact contact = db.getContact(txn, c);
for (AddContactHook hook : addHooks)
hook.addingContact(txn, contact);
return c;
}
@Override
public ContactId addContact(Author remote, AuthorId local, SecretKey master,
long timestamp, boolean alice, boolean active)
......@@ -53,11 +65,8 @@ class ContactManagerImpl implements ContactManager, RemoveIdentityHook {
ContactId c;
Transaction txn = db.startTransaction(false);
try {
c = db.addContact(txn, remote, local, active);
keyManager.addContact(txn, c, master, timestamp, alice);
Contact contact = db.getContact(txn, c);
for (AddContactHook hook : addHooks)
hook.addingContact(txn, contact);
c = addContact(txn, remote, local, master, timestamp, alice,
active);
txn.setComplete();
} finally {
db.endTransaction(txn);
......
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