mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
72 lines
1.9 KiB
Java
72 lines
1.9 KiB
Java
package net.sf.briar.transport;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import net.sf.briar.api.ContactId;
|
|
import net.sf.briar.api.crypto.CryptoComponent;
|
|
import net.sf.briar.api.db.DatabaseComponent;
|
|
import net.sf.briar.api.db.DbException;
|
|
import net.sf.briar.api.db.TemporarySecret;
|
|
import net.sf.briar.api.protocol.TransportId;
|
|
import net.sf.briar.api.transport.ConnectionContext;
|
|
import net.sf.briar.api.transport.ConnectionRecogniser;
|
|
|
|
import com.google.inject.Inject;
|
|
|
|
class ConnectionRecogniserImpl implements ConnectionRecogniser {
|
|
|
|
private final CryptoComponent crypto;
|
|
private final DatabaseComponent db;
|
|
// Locking: this
|
|
private final Map<TransportId, TransportConnectionRecogniser> recognisers;
|
|
|
|
@Inject
|
|
ConnectionRecogniserImpl(CryptoComponent crypto, DatabaseComponent db) {
|
|
this.crypto = crypto;
|
|
this.db = db;
|
|
recognisers = new HashMap<TransportId, TransportConnectionRecogniser>();
|
|
}
|
|
|
|
public ConnectionContext acceptConnection(TransportId t, byte[] tag)
|
|
throws DbException {
|
|
TransportConnectionRecogniser r;
|
|
synchronized(this) {
|
|
r = recognisers.get(t);
|
|
}
|
|
if(r == null) return null;
|
|
return r.acceptConnection(tag);
|
|
}
|
|
|
|
public void addSecret(TemporarySecret s) {
|
|
TransportId t = s.getTransportId();
|
|
TransportConnectionRecogniser r;
|
|
synchronized(this) {
|
|
r = recognisers.get(t);
|
|
if(r == null) {
|
|
r = new TransportConnectionRecogniser(crypto, db, t);
|
|
recognisers.put(t, r);
|
|
}
|
|
}
|
|
r.addSecret(s);
|
|
}
|
|
|
|
public void removeSecret(ContactId c, TransportId t, long period) {
|
|
TransportConnectionRecogniser r;
|
|
synchronized(this) {
|
|
r = recognisers.get(t);
|
|
}
|
|
if(r != null) r.removeSecret(c, period);
|
|
}
|
|
|
|
public synchronized void removeSecrets(ContactId c) {
|
|
for(TransportConnectionRecogniser r : recognisers.values())
|
|
r.removeSecrets(c);
|
|
}
|
|
|
|
public synchronized void removeSecrets() {
|
|
for(TransportConnectionRecogniser r : recognisers.values())
|
|
r.removeSecrets();
|
|
}
|
|
}
|