mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-23 16:19:54 +01:00
Use lambdas for tasks requiring a manager lookup.
This commit is contained in:
@@ -29,6 +29,7 @@ import java.util.concurrent.Executor;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@@ -132,13 +133,10 @@ class KeyManagerImpl implements KeyManager, Service, EventListener {
|
|||||||
public void activateKeys(Transaction txn, Map<TransportId, KeySetId> keys)
|
public void activateKeys(Transaction txn, Map<TransportId, KeySetId> keys)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
for (Entry<TransportId, KeySetId> e : keys.entrySet()) {
|
for (Entry<TransportId, KeySetId> e : keys.entrySet()) {
|
||||||
TransportId t = e.getKey();
|
withManager(e.getKey(), m -> {
|
||||||
TransportKeyManager m = managers.get(t);
|
|
||||||
if (m == null) {
|
|
||||||
if (LOG.isLoggable(INFO)) LOG.info("No key manager for " + t);
|
|
||||||
} else {
|
|
||||||
m.activateKeys(txn, e.getValue());
|
m.activateKeys(txn, e.getValue());
|
||||||
}
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,37 +155,25 @@ class KeyManagerImpl implements KeyManager, Service, EventListener {
|
|||||||
@Override
|
@Override
|
||||||
public StreamContext getStreamContext(ContactId c, TransportId t)
|
public StreamContext getStreamContext(ContactId c, TransportId t)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
TransportKeyManager m = managers.get(t);
|
return withManager(t, m ->
|
||||||
if (m == null) {
|
db.transactionWithNullableResult(false, txn ->
|
||||||
if (LOG.isLoggable(INFO)) LOG.info("No key manager for " + t);
|
m.getStreamContext(txn, c)));
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return db.transactionWithNullableResult(false, txn ->
|
|
||||||
m.getStreamContext(txn, c));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamContext getStreamContext(PendingContactId p, TransportId t)
|
public StreamContext getStreamContext(PendingContactId p, TransportId t)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
TransportKeyManager m = managers.get(t);
|
return withManager(t, m ->
|
||||||
if (m == null) {
|
db.transactionWithNullableResult(false, txn ->
|
||||||
if (LOG.isLoggable(INFO)) LOG.info("No key manager for " + t);
|
m.getStreamContext(txn, p)));
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return db.transactionWithNullableResult(false, txn ->
|
|
||||||
m.getStreamContext(txn, p));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamContext getStreamContext(TransportId t, byte[] tag)
|
public StreamContext getStreamContext(TransportId t, byte[] tag)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
TransportKeyManager m = managers.get(t);
|
return withManager(t, m ->
|
||||||
if (m == null) {
|
db.transactionWithNullableResult(false, txn ->
|
||||||
if (LOG.isLoggable(INFO)) LOG.info("No key manager for " + t);
|
m.getStreamContext(txn, tag)));
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return db.transactionWithNullableResult(false, txn ->
|
|
||||||
m.getStreamContext(txn, tag));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -202,4 +188,20 @@ class KeyManagerImpl implements KeyManager, Service, EventListener {
|
|||||||
for (TransportKeyManager m : managers.values()) m.removeContact(c);
|
for (TransportKeyManager m : managers.values()) m.removeContact(c);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private <T> T withManager(TransportId t, ManagerTask<T> task)
|
||||||
|
throws DbException {
|
||||||
|
TransportKeyManager m = managers.get(t);
|
||||||
|
if (m == null) {
|
||||||
|
if (LOG.isLoggable(INFO)) LOG.info("No key manager for " + t);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return task.run(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
private interface ManagerTask<T> {
|
||||||
|
@Nullable
|
||||||
|
T run(TransportKeyManager m) throws DbException;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user