diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-15 23:08:33 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-15 23:08:33 +0000 |
| commit | d4c1ddcc90c1e2e8660598fc36b3772d2bff6816 (patch) | |
| tree | 28a0afc255e42f92adbca0d102e785301bc43a58 /sources/protocols/RegisteredProtocols.java | |
| parent | 61599471a5978c1521b9c89c044ac2ce9a88c398 (diff) | |
1 Moved the stuff to trunk!
Diffstat (limited to 'sources/protocols/RegisteredProtocols.java')
| -rw-r--r-- | sources/protocols/RegisteredProtocols.java | 78 |
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); + } +} |
