From 22dfe947fa53e8776ee6ccb45454545e06d77334 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Wed, 7 Dec 2011 21:02:18 +0000 Subject: [PATCH] Minor code cleanup. --- .../stream/IncomingStreamConnection.java | 4 +- .../stream/OutgoingStreamConnection.java | 4 +- .../transport/stream/StreamConnection.java | 49 ++++++++----------- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/components/net/sf/briar/transport/stream/IncomingStreamConnection.java b/components/net/sf/briar/transport/stream/IncomingStreamConnection.java index 36c975eac8..cfdf931ea0 100644 --- a/components/net/sf/briar/transport/stream/IncomingStreamConnection.java +++ b/components/net/sf/briar/transport/stream/IncomingStreamConnection.java @@ -36,13 +36,13 @@ class IncomingStreamConnection extends StreamConnection { @Override protected ConnectionReader createConnectionReader() throws IOException { return connReaderFactory.createConnectionReader( - connection.getInputStream(), ctx.getSecret(), tag); + transport.getInputStream(), ctx.getSecret(), tag); } @Override protected ConnectionWriter createConnectionWriter() throws IOException { return connWriterFactory.createConnectionWriter( - connection.getOutputStream(), Long.MAX_VALUE, ctx.getSecret(), + transport.getOutputStream(), Long.MAX_VALUE, ctx.getSecret(), tag); } } diff --git a/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java b/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java index 89252da5c0..a24bce3400 100644 --- a/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java +++ b/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java @@ -43,7 +43,7 @@ class OutgoingStreamConnection extends StreamConnection { ctx = db.getConnectionContext(contactId, transportIndex); } return connReaderFactory.createConnectionReader( - connection.getInputStream(), ctx.getSecret()); + transport.getInputStream(), ctx.getSecret()); } @Override @@ -54,6 +54,6 @@ class OutgoingStreamConnection extends StreamConnection { ctx = db.getConnectionContext(contactId, transportIndex); } return connWriterFactory.createConnectionWriter( - connection.getOutputStream(), Long.MAX_VALUE, ctx.getSecret()); + transport.getOutputStream(), Long.MAX_VALUE, ctx.getSecret()); } } diff --git a/components/net/sf/briar/transport/stream/StreamConnection.java b/components/net/sf/briar/transport/stream/StreamConnection.java index c638afe3fb..7544d729a6 100644 --- a/components/net/sf/briar/transport/stream/StreamConnection.java +++ b/components/net/sf/briar/transport/stream/StreamConnection.java @@ -50,11 +50,6 @@ abstract class StreamConnection implements DatabaseListener { private static final Logger LOG = Logger.getLogger(StreamConnection.class.getName()); - // A canary indicating that the connection should be closed - private static final Runnable CLOSE_CONNECTION = new Runnable() { - public void run() {} - }; - protected final Executor dbExecutor; protected final DatabaseComponent db; protected final ConnectionReaderFactory connReaderFactory; @@ -62,21 +57,22 @@ abstract class StreamConnection implements DatabaseListener { protected final ProtocolReaderFactory protoReaderFactory; protected final ProtocolWriterFactory protoWriterFactory; protected final ContactId contactId; - protected final StreamTransportConnection connection; + protected final StreamTransportConnection transport; - private final AtomicBoolean canSendOffer = new AtomicBoolean(false); + private final AtomicBoolean canSendOffer; private final LinkedList<Runnable> writerTasks; // Locking: this private Collection<MessageId> offered = null; // Locking: this private volatile ProtocolWriter writer = null; + private volatile boolean closed = false; StreamConnection(@DatabaseExecutor Executor dbExecutor, DatabaseComponent db, ConnectionReaderFactory connReaderFactory, ConnectionWriterFactory connWriterFactory, ProtocolReaderFactory protoReaderFactory, ProtocolWriterFactory protoWriterFactory, ContactId contactId, - StreamTransportConnection connection) { + StreamTransportConnection transport) { this.dbExecutor = dbExecutor; this.db = db; this.connReaderFactory = connReaderFactory; @@ -84,7 +80,8 @@ abstract class StreamConnection implements DatabaseListener { this.protoReaderFactory = protoReaderFactory; this.protoWriterFactory = protoWriterFactory; this.contactId = contactId; - this.connection = connection; + this.transport = transport; + canSendOffer = new AtomicBoolean(false); writerTasks = new LinkedList<Runnable>(); } @@ -99,12 +96,7 @@ abstract class StreamConnection implements DatabaseListener { dbExecutor.execute(new GenerateAcks()); } else if(e instanceof ContactRemovedEvent) { ContactId c = ((ContactRemovedEvent) e).getContactId(); - if(contactId.equals(c)) { - synchronized(this) { - writerTasks.add(CLOSE_CONNECTION); - notifyAll(); - } - } + if(contactId.equals(c)) closed = true; } else if(e instanceof MessagesAddedEvent) { if(canSendOffer.getAndSet(false)) dbExecutor.execute(new GenerateOffer()); @@ -162,13 +154,13 @@ abstract class StreamConnection implements DatabaseListener { throw new FormatException(); } } - connection.dispose(true); + transport.dispose(true); } catch(DbException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } @@ -198,7 +190,7 @@ abstract class StreamConnection implements DatabaseListener { dbExecutor.execute(new GenerateAcks()); dbExecutor.execute(new GenerateOffer()); // Main loop - while(true) { + while(!closed) { Runnable task = null; synchronized(this) { while(writerTasks.isEmpty()) { @@ -210,16 +202,15 @@ abstract class StreamConnection implements DatabaseListener { } task = writerTasks.poll(); } - if(task == CLOSE_CONNECTION) break; task.run(); } - connection.dispose(true); + transport.dispose(true); } catch(DbException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } @@ -299,7 +290,7 @@ abstract class StreamConnection implements DatabaseListener { writer.writeRequest(request); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } @@ -394,7 +385,7 @@ abstract class StreamConnection implements DatabaseListener { writer.writeAck(ack); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } @@ -453,7 +444,7 @@ abstract class StreamConnection implements DatabaseListener { } } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } @@ -499,7 +490,7 @@ abstract class StreamConnection implements DatabaseListener { writer.writeOffer(offer); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } @@ -537,7 +528,7 @@ abstract class StreamConnection implements DatabaseListener { writer.writeSubscriptionUpdate(update); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } @@ -575,7 +566,7 @@ abstract class StreamConnection implements DatabaseListener { writer.writeTransportUpdate(update); } catch(IOException e) { if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage()); - connection.dispose(false); + transport.dispose(false); } } } -- GitLab