From 44f91eeef89cc8e8e2039b243c3be277bca4f2ad Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 17 May 2008 15:04:10 +0000 Subject: Renamed RegisteredProtocols into VSRegisteredProtocols --- sources/protocols/VSRegisteredProtocols.java | 82 ++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sources/protocols/VSRegisteredProtocols.java (limited to 'sources/protocols/VSRegisteredProtocols.java') diff --git a/sources/protocols/VSRegisteredProtocols.java b/sources/protocols/VSRegisteredProtocols.java new file mode 100644 index 0000000..5153a07 --- /dev/null +++ b/sources/protocols/VSRegisteredProtocols.java @@ -0,0 +1,82 @@ +package protocols; + +import java.util.*; + +import prefs.*; +import core.*; +import utils.*; + +public final class VSRegisteredProtocols { + private static HashMap protocolClassnames; + private static HashMap protocolNames; + private static VSPrefs prefs; + + public static void init(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"); + registerProtocol("protocols.BerkelyTimeProtocol"); + } + + 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, VSProcess process) { + final String protocolClassname = protocolClassnames.get(protocolName); + final Object protocolObj = new VSClassLoader().newInstance(protocolClassname); + + if (protocolObj instanceof VSProtocol) { + VSProtocol protocol = (VSProtocol) protocolObj; + protocol.init(process); + return protocol; + } + + 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