From aabe72bfd7eb0d8aa1cb7aa59a4a91a5167f8adf Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Wed, 12 Oct 2011 17:26:05 +0100
Subject: [PATCH] Plugin factories.

---
 .../briar/api/plugins/BatchPluginFactory.java |  9 +++++
 .../api/plugins/StreamPluginFactory.java      |  9 +++++
 .../bluetooth/BluetoothPluginFactory.java     | 17 ++++++++++
 .../file/RemovableDrivePluginFactory.java     | 33 +++++++++++++++++++
 .../socket/SimpleSocketPluginFactory.java     | 17 ++++++++++
 5 files changed, 85 insertions(+)
 create mode 100644 api/net/sf/briar/api/plugins/BatchPluginFactory.java
 create mode 100644 api/net/sf/briar/api/plugins/StreamPluginFactory.java
 create mode 100644 components/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
 create mode 100644 components/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
 create mode 100644 components/net/sf/briar/plugins/socket/SimpleSocketPluginFactory.java

diff --git a/api/net/sf/briar/api/plugins/BatchPluginFactory.java b/api/net/sf/briar/api/plugins/BatchPluginFactory.java
new file mode 100644
index 0000000000..e8c665b216
--- /dev/null
+++ b/api/net/sf/briar/api/plugins/BatchPluginFactory.java
@@ -0,0 +1,9 @@
+package net.sf.briar.api.plugins;
+
+import java.util.concurrent.Executor;
+
+public interface BatchPluginFactory {
+
+	BatchPlugin createPlugin(Executor executor,
+			BatchPluginCallback callback);
+}
diff --git a/api/net/sf/briar/api/plugins/StreamPluginFactory.java b/api/net/sf/briar/api/plugins/StreamPluginFactory.java
new file mode 100644
index 0000000000..97246ffc5e
--- /dev/null
+++ b/api/net/sf/briar/api/plugins/StreamPluginFactory.java
@@ -0,0 +1,9 @@
+package net.sf.briar.api.plugins;
+
+import java.util.concurrent.Executor;
+
+public interface StreamPluginFactory {
+
+	StreamPlugin createPlugin(Executor executor,
+			StreamPluginCallback callback);
+}
diff --git a/components/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java b/components/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
new file mode 100644
index 0000000000..ed9dfa8657
--- /dev/null
+++ b/components/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
@@ -0,0 +1,17 @@
+package net.sf.briar.plugins.bluetooth;
+
+import java.util.concurrent.Executor;
+
+import net.sf.briar.api.plugins.StreamPluginCallback;
+import net.sf.briar.api.plugins.StreamPlugin;
+import net.sf.briar.api.plugins.StreamPluginFactory;
+
+public class BluetoothPluginFactory implements StreamPluginFactory {
+
+	private static final long POLLING_INTERVAL = 3L * 60L * 1000L; // 3 mins
+
+	public StreamPlugin createPlugin(Executor executor,
+			StreamPluginCallback callback) {
+		return new BluetoothPlugin(executor, callback, POLLING_INTERVAL);
+	}
+}
diff --git a/components/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java b/components/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
new file mode 100644
index 0000000000..f42d322c77
--- /dev/null
+++ b/components/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
@@ -0,0 +1,33 @@
+package net.sf.briar.plugins.file;
+
+import java.util.concurrent.Executor;
+
+import net.sf.briar.api.plugins.BatchPluginCallback;
+import net.sf.briar.api.plugins.BatchPlugin;
+import net.sf.briar.api.plugins.BatchPluginFactory;
+import net.sf.briar.util.OsUtils;
+
+public class RemovableDrivePluginFactory implements BatchPluginFactory {
+
+	private static final long POLLING_INTERVAL = 10L * 1000L; // 10 seconds
+
+	public BatchPlugin createPlugin(Executor executor,
+			BatchPluginCallback callback) {
+		RemovableDriveFinder finder;
+		RemovableDriveMonitor monitor;
+		if(OsUtils.isLinux()) {
+			finder = new LinuxRemovableDriveFinder();
+			monitor = new LinuxRemovableDriveMonitor();
+		} else if(OsUtils.isMac()) {
+			finder = new MacRemovableDriveFinder();
+			monitor = new MacRemovableDriveMonitor();
+		} else if(OsUtils.isWindows()) {
+			finder = new WindowsRemovableDriveFinder();
+			monitor = new PollingRemovableDriveMonitor(finder,
+					POLLING_INTERVAL);
+		} else {
+			return null;
+		}
+		return new RemovableDrivePlugin(executor, callback, finder, monitor);
+	}
+}
diff --git a/components/net/sf/briar/plugins/socket/SimpleSocketPluginFactory.java b/components/net/sf/briar/plugins/socket/SimpleSocketPluginFactory.java
new file mode 100644
index 0000000000..c96de3c196
--- /dev/null
+++ b/components/net/sf/briar/plugins/socket/SimpleSocketPluginFactory.java
@@ -0,0 +1,17 @@
+package net.sf.briar.plugins.socket;
+
+import java.util.concurrent.Executor;
+
+import net.sf.briar.api.plugins.StreamPluginCallback;
+import net.sf.briar.api.plugins.StreamPlugin;
+import net.sf.briar.api.plugins.StreamPluginFactory;
+
+public class SimpleSocketPluginFactory implements StreamPluginFactory {
+
+	private static final long POLLING_INTERVAL = 5L * 60L * 1000L; // 5 mins
+
+	public StreamPlugin createPlugin(Executor executor,
+			StreamPluginCallback callback) {
+		return new SimpleSocketPlugin(executor, callback, POLLING_INTERVAL);
+	}
+}
-- 
GitLab