From d4c1ddcc90c1e2e8660598fc36b3772d2bff6816 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 15 May 2008 23:08:33 +0000 Subject: 1 Moved the stuff to trunk! --- sources/protocols/RegisteredProtocols.java | 78 ++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sources/protocols/RegisteredProtocols.java (limited to 'sources/protocols/RegisteredProtocols.java') 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 protocolClassnames; + private static HashMap protocolNames; + private static VSPrefs prefs; + + public static void initialize(VSPrefs prefs_) { + prefs = prefs_; + protocolNames = new HashMap(); + protocolClassnames = new HashMap(); + + registerProtocol("protocols.DummyProtocol"); + registerProtocol("protocols.PingPongProtocol"); + registerProtocol("protocols.ExternalTimeSyncProtocol"); + registerProtocol("protocols.InternalTimeSyncProtocol"); + registerProtocol("protocols.BroadcastSturmProtocol"); + } + + public static Vector getProtocolNames() { + Set set = protocolClassnames.keySet(); + Vector vector = new Vector(); + + 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); + } +} -- cgit v1.2.3