Create two new events to signal enabling and disabling of transports

This commit is contained in:
Torsten Grote
2015-12-16 13:48:56 -02:00
parent c7e4d5ffa9
commit 2d28dcada2
14 changed files with 132 additions and 18 deletions

View File

@@ -6,6 +6,9 @@ import org.briarproject.api.TransportId;
import org.briarproject.api.TransportProperties;
import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.DbException;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.TransportDisabledEvent;
import org.briarproject.api.event.TransportEnabledEvent;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.plugins.ConnectionManager;
import org.briarproject.api.plugins.Plugin;
@@ -48,6 +51,7 @@ class PluginManagerImpl implements PluginManager {
Logger.getLogger(PluginManagerImpl.class.getName());
private final Executor ioExecutor;
private final EventBus eventBus;
private final SimplexPluginConfig simplexPluginConfig;
private final DuplexPluginConfig duplexPluginConfig;
private final Clock clock;
@@ -60,12 +64,13 @@ class PluginManagerImpl implements PluginManager {
private final List<DuplexPlugin> duplexPlugins;
@Inject
PluginManagerImpl(@IoExecutor Executor ioExecutor,
PluginManagerImpl(@IoExecutor Executor ioExecutor, EventBus eventBus,
SimplexPluginConfig simplexPluginConfig,
DuplexPluginConfig duplexPluginConfig, Clock clock,
DatabaseComponent db, Poller poller,
ConnectionManager connectionManager, UiCallback uiCallback) {
this.ioExecutor = ioExecutor;
this.eventBus = eventBus;
this.simplexPluginConfig = simplexPluginConfig;
this.duplexPluginConfig = duplexPluginConfig;
this.clock = clock;
@@ -360,10 +365,16 @@ class PluginManagerImpl implements PluginManager {
uiCallback.showMessage(message);
}
public void pollNow() {
public void transportEnabled() {
eventBus.broadcast(new TransportEnabledEvent(id));
Plugin p = plugins.get(id);
if (p != null) poller.pollNow(p);
}
public void transportDisabled() {
eventBus.broadcast(new TransportDisabledEvent(id));
}
}
private class SimplexCallback extends PluginCallbackImpl

View File

@@ -106,7 +106,7 @@ abstract class TcpPlugin implements DuplexPlugin {
SocketAddress local = ss.getLocalSocketAddress();
setLocalSocketAddress((InetSocketAddress) local);
if (LOG.isLoggable(INFO)) LOG.info("Listening on " + local);
callback.pollNow();
callback.transportEnabled();
acceptContactConnections();
}
});
@@ -117,6 +117,8 @@ abstract class TcpPlugin implements DuplexPlugin {
if (ss != null) ss.close();
} catch (IOException e) {
if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
} finally {
callback.transportDisabled();
}
}