summaryrefslogtreecommitdiff
path: root/sources/protocols/RegisteredProtocols.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-15 23:08:33 +0000
committerPaul Buetow <paul@buetow.org>2008-05-15 23:08:33 +0000
commitd4c1ddcc90c1e2e8660598fc36b3772d2bff6816 (patch)
tree28a0afc255e42f92adbca0d102e785301bc43a58 /sources/protocols/RegisteredProtocols.java
parent61599471a5978c1521b9c89c044ac2ce9a88c398 (diff)
1 Moved the stuff to trunk!
Diffstat (limited to 'sources/protocols/RegisteredProtocols.java')
-rw-r--r--sources/protocols/RegisteredProtocols.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/sources/protocols/RegisteredProtocols.java b/sources/protocols/RegisteredProtocols.java
new file mode 100644
index 0000000..542d686
--- /dev/null
+++ b/sources/protocols/RegisteredProtocols.java
@@ -0,0 +1,78 @@
+package protocols;
+
+import java.util.*;
+
+import prefs.*;
+import core.*;
+import utils.*;
+
+public final class RegisteredProtocols {
+ private static HashMap<String,String> protocolClassnames;
+ private static HashMap<String,String> protocolNames;
+ private static VSPrefs prefs;
+
+ public static void initialize(VSPrefs prefs_) {
+ prefs = prefs_;
+ protocolNames = new HashMap<String, String>();
+ protocolClassnames = new HashMap<String, String>();
+
+ registerProtocol("protocols.DummyProtocol");
+ registerProtocol("protocols.PingPongProtocol");
+ registerProtocol("protocols.ExternalTimeSyncProtocol");
+ registerProtocol("protocols.InternalTimeSyncProtocol");
+ registerProtocol("protocols.BroadcastSturmProtocol");
+ }
+
+ public static Vector<String> getProtocolNames() {
+ Set<String> set = protocolClassnames.keySet();
+ Vector<String> vector = new Vector<String>();
+
+ for (String protocolName : set)
+ vector.add(protocolName);
+
+ Collections.sort(vector);
+
+ return vector;
+ }
+
+ public static String getProtocolClassname(String protocolName) {
+ return protocolClassnames.get(protocolName);
+ }
+
+ public static String getProtocolName(String protocolClassname) {
+ return protocolNames.get(protocolClassname);
+ }
+
+ public static VSProtocol getProtocolInstanceByName(String protocolName) {
+ final String protocolClassname = protocolClassnames.get(protocolName);
+ final Object protocolObj = new VSClassLoader().newInstance(protocolClassname);
+
+ if (protocolObj instanceof VSProtocol)
+ return (VSProtocol) protocolObj;
+
+ return null;
+ }
+
+ public static void registerProtocol(String protocolClassname) {
+ int index = protocolClassname.lastIndexOf('.');
+
+ if (index < 0) {
+ protocolNames.put(protocolClassname, protocolClassname);
+ protocolClassnames.put(protocolClassname, protocolClassname);
+ return;
+ }
+
+ String protocolName = protocolClassname.substring(index + 1);
+ index = protocolName.lastIndexOf("Protocol");
+
+ if (index < 0 || index != protocolName.length() - 8) {
+ protocolNames.put(protocolClassname, protocolName);
+ protocolClassnames.put(protocolName, protocolClassname);
+ return;
+ }
+
+ protocolName = protocolName.substring(0, index);
+ protocolNames.put(protocolClassname, protocolName);
+ protocolClassnames.put(protocolName, protocolClassname);
+ }
+}