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:
akwizgran
2012-01-11 17:00:47 +00:00
parent 1499e061c1
commit 99caec9448
61 changed files with 505 additions and 515 deletions

View File

@@ -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);
}
}
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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());

View File

@@ -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

View File

@@ -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());

View File

@@ -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());

View File

@@ -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;

View File

@@ -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()) {

View File

@@ -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;
}

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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() {

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}