mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Refactoring.
Unidirectional transports and connections are now called simplex rather than batch. Bidirectional transports and connections are now called duplex rather than stream.
This commit is contained in:
@@ -16,23 +16,23 @@ import net.sf.briar.api.TransportConfig;
|
||||
import net.sf.briar.api.TransportProperties;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.plugins.BatchPlugin;
|
||||
import net.sf.briar.api.plugins.BatchPluginCallback;
|
||||
import net.sf.briar.api.plugins.BatchPluginFactory;
|
||||
import net.sf.briar.api.plugins.SimplexPlugin;
|
||||
import net.sf.briar.api.plugins.SimplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.SimplexPluginFactory;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
import net.sf.briar.api.plugins.Plugin;
|
||||
import net.sf.briar.api.plugins.PluginCallback;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.PluginManager;
|
||||
import net.sf.briar.api.plugins.StreamPlugin;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.plugins.StreamPluginFactory;
|
||||
import net.sf.briar.api.plugins.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexPluginFactory;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.ProtocolConstants;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.transport.ConnectionDispatcher;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.ui.UiCallback;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
@@ -42,11 +42,11 @@ class PluginManagerImpl implements PluginManager {
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(PluginManagerImpl.class.getName());
|
||||
|
||||
private static final String[] BATCH_FACTORIES = new String[] {
|
||||
private static final String[] SIMPLEX_PLUGIN_FACTORIES = new String[] {
|
||||
"net.sf.briar.plugins.file.RemovableDrivePluginFactory"
|
||||
};
|
||||
|
||||
private static final String[] STREAM_FACTORIES = new String[] {
|
||||
private static final String[] DUPLEX_PLUGIN_FACTORIES = new String[] {
|
||||
"net.sf.briar.plugins.bluetooth.BluetoothPluginFactory",
|
||||
"net.sf.briar.plugins.socket.SimpleSocketPluginFactory"
|
||||
};
|
||||
@@ -56,8 +56,8 @@ class PluginManagerImpl implements PluginManager {
|
||||
private final Poller poller;
|
||||
private final ConnectionDispatcher dispatcher;
|
||||
private final UiCallback uiCallback;
|
||||
private final List<BatchPlugin> batchPlugins; // Locking: this
|
||||
private final List<StreamPlugin> streamPlugins; // Locking: this
|
||||
private final List<SimplexPlugin> simplexPlugins; // Locking: this
|
||||
private final List<DuplexPlugin> duplexPlugins; // Locking: this
|
||||
|
||||
@Inject
|
||||
PluginManagerImpl(@PluginExecutor ExecutorService pluginExecutor,
|
||||
@@ -68,24 +68,24 @@ class PluginManagerImpl implements PluginManager {
|
||||
this.poller = poller;
|
||||
this.dispatcher = dispatcher;
|
||||
this.uiCallback = uiCallback;
|
||||
batchPlugins = new ArrayList<BatchPlugin>();
|
||||
streamPlugins = new ArrayList<StreamPlugin>();
|
||||
simplexPlugins = new ArrayList<SimplexPlugin>();
|
||||
duplexPlugins = new ArrayList<DuplexPlugin>();
|
||||
}
|
||||
|
||||
public synchronized int getPluginCount() {
|
||||
return batchPlugins.size() + streamPlugins.size();
|
||||
return simplexPlugins.size() + duplexPlugins.size();
|
||||
}
|
||||
|
||||
public synchronized int start() {
|
||||
Set<TransportId> ids = new HashSet<TransportId>();
|
||||
// Instantiate and start the batch plugins
|
||||
for(String s : BATCH_FACTORIES) {
|
||||
// Instantiate and start the simplex plugins
|
||||
for(String s : SIMPLEX_PLUGIN_FACTORIES) {
|
||||
try {
|
||||
Class<?> c = Class.forName(s);
|
||||
BatchPluginFactory factory =
|
||||
(BatchPluginFactory) c.newInstance();
|
||||
BatchCallback callback = new BatchCallback();
|
||||
BatchPlugin plugin = factory.createPlugin(pluginExecutor,
|
||||
SimplexPluginFactory factory =
|
||||
(SimplexPluginFactory) c.newInstance();
|
||||
SimplexCallback callback = new SimplexCallback();
|
||||
SimplexPlugin plugin = factory.createPlugin(pluginExecutor,
|
||||
callback);
|
||||
if(plugin == null) {
|
||||
if(LOG.isLoggable(Level.INFO)) {
|
||||
@@ -109,7 +109,7 @@ class PluginManagerImpl implements PluginManager {
|
||||
}
|
||||
callback.init(id, index);
|
||||
plugin.start();
|
||||
batchPlugins.add(plugin);
|
||||
simplexPlugins.add(plugin);
|
||||
} catch(ClassCastException e) {
|
||||
if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
|
||||
continue;
|
||||
@@ -118,14 +118,14 @@ class PluginManagerImpl implements PluginManager {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// Instantiate and start the stream plugins
|
||||
for(String s : STREAM_FACTORIES) {
|
||||
// Instantiate and start the duplex plugins
|
||||
for(String s : DUPLEX_PLUGIN_FACTORIES) {
|
||||
try {
|
||||
Class<?> c = Class.forName(s);
|
||||
StreamPluginFactory factory =
|
||||
(StreamPluginFactory) c.newInstance();
|
||||
StreamCallback callback = new StreamCallback();
|
||||
StreamPlugin plugin = factory.createPlugin(pluginExecutor,
|
||||
DuplexPluginFactory factory =
|
||||
(DuplexPluginFactory) c.newInstance();
|
||||
DuplexCallback callback = new DuplexCallback();
|
||||
DuplexPlugin plugin = factory.createPlugin(pluginExecutor,
|
||||
callback);
|
||||
if(plugin == null) {
|
||||
if(LOG.isLoggable(Level.INFO)) {
|
||||
@@ -149,7 +149,7 @@ class PluginManagerImpl implements PluginManager {
|
||||
}
|
||||
callback.init(id, index);
|
||||
plugin.start();
|
||||
streamPlugins.add(plugin);
|
||||
duplexPlugins.add(plugin);
|
||||
} catch(ClassCastException e) {
|
||||
if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
|
||||
continue;
|
||||
@@ -160,17 +160,17 @@ class PluginManagerImpl implements PluginManager {
|
||||
}
|
||||
// Start the poller
|
||||
List<Plugin> plugins = new ArrayList<Plugin>();
|
||||
plugins.addAll(batchPlugins);
|
||||
plugins.addAll(streamPlugins);
|
||||
plugins.addAll(simplexPlugins);
|
||||
plugins.addAll(duplexPlugins);
|
||||
poller.start(Collections.unmodifiableList(plugins));
|
||||
// Return the number of plugins successfully started
|
||||
return batchPlugins.size() + streamPlugins.size();
|
||||
return simplexPlugins.size() + duplexPlugins.size();
|
||||
}
|
||||
|
||||
public synchronized int stop() {
|
||||
int stopped = 0;
|
||||
// Stop the batch plugins
|
||||
for(BatchPlugin plugin : batchPlugins) {
|
||||
// Stop the simplex plugins
|
||||
for(SimplexPlugin plugin : simplexPlugins) {
|
||||
try {
|
||||
plugin.stop();
|
||||
stopped++;
|
||||
@@ -178,9 +178,9 @@ class PluginManagerImpl implements PluginManager {
|
||||
if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
|
||||
}
|
||||
}
|
||||
batchPlugins.clear();
|
||||
// Stop the stream plugins
|
||||
for(StreamPlugin plugin : streamPlugins) {
|
||||
simplexPlugins.clear();
|
||||
// Stop the duplex plugins
|
||||
for(DuplexPlugin plugin : duplexPlugins) {
|
||||
try {
|
||||
plugin.stop();
|
||||
stopped++;
|
||||
@@ -188,7 +188,7 @@ class PluginManagerImpl implements PluginManager {
|
||||
if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
|
||||
}
|
||||
}
|
||||
streamPlugins.clear();
|
||||
duplexPlugins.clear();
|
||||
// Stop the poller
|
||||
poller.stop();
|
||||
// Shut down the executor service
|
||||
@@ -289,32 +289,32 @@ class PluginManagerImpl implements PluginManager {
|
||||
}
|
||||
}
|
||||
|
||||
private class BatchCallback extends PluginCallbackImpl
|
||||
implements BatchPluginCallback {
|
||||
private class SimplexCallback extends PluginCallbackImpl
|
||||
implements SimplexPluginCallback {
|
||||
|
||||
public void readerCreated(BatchTransportReader r) {
|
||||
public void readerCreated(SimplexTransportReader r) {
|
||||
assert id != null;
|
||||
dispatcher.dispatchReader(id, r);
|
||||
}
|
||||
|
||||
public void writerCreated(ContactId c, BatchTransportWriter w) {
|
||||
public void writerCreated(ContactId c, SimplexTransportWriter w) {
|
||||
assert index != null;
|
||||
dispatcher.dispatchWriter(c, id, index, w);
|
||||
}
|
||||
}
|
||||
|
||||
private class StreamCallback extends PluginCallbackImpl
|
||||
implements StreamPluginCallback {
|
||||
private class DuplexCallback extends PluginCallbackImpl
|
||||
implements DuplexPluginCallback {
|
||||
|
||||
public void incomingConnectionCreated(StreamTransportConnection s) {
|
||||
public void incomingConnectionCreated(DuplexTransportConnection d) {
|
||||
assert id != null;
|
||||
dispatcher.dispatchIncomingConnection(id, s);
|
||||
dispatcher.dispatchIncomingConnection(id, d);
|
||||
}
|
||||
|
||||
public void outgoingConnectionCreated(ContactId c,
|
||||
StreamTransportConnection s) {
|
||||
DuplexTransportConnection d) {
|
||||
assert index != null;
|
||||
dispatcher.dispatchOutgoingConnection(c, id, index, s);
|
||||
dispatcher.dispatchOutgoingConnection(c, id, index, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,14 +26,14 @@ import javax.microedition.io.StreamConnectionNotifier;
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.TransportProperties;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPlugin;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.util.OsUtils;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
class BluetoothPlugin implements StreamPlugin {
|
||||
class BluetoothPlugin implements DuplexPlugin {
|
||||
|
||||
public static final byte[] TRANSPORT_ID =
|
||||
StringUtils.fromHexString("d99c9313c04417dcf22fc60d12a187ea"
|
||||
@@ -44,7 +44,7 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
Logger.getLogger(BluetoothPlugin.class.getName());
|
||||
|
||||
private final Executor pluginExecutor;
|
||||
private final StreamPluginCallback callback;
|
||||
private final DuplexPluginCallback callback;
|
||||
private final long pollingInterval;
|
||||
private final Object discoveryLock = new Object();
|
||||
private final Object localPropertiesLock = new Object();
|
||||
@@ -56,7 +56,7 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
private StreamConnectionNotifier socket = null; // Locking: this
|
||||
|
||||
BluetoothPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback, long pollingInterval) {
|
||||
DuplexPluginCallback callback, long pollingInterval) {
|
||||
this.pluginExecutor = pluginExecutor;
|
||||
this.callback = callback;
|
||||
this.pollingInterval = pollingInterval;
|
||||
@@ -228,8 +228,8 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
// Don't create redundant connections
|
||||
if(connected.contains(c)) continue;
|
||||
String url = e.getValue();
|
||||
StreamTransportConnection s = connect(c, url);
|
||||
if(s != null) callback.outgoingConnectionCreated(c, s);
|
||||
DuplexTransportConnection d = connect(c, url);
|
||||
if(d != null) callback.outgoingConnectionCreated(c, d);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
private StreamTransportConnection connect(ContactId c, String url) {
|
||||
private DuplexTransportConnection connect(ContactId c, String url) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
}
|
||||
@@ -287,7 +287,7 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
public StreamTransportConnection createConnection(ContactId c) {
|
||||
public DuplexTransportConnection createConnection(ContactId c) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
}
|
||||
@@ -303,15 +303,15 @@ class BluetoothPlugin implements StreamPlugin {
|
||||
return true;
|
||||
}
|
||||
|
||||
public StreamTransportConnection sendInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection sendInvitation(int code, long timeout) {
|
||||
return createInvitationConnection(code, timeout);
|
||||
}
|
||||
|
||||
public StreamTransportConnection acceptInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection acceptInvitation(int code, long timeout) {
|
||||
return createInvitationConnection(code, timeout);
|
||||
}
|
||||
|
||||
private StreamTransportConnection createInvitationConnection(int code,
|
||||
private DuplexTransportConnection createInvitationConnection(int code,
|
||||
long timeout) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
|
||||
@@ -3,16 +3,16 @@ package net.sf.briar.plugins.bluetooth;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPlugin;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.plugins.StreamPluginFactory;
|
||||
import net.sf.briar.api.plugins.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexPluginFactory;
|
||||
|
||||
public class BluetoothPluginFactory implements StreamPluginFactory {
|
||||
public class BluetoothPluginFactory implements DuplexPluginFactory {
|
||||
|
||||
private static final long POLLING_INTERVAL = 3L * 60L * 1000L; // 3 mins
|
||||
|
||||
public StreamPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback) {
|
||||
public DuplexPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
DuplexPluginCallback callback) {
|
||||
return new BluetoothPlugin(pluginExecutor, callback, POLLING_INTERVAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ import java.util.logging.Logger;
|
||||
|
||||
import javax.microedition.io.StreamConnection;
|
||||
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
|
||||
class BluetoothTransportConnection implements StreamTransportConnection {
|
||||
class BluetoothTransportConnection implements DuplexTransportConnection {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(BluetoothTransportConnection.class.getName());
|
||||
|
||||
@@ -11,22 +11,22 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.plugins.BatchPlugin;
|
||||
import net.sf.briar.api.plugins.BatchPluginCallback;
|
||||
import net.sf.briar.api.plugins.SimplexPlugin;
|
||||
import net.sf.briar.api.plugins.SimplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.transport.TransportConstants;
|
||||
|
||||
import org.apache.commons.io.FileSystemUtils;
|
||||
|
||||
abstract class FilePlugin implements BatchPlugin {
|
||||
abstract class FilePlugin implements SimplexPlugin {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(FilePlugin.class.getName());
|
||||
|
||||
protected final Executor pluginExecutor;
|
||||
protected final BatchPluginCallback callback;
|
||||
protected final SimplexPluginCallback callback;
|
||||
|
||||
protected volatile boolean running = false;
|
||||
|
||||
@@ -40,16 +40,16 @@ abstract class FilePlugin implements BatchPlugin {
|
||||
protected abstract void readerFinished(File f);
|
||||
|
||||
protected FilePlugin(@PluginExecutor Executor pluginExecutor,
|
||||
BatchPluginCallback callback) {
|
||||
SimplexPluginCallback callback) {
|
||||
this.pluginExecutor = pluginExecutor;
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
public BatchTransportReader createReader(ContactId c) {
|
||||
public SimplexTransportReader createReader(ContactId c) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public BatchTransportWriter createWriter(ContactId c) {
|
||||
public SimplexTransportWriter createWriter(ContactId c) {
|
||||
if(!running) return null;
|
||||
return createWriter(createConnectionFilename());
|
||||
}
|
||||
@@ -66,7 +66,7 @@ abstract class FilePlugin implements BatchPlugin {
|
||||
return filename.toLowerCase().matches("[a-z]{8}\\.dat");
|
||||
}
|
||||
|
||||
private BatchTransportWriter createWriter(String filename) {
|
||||
private SimplexTransportWriter createWriter(String filename) {
|
||||
if(!running) return null;
|
||||
File dir = chooseOutputDirectory();
|
||||
if(dir == null || !dir.exists() || !dir.isDirectory()) return null;
|
||||
@@ -92,30 +92,30 @@ abstract class FilePlugin implements BatchPlugin {
|
||||
pluginExecutor.execute(new ReaderCreator(f));
|
||||
}
|
||||
|
||||
public BatchTransportWriter sendInvitation(int code, long timeout) {
|
||||
public SimplexTransportWriter sendInvitation(int code, long timeout) {
|
||||
if(!running) return null;
|
||||
return createWriter(createInvitationFilename(code, false));
|
||||
}
|
||||
|
||||
public BatchTransportReader acceptInvitation(int code, long timeout) {
|
||||
public SimplexTransportReader acceptInvitation(int code, long timeout) {
|
||||
if(!running) return null;
|
||||
String filename = createInvitationFilename(code, false);
|
||||
return createInvitationReader(filename, timeout);
|
||||
}
|
||||
|
||||
public BatchTransportWriter sendInvitationResponse(int code, long timeout) {
|
||||
public SimplexTransportWriter sendInvitationResponse(int code, long timeout) {
|
||||
if(!running) return null;
|
||||
return createWriter(createInvitationFilename(code, true));
|
||||
}
|
||||
|
||||
public BatchTransportReader acceptInvitationResponse(int code,
|
||||
public SimplexTransportReader acceptInvitationResponse(int code,
|
||||
long timeout) {
|
||||
if(!running) return null;
|
||||
String filename = createInvitationFilename(code, true);
|
||||
return createInvitationReader(filename, timeout);
|
||||
}
|
||||
|
||||
private BatchTransportReader createInvitationReader(String filename,
|
||||
private SimplexTransportReader createInvitationReader(String filename,
|
||||
long timeout) {
|
||||
Collection<File> files;
|
||||
// FIXME: Avoid making alien calls with a lock held
|
||||
|
||||
@@ -6,9 +6,9 @@ import java.io.InputStream;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
|
||||
class FileTransportReader implements BatchTransportReader {
|
||||
class FileTransportReader implements SimplexTransportReader {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(FileTransportReader.class.getName());
|
||||
|
||||
@@ -6,9 +6,9 @@ import java.io.OutputStream;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
|
||||
class FileTransportWriter implements BatchTransportWriter {
|
||||
class FileTransportWriter implements SimplexTransportWriter {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(FileTransportWriter.class.getName());
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.plugins.BatchPluginCallback;
|
||||
import net.sf.briar.api.plugins.SimplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
@@ -31,7 +31,7 @@ implements RemovableDriveMonitor.Callback {
|
||||
private final RemovableDriveMonitor monitor;
|
||||
|
||||
RemovableDrivePlugin(@PluginExecutor Executor pluginExecutor,
|
||||
BatchPluginCallback callback, RemovableDriveFinder finder,
|
||||
SimplexPluginCallback callback, RemovableDriveFinder finder,
|
||||
RemovableDriveMonitor monitor) {
|
||||
super(pluginExecutor, callback);
|
||||
this.finder = finder;
|
||||
|
||||
@@ -2,18 +2,18 @@ package net.sf.briar.plugins.file;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.plugins.BatchPlugin;
|
||||
import net.sf.briar.api.plugins.BatchPluginCallback;
|
||||
import net.sf.briar.api.plugins.BatchPluginFactory;
|
||||
import net.sf.briar.api.plugins.SimplexPlugin;
|
||||
import net.sf.briar.api.plugins.SimplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.SimplexPluginFactory;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.util.OsUtils;
|
||||
|
||||
public class RemovableDrivePluginFactory implements BatchPluginFactory {
|
||||
public class RemovableDrivePluginFactory implements SimplexPluginFactory {
|
||||
|
||||
private static final long POLLING_INTERVAL = 10L * 1000L; // 10 seconds
|
||||
|
||||
public BatchPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
BatchPluginCallback callback) {
|
||||
public SimplexPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
SimplexPluginCallback callback) {
|
||||
RemovableDriveFinder finder;
|
||||
RemovableDriveMonitor monitor;
|
||||
if(OsUtils.isLinux()) {
|
||||
|
||||
@@ -15,8 +15,8 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.util.ByteUtils;
|
||||
|
||||
/** A socket plugin that supports exchanging invitations over a LAN. */
|
||||
@@ -26,7 +26,7 @@ class LanSocketPlugin extends SimpleSocketPlugin {
|
||||
Logger.getLogger(LanSocketPlugin.class.getName());
|
||||
|
||||
LanSocketPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback, long pollingInterval) {
|
||||
DuplexPluginCallback callback, long pollingInterval) {
|
||||
super(pluginExecutor, callback, pollingInterval);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class LanSocketPlugin extends SimpleSocketPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamTransportConnection sendInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection sendInvitation(int code, long timeout) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ class LanSocketPlugin extends SimpleSocketPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamTransportConnection acceptInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection acceptInvitation(int code, long timeout) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ import java.util.logging.Logger;
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.TransportProperties;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
class SimpleSocketPlugin extends SocketPlugin {
|
||||
@@ -32,7 +32,7 @@ class SimpleSocketPlugin extends SocketPlugin {
|
||||
Logger.getLogger(SimpleSocketPlugin.class.getName());
|
||||
|
||||
SimpleSocketPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback, long pollingInterval) {
|
||||
DuplexPluginCallback callback, long pollingInterval) {
|
||||
super(pluginExecutor, callback, pollingInterval);
|
||||
}
|
||||
|
||||
@@ -138,11 +138,11 @@ class SimpleSocketPlugin extends SocketPlugin {
|
||||
return false;
|
||||
}
|
||||
|
||||
public StreamTransportConnection sendInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection sendInvitation(int code, long timeout) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public StreamTransportConnection acceptInvitation(int code, long timeout) {
|
||||
public DuplexTransportConnection acceptInvitation(int code, long timeout) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,16 +3,16 @@ package net.sf.briar.plugins.socket;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPlugin;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.plugins.StreamPluginFactory;
|
||||
import net.sf.briar.api.plugins.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexPluginFactory;
|
||||
|
||||
public class SimpleSocketPluginFactory implements StreamPluginFactory {
|
||||
public class SimpleSocketPluginFactory implements DuplexPluginFactory {
|
||||
|
||||
private static final long POLLING_INTERVAL = 5L * 60L * 1000L; // 5 mins
|
||||
|
||||
public StreamPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback) {
|
||||
public DuplexPlugin createPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
DuplexPluginCallback callback) {
|
||||
return new SimpleSocketPlugin(pluginExecutor, callback,
|
||||
POLLING_INTERVAL);
|
||||
}
|
||||
|
||||
@@ -13,17 +13,17 @@ import java.util.logging.Logger;
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.TransportProperties;
|
||||
import net.sf.briar.api.plugins.PluginExecutor;
|
||||
import net.sf.briar.api.plugins.StreamPlugin;
|
||||
import net.sf.briar.api.plugins.StreamPluginCallback;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.plugins.DuplexPlugin;
|
||||
import net.sf.briar.api.plugins.DuplexPluginCallback;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
|
||||
abstract class SocketPlugin implements StreamPlugin {
|
||||
abstract class SocketPlugin implements DuplexPlugin {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(SocketPlugin.class.getName());
|
||||
|
||||
protected final Executor pluginExecutor;
|
||||
protected final StreamPluginCallback callback;
|
||||
protected final DuplexPluginCallback callback;
|
||||
|
||||
private final long pollingInterval;
|
||||
|
||||
@@ -38,7 +38,7 @@ abstract class SocketPlugin implements StreamPlugin {
|
||||
protected abstract SocketAddress getRemoteSocketAddress(ContactId c);
|
||||
|
||||
protected SocketPlugin(@PluginExecutor Executor pluginExecutor,
|
||||
StreamPluginCallback callback, long pollingInterval) {
|
||||
DuplexPluginCallback callback, long pollingInterval) {
|
||||
this.pluginExecutor = pluginExecutor;
|
||||
this.callback = callback;
|
||||
this.pollingInterval = pollingInterval;
|
||||
@@ -148,11 +148,11 @@ abstract class SocketPlugin implements StreamPlugin {
|
||||
}
|
||||
|
||||
private void connectAndCallBack(ContactId c) {
|
||||
StreamTransportConnection conn = createConnection(c);
|
||||
if(conn != null) callback.outgoingConnectionCreated(c, conn);
|
||||
DuplexTransportConnection d = createConnection(c);
|
||||
if(d != null) callback.outgoingConnectionCreated(c, d);
|
||||
}
|
||||
|
||||
public StreamTransportConnection createConnection(ContactId c) {
|
||||
public DuplexTransportConnection createConnection(ContactId c) {
|
||||
synchronized(this) {
|
||||
if(!running) return null;
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@ import java.net.Socket;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
|
||||
class SocketTransportConnection implements StreamTransportConnection {
|
||||
class SocketTransportConnection implements DuplexTransportConnection {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(SocketTransportConnection.class.getName());
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package net.sf.briar.protocol.batch;
|
||||
|
||||
import net.sf.briar.api.protocol.batch.BatchConnectionFactory;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
public class ProtocolBatchModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(BatchConnectionFactory.class).to(
|
||||
BatchConnectionFactoryImpl.class).in(Singleton.class);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.sf.briar.protocol.stream;
|
||||
package net.sf.briar.protocol.duplex;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -29,6 +29,7 @@ import net.sf.briar.api.db.event.DatabaseListener;
|
||||
import net.sf.briar.api.db.event.LocalTransportsUpdatedEvent;
|
||||
import net.sf.briar.api.db.event.MessagesAddedEvent;
|
||||
import net.sf.briar.api.db.event.SubscriptionsUpdatedEvent;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.Ack;
|
||||
import net.sf.briar.api.protocol.Batch;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
@@ -49,12 +50,11 @@ import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
|
||||
abstract class StreamConnection implements DatabaseListener {
|
||||
abstract class DuplexConnection implements DatabaseListener {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(StreamConnection.class.getName());
|
||||
Logger.getLogger(DuplexConnection.class.getName());
|
||||
|
||||
private static final Runnable CLOSE = new Runnable() {
|
||||
public void run() {}
|
||||
@@ -68,7 +68,7 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
protected final ProtocolWriterFactory protoWriterFactory;
|
||||
protected final ContactId contactId;
|
||||
protected final TransportId transportId;
|
||||
protected final StreamTransportConnection transport;
|
||||
protected final DuplexTransportConnection transport;
|
||||
|
||||
private final Executor dbExecutor, verificationExecutor;
|
||||
private final AtomicBoolean canSendOffer, disposed;
|
||||
@@ -78,14 +78,14 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
|
||||
private volatile ProtocolWriter writer = null;
|
||||
|
||||
StreamConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
DuplexConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
@VerificationExecutor Executor verificationExecutor,
|
||||
DatabaseComponent db, ConnectionRegistry connRegistry,
|
||||
ConnectionReaderFactory connReaderFactory,
|
||||
ConnectionWriterFactory connWriterFactory,
|
||||
ProtocolReaderFactory protoReaderFactory,
|
||||
ProtocolWriterFactory protoWriterFactory, ContactId contactId,
|
||||
TransportId transportId, StreamTransportConnection transport) {
|
||||
TransportId transportId, DuplexTransportConnection transport) {
|
||||
this.dbExecutor = dbExecutor;
|
||||
this.verificationExecutor = verificationExecutor;
|
||||
this.db = db;
|
||||
@@ -0,0 +1,15 @@
|
||||
package net.sf.briar.protocol.duplex;
|
||||
|
||||
import net.sf.briar.api.protocol.duplex.DuplexConnectionFactory;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
public class DuplexProtocolModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(DuplexConnectionFactory.class).to(
|
||||
StreamConnectionFactoryImpl.class).in(Singleton.class);
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
package net.sf.briar.protocol.stream;
|
||||
package net.sf.briar.protocol.duplex;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DatabaseExecutor;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
@@ -15,14 +16,13 @@ import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
|
||||
class IncomingStreamConnection extends StreamConnection {
|
||||
class IncomingDuplexConnection extends DuplexConnection {
|
||||
|
||||
private final ConnectionContext ctx;
|
||||
private final byte[] tag;
|
||||
|
||||
IncomingStreamConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
IncomingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
@VerificationExecutor Executor verificationExecutor,
|
||||
DatabaseComponent db, ConnectionRegistry connRegistry,
|
||||
ConnectionReaderFactory connReaderFactory,
|
||||
@@ -30,7 +30,7 @@ class IncomingStreamConnection extends StreamConnection {
|
||||
ProtocolReaderFactory protoReaderFactory,
|
||||
ProtocolWriterFactory protoWriterFactory,
|
||||
ConnectionContext ctx, TransportId transportId,
|
||||
StreamTransportConnection transport, byte[] tag) {
|
||||
DuplexTransportConnection transport, byte[] tag) {
|
||||
super(dbExecutor, verificationExecutor, db, connRegistry,
|
||||
connReaderFactory, connWriterFactory, protoReaderFactory,
|
||||
protoWriterFactory, ctx.getContactId(), transportId, transport);
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.sf.briar.protocol.stream;
|
||||
package net.sf.briar.protocol.duplex;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.Executor;
|
||||
@@ -7,6 +7,7 @@ import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DatabaseExecutor;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
@@ -18,15 +19,14 @@ import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
|
||||
class OutgoingStreamConnection extends StreamConnection {
|
||||
class OutgoingDuplexConnection extends DuplexConnection {
|
||||
|
||||
private final TransportIndex transportIndex;
|
||||
|
||||
private ConnectionContext ctx = null; // Locking: this
|
||||
|
||||
OutgoingStreamConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
OutgoingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
@VerificationExecutor Executor verificationExecutor,
|
||||
DatabaseComponent db, ConnectionRegistry connRegistry,
|
||||
ConnectionReaderFactory connReaderFactory,
|
||||
@@ -34,7 +34,7 @@ class OutgoingStreamConnection extends StreamConnection {
|
||||
ProtocolReaderFactory protoReaderFactory,
|
||||
ProtocolWriterFactory protoWriterFactory, ContactId contactId,
|
||||
TransportId transportId, TransportIndex transportIndex,
|
||||
StreamTransportConnection transport) {
|
||||
DuplexTransportConnection transport) {
|
||||
super(dbExecutor, verificationExecutor, db, connRegistry,
|
||||
connReaderFactory, connWriterFactory, protoReaderFactory,
|
||||
protoWriterFactory, contactId, transportId, transport);
|
||||
@@ -1,25 +1,25 @@
|
||||
package net.sf.briar.protocol.stream;
|
||||
package net.sf.briar.protocol.duplex;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DatabaseExecutor;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.protocol.VerificationExecutor;
|
||||
import net.sf.briar.api.protocol.stream.StreamConnectionFactory;
|
||||
import net.sf.briar.api.protocol.duplex.DuplexConnectionFactory;
|
||||
import net.sf.briar.api.transport.ConnectionContext;
|
||||
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
class StreamConnectionFactoryImpl implements StreamConnectionFactory {
|
||||
class StreamConnectionFactoryImpl implements DuplexConnectionFactory {
|
||||
|
||||
private final Executor dbExecutor, verificationExecutor;
|
||||
private final DatabaseComponent db;
|
||||
@@ -48,11 +48,11 @@ class StreamConnectionFactoryImpl implements StreamConnectionFactory {
|
||||
}
|
||||
|
||||
public void createIncomingConnection(ConnectionContext ctx, TransportId t,
|
||||
StreamTransportConnection s, byte[] tag) {
|
||||
final StreamConnection conn = new IncomingStreamConnection(dbExecutor,
|
||||
DuplexTransportConnection d, byte[] tag) {
|
||||
final DuplexConnection conn = new IncomingDuplexConnection(dbExecutor,
|
||||
verificationExecutor, db, connRegistry, connReaderFactory,
|
||||
connWriterFactory, protoReaderFactory, protoWriterFactory,
|
||||
ctx, t, s, tag);
|
||||
ctx, t, d, tag);
|
||||
Runnable write = new Runnable() {
|
||||
public void run() {
|
||||
conn.write();
|
||||
@@ -68,11 +68,11 @@ class StreamConnectionFactoryImpl implements StreamConnectionFactory {
|
||||
}
|
||||
|
||||
public void createOutgoingConnection(ContactId c, TransportId t,
|
||||
TransportIndex i, StreamTransportConnection s) {
|
||||
final StreamConnection conn = new OutgoingStreamConnection(dbExecutor,
|
||||
TransportIndex i, DuplexTransportConnection d) {
|
||||
final DuplexConnection conn = new OutgoingDuplexConnection(dbExecutor,
|
||||
verificationExecutor, db, connRegistry, connReaderFactory,
|
||||
connWriterFactory, protoReaderFactory, protoWriterFactory,
|
||||
c, t, i, s);
|
||||
c, t, i, d);
|
||||
Runnable write = new Runnable() {
|
||||
public void run() {
|
||||
conn.write();
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.sf.briar.protocol.batch;
|
||||
package net.sf.briar.protocol.simplex;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -12,6 +12,7 @@ import net.sf.briar.api.FormatException;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DatabaseExecutor;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
import net.sf.briar.api.protocol.Ack;
|
||||
import net.sf.briar.api.protocol.Batch;
|
||||
import net.sf.briar.api.protocol.ProtocolReader;
|
||||
@@ -21,16 +22,15 @@ import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportUpdate;
|
||||
import net.sf.briar.api.protocol.UnverifiedBatch;
|
||||
import net.sf.briar.api.protocol.VerificationExecutor;
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.transport.ConnectionContext;
|
||||
import net.sf.briar.api.transport.ConnectionReader;
|
||||
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
|
||||
class IncomingBatchConnection {
|
||||
class IncomingSimplexConnection {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(IncomingBatchConnection.class.getName());
|
||||
Logger.getLogger(IncomingSimplexConnection.class.getName());
|
||||
|
||||
private final Executor dbExecutor, verificationExecutor;
|
||||
private final DatabaseComponent db;
|
||||
@@ -39,16 +39,16 @@ class IncomingBatchConnection {
|
||||
private final ProtocolReaderFactory protoFactory;
|
||||
private final ConnectionContext ctx;
|
||||
private final TransportId transportId;
|
||||
private final BatchTransportReader transport;
|
||||
private final SimplexTransportReader transport;
|
||||
private final byte[] tag;
|
||||
private final ContactId contactId;
|
||||
|
||||
IncomingBatchConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
IncomingSimplexConnection(@DatabaseExecutor Executor dbExecutor,
|
||||
@VerificationExecutor Executor verificationExecutor,
|
||||
DatabaseComponent db, ConnectionRegistry connRegistry,
|
||||
ConnectionReaderFactory connFactory,
|
||||
ProtocolReaderFactory protoFactory, ConnectionContext ctx,
|
||||
TransportId transportId, BatchTransportReader transport,
|
||||
TransportId transportId, SimplexTransportReader transport,
|
||||
byte[] tag) {
|
||||
this.dbExecutor = dbExecutor;
|
||||
this.verificationExecutor = verificationExecutor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.sf.briar.protocol.batch;
|
||||
package net.sf.briar.protocol.simplex;
|
||||
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PACKET_LENGTH;
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.logging.Logger;
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
import net.sf.briar.api.protocol.Ack;
|
||||
import net.sf.briar.api.protocol.ProtocolWriter;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
@@ -19,16 +20,15 @@ import net.sf.briar.api.protocol.SubscriptionUpdate;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.protocol.TransportUpdate;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.transport.ConnectionContext;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
|
||||
class OutgoingBatchConnection {
|
||||
class OutgoingSimplexConnection {
|
||||
|
||||
private static final Logger LOG =
|
||||
Logger.getLogger(OutgoingBatchConnection.class.getName());
|
||||
Logger.getLogger(OutgoingSimplexConnection.class.getName());
|
||||
|
||||
private final DatabaseComponent db;
|
||||
private final ConnectionRegistry connRegistry;
|
||||
@@ -37,14 +37,14 @@ class OutgoingBatchConnection {
|
||||
private final ContactId contactId;
|
||||
private final TransportId transportId;
|
||||
private final TransportIndex transportIndex;
|
||||
private final BatchTransportWriter transport;
|
||||
private final SimplexTransportWriter transport;
|
||||
|
||||
OutgoingBatchConnection(DatabaseComponent db,
|
||||
OutgoingSimplexConnection(DatabaseComponent db,
|
||||
ConnectionRegistry connRegistry,
|
||||
ConnectionWriterFactory connFactory,
|
||||
ProtocolWriterFactory protoFactory, ContactId contactId,
|
||||
TransportId transportId, TransportIndex transportIndex,
|
||||
BatchTransportWriter transport) {
|
||||
SimplexTransportWriter transport) {
|
||||
this.db = db;
|
||||
this.connRegistry = connRegistry;
|
||||
this.connFactory = connFactory;
|
||||
@@ -1,18 +1,18 @@
|
||||
package net.sf.briar.protocol.batch;
|
||||
package net.sf.briar.protocol.simplex;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DatabaseExecutor;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.protocol.VerificationExecutor;
|
||||
import net.sf.briar.api.protocol.batch.BatchConnectionFactory;
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.protocol.simplex.SimplexConnectionFactory;
|
||||
import net.sf.briar.api.transport.ConnectionContext;
|
||||
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionRegistry;
|
||||
@@ -20,7 +20,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
class BatchConnectionFactoryImpl implements BatchConnectionFactory {
|
||||
class SimplexConnectionFactoryImpl implements SimplexConnectionFactory {
|
||||
|
||||
private final Executor dbExecutor, verificationExecutor;
|
||||
private final DatabaseComponent db;
|
||||
@@ -31,7 +31,7 @@ class BatchConnectionFactoryImpl implements BatchConnectionFactory {
|
||||
private final ProtocolWriterFactory protoWriterFactory;
|
||||
|
||||
@Inject
|
||||
BatchConnectionFactoryImpl(@DatabaseExecutor Executor dbExecutor,
|
||||
SimplexConnectionFactoryImpl(@DatabaseExecutor Executor dbExecutor,
|
||||
@VerificationExecutor Executor verificationExecutor,
|
||||
DatabaseComponent db, ConnectionRegistry connRegistry,
|
||||
ConnectionReaderFactory connReaderFactory,
|
||||
@@ -49,8 +49,8 @@ class BatchConnectionFactoryImpl implements BatchConnectionFactory {
|
||||
}
|
||||
|
||||
public void createIncomingConnection(ConnectionContext ctx, TransportId t,
|
||||
BatchTransportReader r, byte[] tag) {
|
||||
final IncomingBatchConnection conn = new IncomingBatchConnection(
|
||||
SimplexTransportReader r, byte[] tag) {
|
||||
final IncomingSimplexConnection conn = new IncomingSimplexConnection(
|
||||
dbExecutor, verificationExecutor, db, connRegistry,
|
||||
connReaderFactory, protoReaderFactory, ctx, t, r, tag);
|
||||
Runnable read = new Runnable() {
|
||||
@@ -62,8 +62,8 @@ class BatchConnectionFactoryImpl implements BatchConnectionFactory {
|
||||
}
|
||||
|
||||
public void createOutgoingConnection(ContactId c, TransportId t,
|
||||
TransportIndex i, BatchTransportWriter w) {
|
||||
final OutgoingBatchConnection conn = new OutgoingBatchConnection(db,
|
||||
TransportIndex i, SimplexTransportWriter w) {
|
||||
final OutgoingSimplexConnection conn = new OutgoingSimplexConnection(db,
|
||||
connRegistry, connWriterFactory, protoWriterFactory,
|
||||
c, t, i, w);
|
||||
Runnable write = new Runnable() {
|
||||
@@ -0,0 +1,15 @@
|
||||
package net.sf.briar.protocol.simplex;
|
||||
|
||||
import net.sf.briar.api.protocol.simplex.SimplexConnectionFactory;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
public class SimplexProtocolModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(SimplexConnectionFactory.class).to(
|
||||
SimplexConnectionFactoryImpl.class).in(Singleton.class);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package net.sf.briar.protocol.stream;
|
||||
|
||||
import net.sf.briar.api.protocol.stream.StreamConnectionFactory;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
public class ProtocolStreamModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(StreamConnectionFactory.class).to(
|
||||
StreamConnectionFactoryImpl.class).in(Singleton.class);
|
||||
}
|
||||
}
|
||||
@@ -9,17 +9,17 @@ import java.util.logging.Logger;
|
||||
|
||||
import net.sf.briar.api.ContactId;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.plugins.SimplexTransportReader;
|
||||
import net.sf.briar.api.plugins.SimplexTransportWriter;
|
||||
import net.sf.briar.api.plugins.DuplexTransportConnection;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.protocol.batch.BatchConnectionFactory;
|
||||
import net.sf.briar.api.protocol.stream.StreamConnectionFactory;
|
||||
import net.sf.briar.api.transport.BatchTransportReader;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.protocol.duplex.DuplexConnectionFactory;
|
||||
import net.sf.briar.api.protocol.simplex.SimplexConnectionFactory;
|
||||
import net.sf.briar.api.transport.ConnectionContext;
|
||||
import net.sf.briar.api.transport.ConnectionDispatcher;
|
||||
import net.sf.briar.api.transport.ConnectionRecogniser;
|
||||
import net.sf.briar.api.transport.IncomingConnectionExecutor;
|
||||
import net.sf.briar.api.transport.StreamTransportConnection;
|
||||
import net.sf.briar.api.transport.TransportConstants;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
@@ -31,37 +31,37 @@ class ConnectionDispatcherImpl implements ConnectionDispatcher {
|
||||
|
||||
private final Executor connExecutor;
|
||||
private final ConnectionRecogniser recogniser;
|
||||
private final BatchConnectionFactory batchConnFactory;
|
||||
private final StreamConnectionFactory streamConnFactory;
|
||||
private final SimplexConnectionFactory batchConnFactory;
|
||||
private final DuplexConnectionFactory streamConnFactory;
|
||||
|
||||
@Inject
|
||||
ConnectionDispatcherImpl(@IncomingConnectionExecutor Executor connExecutor,
|
||||
ConnectionRecogniser recogniser,
|
||||
BatchConnectionFactory batchConnFactory,
|
||||
StreamConnectionFactory streamConnFactory) {
|
||||
SimplexConnectionFactory batchConnFactory,
|
||||
DuplexConnectionFactory streamConnFactory) {
|
||||
this.connExecutor = connExecutor;
|
||||
this.recogniser = recogniser;
|
||||
this.batchConnFactory = batchConnFactory;
|
||||
this.streamConnFactory = streamConnFactory;
|
||||
}
|
||||
|
||||
public void dispatchReader(TransportId t, BatchTransportReader r) {
|
||||
connExecutor.execute(new DispatchBatchConnection(t, r));
|
||||
public void dispatchReader(TransportId t, SimplexTransportReader r) {
|
||||
connExecutor.execute(new DispatchSimplexConnection(t, r));
|
||||
}
|
||||
|
||||
public void dispatchWriter(ContactId c, TransportId t, TransportIndex i,
|
||||
BatchTransportWriter w) {
|
||||
SimplexTransportWriter w) {
|
||||
batchConnFactory.createOutgoingConnection(c, t, i, w);
|
||||
}
|
||||
|
||||
public void dispatchIncomingConnection(TransportId t,
|
||||
StreamTransportConnection s) {
|
||||
connExecutor.execute(new DispatchStreamConnection(t, s));
|
||||
DuplexTransportConnection d) {
|
||||
connExecutor.execute(new DispatchDuplexConnection(t, d));
|
||||
}
|
||||
|
||||
public void dispatchOutgoingConnection(ContactId c, TransportId t,
|
||||
TransportIndex i, StreamTransportConnection s) {
|
||||
streamConnFactory.createOutgoingConnection(c, t, i, s);
|
||||
TransportIndex i, DuplexTransportConnection d) {
|
||||
streamConnFactory.createOutgoingConnection(c, t, i, d);
|
||||
}
|
||||
|
||||
private byte[] readTag(InputStream in) throws IOException {
|
||||
@@ -75,13 +75,13 @@ class ConnectionDispatcherImpl implements ConnectionDispatcher {
|
||||
return b;
|
||||
}
|
||||
|
||||
private class DispatchBatchConnection implements Runnable {
|
||||
private class DispatchSimplexConnection implements Runnable {
|
||||
|
||||
private final TransportId transportId;
|
||||
private final BatchTransportReader transport;
|
||||
private final SimplexTransportReader transport;
|
||||
|
||||
private DispatchBatchConnection(TransportId transportId,
|
||||
BatchTransportReader transport) {
|
||||
private DispatchSimplexConnection(TransportId transportId,
|
||||
SimplexTransportReader transport) {
|
||||
this.transportId = transportId;
|
||||
this.transport = transport;
|
||||
}
|
||||
@@ -104,13 +104,13 @@ class ConnectionDispatcherImpl implements ConnectionDispatcher {
|
||||
}
|
||||
}
|
||||
|
||||
private class DispatchStreamConnection implements Runnable {
|
||||
private class DispatchDuplexConnection implements Runnable {
|
||||
|
||||
private final TransportId transportId;
|
||||
private final StreamTransportConnection transport;
|
||||
private final DuplexTransportConnection transport;
|
||||
|
||||
private DispatchStreamConnection(TransportId transportId,
|
||||
StreamTransportConnection transport) {
|
||||
private DispatchDuplexConnection(TransportId transportId,
|
||||
DuplexTransportConnection transport) {
|
||||
this.transportId = transportId;
|
||||
this.transport = transport;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user