mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 23:29:52 +01:00
Merge duplex and simplex plugin config classes.
This commit is contained in:
@@ -7,9 +7,8 @@ import org.briarproject.android.api.AndroidExecutor;
|
|||||||
import org.briarproject.api.event.EventBus;
|
import org.briarproject.api.event.EventBus;
|
||||||
import org.briarproject.api.lifecycle.IoExecutor;
|
import org.briarproject.api.lifecycle.IoExecutor;
|
||||||
import org.briarproject.api.plugins.BackoffFactory;
|
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.duplex.DuplexPluginFactory;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
|
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
|
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
|
||||||
import org.briarproject.api.system.LocationUtils;
|
import org.briarproject.api.system.LocationUtils;
|
||||||
import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory;
|
import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory;
|
||||||
@@ -29,17 +28,8 @@ import dagger.Provides;
|
|||||||
public class AndroidPluginsModule {
|
public class AndroidPluginsModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
SimplexPluginConfig provideSimplexPluginConfig() {
|
public PluginConfig providePluginConfig(@IoExecutor Executor ioExecutor,
|
||||||
return new SimplexPluginConfig() {
|
AndroidExecutor androidExecutor,
|
||||||
public Collection<SimplexPluginFactory> getFactories() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
public DuplexPluginConfig provideDuplexPluginConfig(
|
|
||||||
@IoExecutor Executor ioExecutor, AndroidExecutor androidExecutor,
|
|
||||||
SecureRandom random, BackoffFactory backoffFactory, Application app,
|
SecureRandom random, BackoffFactory backoffFactory, Application app,
|
||||||
LocationUtils locationUtils, EventBus eventBus) {
|
LocationUtils locationUtils, EventBus eventBus) {
|
||||||
Context appContext = app.getApplicationContext();
|
Context appContext = app.getApplicationContext();
|
||||||
@@ -49,13 +39,19 @@ public class AndroidPluginsModule {
|
|||||||
locationUtils, eventBus);
|
locationUtils, eventBus);
|
||||||
DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor,
|
DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor,
|
||||||
backoffFactory, appContext);
|
backoffFactory, appContext);
|
||||||
final Collection<DuplexPluginFactory> factories =
|
final Collection<DuplexPluginFactory> duplex =
|
||||||
Arrays.asList(bluetooth, tor, lan);
|
Arrays.asList(bluetooth, tor, lan);
|
||||||
return new DuplexPluginConfig() {
|
return new PluginConfig() {
|
||||||
public Collection<DuplexPluginFactory> getFactories() {
|
|
||||||
return factories;
|
@Override
|
||||||
|
public Collection<DuplexPluginFactory> getDuplexFactories() {
|
||||||
|
return duplex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<SimplexPluginFactory> getSimplexFactories() {
|
||||||
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
13
briar-api/src/org/briarproject/api/plugins/PluginConfig.java
Normal file
13
briar-api/src/org/briarproject/api/plugins/PluginConfig.java
Normal 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();
|
||||||
|
}
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package org.briarproject.api.plugins.duplex;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public interface DuplexPluginConfig {
|
|
||||||
|
|
||||||
Collection<DuplexPluginFactory> getFactories();
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package org.briarproject.api.plugins.simplex;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public interface SimplexPluginConfig {
|
|
||||||
|
|
||||||
Collection<SimplexPluginFactory> getFactories();
|
|
||||||
}
|
|
||||||
@@ -13,17 +13,16 @@ import org.briarproject.api.lifecycle.Service;
|
|||||||
import org.briarproject.api.plugins.ConnectionManager;
|
import org.briarproject.api.plugins.ConnectionManager;
|
||||||
import org.briarproject.api.plugins.Plugin;
|
import org.briarproject.api.plugins.Plugin;
|
||||||
import org.briarproject.api.plugins.PluginCallback;
|
import org.briarproject.api.plugins.PluginCallback;
|
||||||
|
import org.briarproject.api.plugins.PluginConfig;
|
||||||
import org.briarproject.api.plugins.PluginManager;
|
import org.briarproject.api.plugins.PluginManager;
|
||||||
import org.briarproject.api.plugins.TransportConnectionReader;
|
import org.briarproject.api.plugins.TransportConnectionReader;
|
||||||
import org.briarproject.api.plugins.TransportConnectionWriter;
|
import org.briarproject.api.plugins.TransportConnectionWriter;
|
||||||
import org.briarproject.api.plugins.duplex.DuplexPlugin;
|
import org.briarproject.api.plugins.duplex.DuplexPlugin;
|
||||||
import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
|
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.DuplexPluginFactory;
|
||||||
import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
|
import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPlugin;
|
import org.briarproject.api.plugins.simplex.SimplexPlugin;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
|
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.plugins.simplex.SimplexPluginFactory;
|
||||||
import org.briarproject.api.properties.TransportProperties;
|
import org.briarproject.api.properties.TransportProperties;
|
||||||
import org.briarproject.api.properties.TransportPropertyManager;
|
import org.briarproject.api.properties.TransportPropertyManager;
|
||||||
@@ -56,8 +55,7 @@ class PluginManagerImpl implements PluginManager, Service {
|
|||||||
|
|
||||||
private final Executor ioExecutor;
|
private final Executor ioExecutor;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
private final SimplexPluginConfig simplexPluginConfig;
|
private final PluginConfig pluginConfig;
|
||||||
private final DuplexPluginConfig duplexPluginConfig;
|
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
private final DatabaseComponent db;
|
private final DatabaseComponent db;
|
||||||
private final Poller poller;
|
private final Poller poller;
|
||||||
@@ -71,8 +69,7 @@ class PluginManagerImpl implements PluginManager, Service {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
PluginManagerImpl(@IoExecutor Executor ioExecutor, EventBus eventBus,
|
PluginManagerImpl(@IoExecutor Executor ioExecutor, EventBus eventBus,
|
||||||
SimplexPluginConfig simplexPluginConfig,
|
PluginConfig pluginConfig, Clock clock,
|
||||||
DuplexPluginConfig duplexPluginConfig, Clock clock,
|
|
||||||
DatabaseComponent db, Poller poller,
|
DatabaseComponent db, Poller poller,
|
||||||
ConnectionManager connectionManager,
|
ConnectionManager connectionManager,
|
||||||
SettingsManager settingsManager,
|
SettingsManager settingsManager,
|
||||||
@@ -80,8 +77,7 @@ class PluginManagerImpl implements PluginManager, Service {
|
|||||||
UiCallback uiCallback) {
|
UiCallback uiCallback) {
|
||||||
this.ioExecutor = ioExecutor;
|
this.ioExecutor = ioExecutor;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.simplexPluginConfig = simplexPluginConfig;
|
this.pluginConfig = pluginConfig;
|
||||||
this.duplexPluginConfig = duplexPluginConfig;
|
|
||||||
this.clock = clock;
|
this.clock = clock;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.poller = poller;
|
this.poller = poller;
|
||||||
@@ -99,14 +95,14 @@ class PluginManagerImpl implements PluginManager, Service {
|
|||||||
// Instantiate and start the simplex plugins
|
// Instantiate and start the simplex plugins
|
||||||
LOG.info("Starting simplex plugins");
|
LOG.info("Starting simplex plugins");
|
||||||
Collection<SimplexPluginFactory> sFactories =
|
Collection<SimplexPluginFactory> sFactories =
|
||||||
simplexPluginConfig.getFactories();
|
pluginConfig.getSimplexFactories();
|
||||||
final CountDownLatch sLatch = new CountDownLatch(sFactories.size());
|
final CountDownLatch sLatch = new CountDownLatch(sFactories.size());
|
||||||
for (SimplexPluginFactory factory : sFactories)
|
for (SimplexPluginFactory factory : sFactories)
|
||||||
ioExecutor.execute(new SimplexPluginStarter(factory, sLatch));
|
ioExecutor.execute(new SimplexPluginStarter(factory, sLatch));
|
||||||
// Instantiate and start the duplex plugins
|
// Instantiate and start the duplex plugins
|
||||||
LOG.info("Starting duplex plugins");
|
LOG.info("Starting duplex plugins");
|
||||||
Collection<DuplexPluginFactory> dFactories =
|
Collection<DuplexPluginFactory> dFactories =
|
||||||
duplexPluginConfig.getFactories();
|
pluginConfig.getDuplexFactories();
|
||||||
final CountDownLatch dLatch = new CountDownLatch(dFactories.size());
|
final CountDownLatch dLatch = new CountDownLatch(dFactories.size());
|
||||||
for (DuplexPluginFactory factory : dFactories)
|
for (DuplexPluginFactory factory : dFactories)
|
||||||
ioExecutor.execute(new DuplexPluginStarter(factory, dLatch));
|
ioExecutor.execute(new DuplexPluginStarter(factory, dLatch));
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ package org.briarproject.plugins;
|
|||||||
import org.briarproject.api.lifecycle.IoExecutor;
|
import org.briarproject.api.lifecycle.IoExecutor;
|
||||||
import org.briarproject.api.lifecycle.ShutdownManager;
|
import org.briarproject.api.lifecycle.ShutdownManager;
|
||||||
import org.briarproject.api.plugins.BackoffFactory;
|
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.duplex.DuplexPluginFactory;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
|
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
|
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
|
||||||
import org.briarproject.api.reliability.ReliabilityLayerFactory;
|
import org.briarproject.api.reliability.ReliabilityLayerFactory;
|
||||||
import org.briarproject.plugins.bluetooth.BluetoothPluginFactory;
|
import org.briarproject.plugins.bluetooth.BluetoothPluginFactory;
|
||||||
@@ -27,21 +26,7 @@ import dagger.Provides;
|
|||||||
public class DesktopPluginsModule extends PluginsModule {
|
public class DesktopPluginsModule extends PluginsModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
SimplexPluginConfig getSimplexPluginConfig(
|
PluginConfig getPluginConfig(@IoExecutor Executor ioExecutor,
|
||||||
@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,
|
|
||||||
SecureRandom random, BackoffFactory backoffFactory,
|
SecureRandom random, BackoffFactory backoffFactory,
|
||||||
ReliabilityLayerFactory reliabilityFactory,
|
ReliabilityLayerFactory reliabilityFactory,
|
||||||
ShutdownManager shutdownManager) {
|
ShutdownManager shutdownManager) {
|
||||||
@@ -53,11 +38,22 @@ public class DesktopPluginsModule extends PluginsModule {
|
|||||||
backoffFactory);
|
backoffFactory);
|
||||||
DuplexPluginFactory wan = new WanTcpPluginFactory(ioExecutor,
|
DuplexPluginFactory wan = new WanTcpPluginFactory(ioExecutor,
|
||||||
backoffFactory, shutdownManager);
|
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);
|
Arrays.asList(bluetooth, modem, lan, wan);
|
||||||
return new DuplexPluginConfig() {
|
return new PluginConfig() {
|
||||||
public Collection<DuplexPluginFactory> getFactories() {
|
|
||||||
return factories;
|
@Override
|
||||||
|
public Collection<DuplexPluginFactory> getDuplexFactories() {
|
||||||
|
return duplex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<SimplexPluginFactory> getSimplexFactories() {
|
||||||
|
return simplex;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,13 +6,12 @@ import org.briarproject.api.db.DatabaseComponent;
|
|||||||
import org.briarproject.api.db.Transaction;
|
import org.briarproject.api.db.Transaction;
|
||||||
import org.briarproject.api.event.EventBus;
|
import org.briarproject.api.event.EventBus;
|
||||||
import org.briarproject.api.plugins.ConnectionManager;
|
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.DuplexPlugin;
|
||||||
import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
|
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.DuplexPluginFactory;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPlugin;
|
import org.briarproject.api.plugins.simplex.SimplexPlugin;
|
||||||
import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
|
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.plugins.simplex.SimplexPluginFactory;
|
||||||
import org.briarproject.api.properties.TransportPropertyManager;
|
import org.briarproject.api.properties.TransportPropertyManager;
|
||||||
import org.briarproject.api.settings.SettingsManager;
|
import org.briarproject.api.settings.SettingsManager;
|
||||||
@@ -40,10 +39,7 @@ public class PluginManagerImplTest extends BriarTestCase {
|
|||||||
}};
|
}};
|
||||||
final Executor ioExecutor = Executors.newSingleThreadExecutor();
|
final Executor ioExecutor = Executors.newSingleThreadExecutor();
|
||||||
final EventBus eventBus = context.mock(EventBus.class);
|
final EventBus eventBus = context.mock(EventBus.class);
|
||||||
final SimplexPluginConfig simplexPluginConfig =
|
final PluginConfig pluginConfig = context.mock(PluginConfig.class);
|
||||||
context.mock(SimplexPluginConfig.class);
|
|
||||||
final DuplexPluginConfig duplexPluginConfig =
|
|
||||||
context.mock(DuplexPluginConfig.class);
|
|
||||||
final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
||||||
final Poller poller = context.mock(Poller.class);
|
final Poller poller = context.mock(Poller.class);
|
||||||
final ConnectionManager connectionManager =
|
final ConnectionManager connectionManager =
|
||||||
@@ -79,7 +75,7 @@ public class PluginManagerImplTest extends BriarTestCase {
|
|||||||
final TransportId duplexFailId = new TransportId("duplex1");
|
final TransportId duplexFailId = new TransportId("duplex1");
|
||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
// First simplex plugin
|
// First simplex plugin
|
||||||
oneOf(simplexPluginConfig).getFactories();
|
oneOf(pluginConfig).getSimplexFactories();
|
||||||
will(returnValue(Arrays.asList(simplexFactory,
|
will(returnValue(Arrays.asList(simplexFactory,
|
||||||
simplexFailFactory)));
|
simplexFailFactory)));
|
||||||
oneOf(simplexFactory).getId();
|
oneOf(simplexFactory).getId();
|
||||||
@@ -114,7 +110,7 @@ public class PluginManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(simplexFailPlugin).start();
|
oneOf(simplexFailPlugin).start();
|
||||||
will(returnValue(false)); // Failed to start
|
will(returnValue(false)); // Failed to start
|
||||||
// First duplex plugin
|
// First duplex plugin
|
||||||
oneOf(duplexPluginConfig).getFactories();
|
oneOf(pluginConfig).getDuplexFactories();
|
||||||
will(returnValue(Arrays.asList(duplexFactory, duplexFailFactory)));
|
will(returnValue(Arrays.asList(duplexFactory, duplexFailFactory)));
|
||||||
oneOf(duplexFactory).getId();
|
oneOf(duplexFactory).getId();
|
||||||
will(returnValue(duplexId));
|
will(returnValue(duplexId));
|
||||||
@@ -144,9 +140,8 @@ public class PluginManagerImplTest extends BriarTestCase {
|
|||||||
oneOf(duplexPlugin).stop();
|
oneOf(duplexPlugin).stop();
|
||||||
}});
|
}});
|
||||||
PluginManagerImpl p = new PluginManagerImpl(ioExecutor, eventBus,
|
PluginManagerImpl p = new PluginManagerImpl(ioExecutor, eventBus,
|
||||||
simplexPluginConfig, duplexPluginConfig, clock, db, poller,
|
pluginConfig, clock, db, poller, connectionManager,
|
||||||
connectionManager, settingsManager, transportPropertyManager,
|
settingsManager, transportPropertyManager, uiCallback);
|
||||||
uiCallback);
|
|
||||||
|
|
||||||
// Two plugins should be started and stopped
|
// Two plugins should be started and stopped
|
||||||
assertTrue(p.start());
|
assertTrue(p.start());
|
||||||
|
|||||||
Reference in New Issue
Block a user