Merge duplex and simplex plugin config classes.

This commit is contained in:
akwizgran
2016-03-28 11:28:46 +01:00
parent 65316414ea
commit 0417639410
7 changed files with 56 additions and 76 deletions

View File

@@ -7,9 +7,8 @@ import org.briarproject.android.api.AndroidExecutor;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.plugins.BackoffFactory;
import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
import org.briarproject.api.plugins.PluginConfig;
import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import org.briarproject.api.system.LocationUtils;
import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory;
@@ -29,17 +28,8 @@ import dagger.Provides;
public class AndroidPluginsModule {
@Provides
SimplexPluginConfig provideSimplexPluginConfig() {
return new SimplexPluginConfig() {
public Collection<SimplexPluginFactory> getFactories() {
return Collections.emptyList();
}
};
}
@Provides
public DuplexPluginConfig provideDuplexPluginConfig(
@IoExecutor Executor ioExecutor, AndroidExecutor androidExecutor,
public PluginConfig providePluginConfig(@IoExecutor Executor ioExecutor,
AndroidExecutor androidExecutor,
SecureRandom random, BackoffFactory backoffFactory, Application app,
LocationUtils locationUtils, EventBus eventBus) {
Context appContext = app.getApplicationContext();
@@ -49,13 +39,19 @@ public class AndroidPluginsModule {
locationUtils, eventBus);
DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor,
backoffFactory, appContext);
final Collection<DuplexPluginFactory> factories =
final Collection<DuplexPluginFactory> duplex =
Arrays.asList(bluetooth, tor, lan);
return new DuplexPluginConfig() {
public Collection<DuplexPluginFactory> getFactories() {
return factories;
return new PluginConfig() {
@Override
public Collection<DuplexPluginFactory> getDuplexFactories() {
return duplex;
}
@Override
public Collection<SimplexPluginFactory> getSimplexFactories() {
return Collections.emptyList();
}
};
}
}

View File

@@ -0,0 +1,13 @@
package org.briarproject.api.plugins;
import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import java.util.Collection;
public interface PluginConfig {
Collection<DuplexPluginFactory> getDuplexFactories();
Collection<SimplexPluginFactory> getSimplexFactories();
}

View File

@@ -1,8 +0,0 @@
package org.briarproject.api.plugins.duplex;
import java.util.Collection;
public interface DuplexPluginConfig {
Collection<DuplexPluginFactory> getFactories();
}

View File

@@ -1,8 +0,0 @@
package org.briarproject.api.plugins.simplex;
import java.util.Collection;
public interface SimplexPluginConfig {
Collection<SimplexPluginFactory> getFactories();
}

View File

@@ -13,17 +13,16 @@ import org.briarproject.api.lifecycle.Service;
import org.briarproject.api.plugins.ConnectionManager;
import org.briarproject.api.plugins.Plugin;
import org.briarproject.api.plugins.PluginCallback;
import org.briarproject.api.plugins.PluginConfig;
import org.briarproject.api.plugins.PluginManager;
import org.briarproject.api.plugins.TransportConnectionReader;
import org.briarproject.api.plugins.TransportConnectionWriter;
import org.briarproject.api.plugins.duplex.DuplexPlugin;
import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
import org.briarproject.api.plugins.simplex.SimplexPlugin;
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import org.briarproject.api.properties.TransportProperties;
import org.briarproject.api.properties.TransportPropertyManager;
@@ -56,8 +55,7 @@ class PluginManagerImpl implements PluginManager, Service {
private final Executor ioExecutor;
private final EventBus eventBus;
private final SimplexPluginConfig simplexPluginConfig;
private final DuplexPluginConfig duplexPluginConfig;
private final PluginConfig pluginConfig;
private final Clock clock;
private final DatabaseComponent db;
private final Poller poller;
@@ -71,8 +69,7 @@ class PluginManagerImpl implements PluginManager, Service {
@Inject
PluginManagerImpl(@IoExecutor Executor ioExecutor, EventBus eventBus,
SimplexPluginConfig simplexPluginConfig,
DuplexPluginConfig duplexPluginConfig, Clock clock,
PluginConfig pluginConfig, Clock clock,
DatabaseComponent db, Poller poller,
ConnectionManager connectionManager,
SettingsManager settingsManager,
@@ -80,8 +77,7 @@ class PluginManagerImpl implements PluginManager, Service {
UiCallback uiCallback) {
this.ioExecutor = ioExecutor;
this.eventBus = eventBus;
this.simplexPluginConfig = simplexPluginConfig;
this.duplexPluginConfig = duplexPluginConfig;
this.pluginConfig = pluginConfig;
this.clock = clock;
this.db = db;
this.poller = poller;
@@ -99,14 +95,14 @@ class PluginManagerImpl implements PluginManager, Service {
// Instantiate and start the simplex plugins
LOG.info("Starting simplex plugins");
Collection<SimplexPluginFactory> sFactories =
simplexPluginConfig.getFactories();
pluginConfig.getSimplexFactories();
final CountDownLatch sLatch = new CountDownLatch(sFactories.size());
for (SimplexPluginFactory factory : sFactories)
ioExecutor.execute(new SimplexPluginStarter(factory, sLatch));
// Instantiate and start the duplex plugins
LOG.info("Starting duplex plugins");
Collection<DuplexPluginFactory> dFactories =
duplexPluginConfig.getFactories();
pluginConfig.getDuplexFactories();
final CountDownLatch dLatch = new CountDownLatch(dFactories.size());
for (DuplexPluginFactory factory : dFactories)
ioExecutor.execute(new DuplexPluginStarter(factory, dLatch));

View File

@@ -3,9 +3,8 @@ package org.briarproject.plugins;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.lifecycle.ShutdownManager;
import org.briarproject.api.plugins.BackoffFactory;
import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
import org.briarproject.api.plugins.PluginConfig;
import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import org.briarproject.api.reliability.ReliabilityLayerFactory;
import org.briarproject.plugins.bluetooth.BluetoothPluginFactory;
@@ -27,21 +26,7 @@ import dagger.Provides;
public class DesktopPluginsModule extends PluginsModule {
@Provides
SimplexPluginConfig getSimplexPluginConfig(
@IoExecutor Executor ioExecutor) {
SimplexPluginFactory removable =
new RemovableDrivePluginFactory(ioExecutor);
final Collection<SimplexPluginFactory> factories =
Collections.singletonList(removable);
return new SimplexPluginConfig() {
public Collection<SimplexPluginFactory> getFactories() {
return factories;
}
};
}
@Provides
DuplexPluginConfig getDuplexPluginConfig(@IoExecutor Executor ioExecutor,
PluginConfig getPluginConfig(@IoExecutor Executor ioExecutor,
SecureRandom random, BackoffFactory backoffFactory,
ReliabilityLayerFactory reliabilityFactory,
ShutdownManager shutdownManager) {
@@ -53,11 +38,22 @@ public class DesktopPluginsModule extends PluginsModule {
backoffFactory);
DuplexPluginFactory wan = new WanTcpPluginFactory(ioExecutor,
backoffFactory, shutdownManager);
final Collection<DuplexPluginFactory> factories =
SimplexPluginFactory removable =
new RemovableDrivePluginFactory(ioExecutor);
final Collection<SimplexPluginFactory> simplex =
Collections.singletonList(removable);
final Collection<DuplexPluginFactory> duplex =
Arrays.asList(bluetooth, modem, lan, wan);
return new DuplexPluginConfig() {
public Collection<DuplexPluginFactory> getFactories() {
return factories;
return new PluginConfig() {
@Override
public Collection<DuplexPluginFactory> getDuplexFactories() {
return duplex;
}
@Override
public Collection<SimplexPluginFactory> getSimplexFactories() {
return simplex;
}
};
}

View File

@@ -6,13 +6,12 @@ import org.briarproject.api.db.DatabaseComponent;
import org.briarproject.api.db.Transaction;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.plugins.ConnectionManager;
import org.briarproject.api.plugins.PluginConfig;
import org.briarproject.api.plugins.duplex.DuplexPlugin;
import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
import org.briarproject.api.plugins.simplex.SimplexPlugin;
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import org.briarproject.api.properties.TransportPropertyManager;
import org.briarproject.api.settings.SettingsManager;
@@ -40,10 +39,7 @@ public class PluginManagerImplTest extends BriarTestCase {
}};
final Executor ioExecutor = Executors.newSingleThreadExecutor();
final EventBus eventBus = context.mock(EventBus.class);
final SimplexPluginConfig simplexPluginConfig =
context.mock(SimplexPluginConfig.class);
final DuplexPluginConfig duplexPluginConfig =
context.mock(DuplexPluginConfig.class);
final PluginConfig pluginConfig = context.mock(PluginConfig.class);
final DatabaseComponent db = context.mock(DatabaseComponent.class);
final Poller poller = context.mock(Poller.class);
final ConnectionManager connectionManager =
@@ -79,7 +75,7 @@ public class PluginManagerImplTest extends BriarTestCase {
final TransportId duplexFailId = new TransportId("duplex1");
context.checking(new Expectations() {{
// First simplex plugin
oneOf(simplexPluginConfig).getFactories();
oneOf(pluginConfig).getSimplexFactories();
will(returnValue(Arrays.asList(simplexFactory,
simplexFailFactory)));
oneOf(simplexFactory).getId();
@@ -114,7 +110,7 @@ public class PluginManagerImplTest extends BriarTestCase {
oneOf(simplexFailPlugin).start();
will(returnValue(false)); // Failed to start
// First duplex plugin
oneOf(duplexPluginConfig).getFactories();
oneOf(pluginConfig).getDuplexFactories();
will(returnValue(Arrays.asList(duplexFactory, duplexFailFactory)));
oneOf(duplexFactory).getId();
will(returnValue(duplexId));
@@ -144,9 +140,8 @@ public class PluginManagerImplTest extends BriarTestCase {
oneOf(duplexPlugin).stop();
}});
PluginManagerImpl p = new PluginManagerImpl(ioExecutor, eventBus,
simplexPluginConfig, duplexPluginConfig, clock, db, poller,
connectionManager, settingsManager, transportPropertyManager,
uiCallback);
pluginConfig, clock, db, poller, connectionManager,
settingsManager, transportPropertyManager, uiCallback);
// Two plugins should be started and stopped
assertTrue(p.start());