From 11a6858c46fa7a1f7ae7daf5404e4382093241cd Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Tue, 4 Oct 2011 17:49:18 +0100
Subject: [PATCH] Updated transport plugin API.

---
 .../briar/api/transport/TransportCallback.java   | 16 ++++++++++++++++
 .../transport/batch/BatchTransportCallback.java  |  8 ++------
 .../transport/batch/BatchTransportWriter.java    | 11 ++++++++---
 .../stream/StreamTransportCallback.java          |  8 ++------
 .../batch/TestBatchTransportWriter.java          |  4 ++++
 5 files changed, 32 insertions(+), 15 deletions(-)
 create mode 100644 api/net/sf/briar/api/transport/TransportCallback.java

diff --git a/api/net/sf/briar/api/transport/TransportCallback.java b/api/net/sf/briar/api/transport/TransportCallback.java
new file mode 100644
index 0000000000..b74e2eabed
--- /dev/null
+++ b/api/net/sf/briar/api/transport/TransportCallback.java
@@ -0,0 +1,16 @@
+package net.sf.briar.api.transport;
+
+import java.util.Map;
+
+public interface TransportCallback {
+
+	void setLocalTransports(Map<String, String> transports);
+
+	void setConfig(Map<String, String> config);
+
+	void showMessage(String message);
+
+	boolean showConfirmationMessage(String message);
+
+	int showChoice(String message, String[] choices);
+}
diff --git a/api/net/sf/briar/api/transport/batch/BatchTransportCallback.java b/api/net/sf/briar/api/transport/batch/BatchTransportCallback.java
index 79ef714be1..8ad8b42210 100644
--- a/api/net/sf/briar/api/transport/batch/BatchTransportCallback.java
+++ b/api/net/sf/briar/api/transport/batch/BatchTransportCallback.java
@@ -1,18 +1,14 @@
 package net.sf.briar.api.transport.batch;
 
-import java.util.Map;
+import net.sf.briar.api.transport.TransportCallback;
 
 /**
  * An interface for receiving readers and writers created by a batch-mode
  * transport plugin.
  */
-public interface BatchTransportCallback {
+public interface BatchTransportCallback extends TransportCallback {
 
 	void readerCreated(BatchTransportReader r);
 
 	void writerCreated(BatchTransportWriter w);
-
-	void setLocalTransports(Map<String, String> transports);
-
-	void setConfig(Map<String, String> config);
 }
diff --git a/api/net/sf/briar/api/transport/batch/BatchTransportWriter.java b/api/net/sf/briar/api/transport/batch/BatchTransportWriter.java
index c485b6b235..4ea8763306 100644
--- a/api/net/sf/briar/api/transport/batch/BatchTransportWriter.java
+++ b/api/net/sf/briar/api/transport/batch/BatchTransportWriter.java
@@ -16,9 +16,14 @@ public interface BatchTransportWriter {
 	OutputStream getOutputStream();
 
 	/**
-	 * Closes the writer and disposes of any associated state. This method must
-	 * be called even if the writer is not used, or if an exception is thrown
-	 * while using the writer.
+	 * Finishes writing to the transport. This method should be called after
+	 * flushing and closing the output stream.
+	 */
+	void finish() throws IOException;
+
+	/**
+	 * Disposes of any associated state. This method must be called even if the
+	 * writer is not used, or if an exception is thrown while using the writer.
 	 */
 	void dispose() throws IOException;
 }
diff --git a/api/net/sf/briar/api/transport/stream/StreamTransportCallback.java b/api/net/sf/briar/api/transport/stream/StreamTransportCallback.java
index 3a84fc5eb8..d58d0ecbc5 100644
--- a/api/net/sf/briar/api/transport/stream/StreamTransportCallback.java
+++ b/api/net/sf/briar/api/transport/stream/StreamTransportCallback.java
@@ -1,16 +1,12 @@
 package net.sf.briar.api.transport.stream;
 
-import java.util.Map;
+import net.sf.briar.api.transport.TransportCallback;
 
 /**
  * An interface for receiving connections created by a stream-mode transport
  * plugin.
  */
-public interface StreamTransportCallback {
+public interface StreamTransportCallback extends TransportCallback {
 
 	void connectionCreated(StreamTransportConnection c);
-
-	void setLocalTransports(Map<String, String> transports);
-
-	void setConfig(Map<String, String> config);
 }
diff --git a/test/net/sf/briar/transport/batch/TestBatchTransportWriter.java b/test/net/sf/briar/transport/batch/TestBatchTransportWriter.java
index bd2a352086..eb9f78167c 100644
--- a/test/net/sf/briar/transport/batch/TestBatchTransportWriter.java
+++ b/test/net/sf/briar/transport/batch/TestBatchTransportWriter.java
@@ -23,6 +23,10 @@ class TestBatchTransportWriter implements BatchTransportWriter {
 		return out;
 	}
 
+	public void finish() throws IOException {
+		// Nothing to do
+	}
+
 	public void dispose() throws IOException {
 		// The output stream may have been left open
 		out.close();
-- 
GitLab