If Bluetooth is activated to add a contact, deactivate it afterwards.

Bug #47.
This commit is contained in:
akwizgran
2014-03-10 19:06:14 +00:00
parent cd4fb6fb64
commit a2b3ef9e62
7 changed files with 59 additions and 21 deletions

View File

@@ -46,14 +46,14 @@ class AliceConnector extends Connector {
ConnectionWriterFactory connectionWriterFactory,
AuthorFactory authorFactory, GroupFactory groupFactory,
KeyManager keyManager, ConnectionDispatcher connectionDispatcher,
Clock clock, ConnectorGroup group, DuplexPlugin plugin,
LocalAuthor localAuthor,
Clock clock, boolean reuseConnection, ConnectorGroup group,
DuplexPlugin plugin, LocalAuthor localAuthor,
Map<TransportId, TransportProperties> localProps,
PseudoRandom random) {
super(crypto, db, readerFactory, writerFactory, connectionReaderFactory,
connectionWriterFactory, authorFactory, groupFactory,
keyManager, connectionDispatcher, clock, group, plugin,
localAuthor, localProps, random);
keyManager, connectionDispatcher, clock, reuseConnection, group,
plugin, localAuthor, localProps, random);
}
@Override
@@ -181,6 +181,7 @@ class AliceConnector extends Connector {
LOG.info(pluginName + " pseudonym exchange succeeded");
group.pseudonymExchangeSucceeded(remoteAuthor);
// Reuse the connection as an outgoing BTP connection
reuseConnection(conn, true);
if(reuseConnection) reuseConnection(conn, true);
else tryToClose(conn, false);
}
}

View File

@@ -46,14 +46,14 @@ class BobConnector extends Connector {
ConnectionWriterFactory connectionWriterFactory,
AuthorFactory authorFactory, GroupFactory groupFactory,
KeyManager keyManager, ConnectionDispatcher connectionDispatcher,
Clock clock, ConnectorGroup group, DuplexPlugin plugin,
LocalAuthor localAuthor,
Clock clock, boolean reuseConnection, ConnectorGroup group,
DuplexPlugin plugin, LocalAuthor localAuthor,
Map<TransportId, TransportProperties> localProps,
PseudoRandom random) {
super(crypto, db, readerFactory, writerFactory, connectionReaderFactory,
connectionWriterFactory, authorFactory, groupFactory,
keyManager, connectionDispatcher, clock, group, plugin,
localAuthor, localProps, random);
keyManager, connectionDispatcher, clock, reuseConnection, group,
plugin, localAuthor, localProps, random);
}
@Override
@@ -181,6 +181,7 @@ class BobConnector extends Connector {
LOG.info(pluginName + " pseudonym exchange succeeded");
group.pseudonymExchangeSucceeded(remoteAuthor);
// Reuse the connection as an incoming BTP connection
reuseConnection(conn, false);
if(reuseConnection) reuseConnection(conn, false);
else tryToClose(conn, false);
}
}

View File

@@ -71,6 +71,7 @@ abstract class Connector extends Thread {
protected final KeyManager keyManager;
protected final ConnectionDispatcher connectionDispatcher;
protected final Clock clock;
protected final boolean reuseConnection;
protected final ConnectorGroup group;
protected final DuplexPlugin plugin;
protected final LocalAuthor localAuthor;
@@ -90,8 +91,8 @@ abstract class Connector extends Thread {
ConnectionWriterFactory connectionWriterFactory,
AuthorFactory authorFactory, GroupFactory groupFactory,
KeyManager keyManager, ConnectionDispatcher connectionDispatcher,
Clock clock, ConnectorGroup group, DuplexPlugin plugin,
LocalAuthor localAuthor,
Clock clock, boolean reuseConnection, ConnectorGroup group,
DuplexPlugin plugin, LocalAuthor localAuthor,
Map<TransportId, TransportProperties> localProps,
PseudoRandom random) {
super("Connector");
@@ -106,6 +107,7 @@ abstract class Connector extends Thread {
this.keyManager = keyManager;
this.connectionDispatcher = connectionDispatcher;
this.clock = clock;
this.reuseConnection = reuseConnection;
this.group = group;
this.plugin = plugin;
this.localAuthor = localAuthor;

View File

@@ -56,6 +56,7 @@ class ConnectorGroup extends Thread implements InvitationTask {
private final PluginManager pluginManager;
private final AuthorId localAuthorId;
private final int localInvitationCode, remoteInvitationCode;
private final boolean reuseConnection;
private final Collection<InvitationListener> listeners;
private final AtomicBoolean connected;
private final CountDownLatch localConfirmationLatch;
@@ -79,7 +80,8 @@ class ConnectorGroup extends Thread implements InvitationTask {
AuthorFactory authorFactory, GroupFactory groupFactory,
KeyManager keyManager, ConnectionDispatcher connectionDispatcher,
Clock clock, PluginManager pluginManager, AuthorId localAuthorId,
int localInvitationCode, int remoteInvitationCode) {
int localInvitationCode, int remoteInvitationCode,
boolean reuseConnection) {
super("ConnectorGroup");
this.crypto = crypto;
this.db = db;
@@ -96,6 +98,7 @@ class ConnectorGroup extends Thread implements InvitationTask {
this.localAuthorId = localAuthorId;
this.localInvitationCode = localInvitationCode;
this.remoteInvitationCode = remoteInvitationCode;
this.reuseConnection = reuseConnection;
listeners = new CopyOnWriteArrayList<InvitationListener>();
connected = new AtomicBoolean(false);
localConfirmationLatch = new CountDownLatch(1);
@@ -174,8 +177,8 @@ class ConnectorGroup extends Thread implements InvitationTask {
remoteInvitationCode);
return new AliceConnector(crypto, db, readerFactory, writerFactory,
connectionReaderFactory, connectionWriterFactory, authorFactory,
groupFactory, keyManager, connectionDispatcher, clock, this,
plugin, localAuthor, localProps, random);
groupFactory, keyManager, connectionDispatcher, clock,
reuseConnection, this, plugin, localAuthor, localProps, random);
}
private Connector createBobConnector(DuplexPlugin plugin,
@@ -185,8 +188,8 @@ class ConnectorGroup extends Thread implements InvitationTask {
localInvitationCode);
return new BobConnector(crypto, db, readerFactory, writerFactory,
connectionReaderFactory, connectionWriterFactory, authorFactory,
groupFactory, keyManager, connectionDispatcher, clock, this,
plugin, localAuthor, localProps, random);
groupFactory, keyManager, connectionDispatcher, clock,
reuseConnection, this, plugin, localAuthor, localProps, random);
}
public void localConfirmationSucceeded() {

View File

@@ -56,10 +56,11 @@ class InvitationTaskFactoryImpl implements InvitationTaskFactory {
}
public InvitationTask createTask(AuthorId localAuthorId, int localCode,
int remoteCode) {
int remoteCode, boolean reuseConnection) {
return new ConnectorGroup(crypto, db, readerFactory, writerFactory,
connectionReaderFactory, connectionWriterFactory,
authorFactory, groupFactory, keyManager, connectionDispatcher,
clock, pluginManager, localAuthorId, localCode, remoteCode);
clock, pluginManager, localAuthorId, localCode, remoteCode,
reuseConnection);
}
}