summaryrefslogtreecommitdiff
path: root/sources/events/VSRegisteredEvents.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-18 19:29:30 +0000
committerPaul Buetow <paul@buetow.org>2008-05-18 19:29:30 +0000
commit2d45de18df35f6d3ba4ca0b86ec1188e49637413 (patch)
tree6c84c8cd14a89a6dabeada811c6477d1e5459767 /sources/events/VSRegisteredEvents.java
parentc46ed2242876bfb267ed0b6823c8a3e99ac62dd6 (diff)
The TaskManager works partly.
Diffstat (limited to 'sources/events/VSRegisteredEvents.java')
-rw-r--r--sources/events/VSRegisteredEvents.java110
1 files changed, 110 insertions, 0 deletions
diff --git a/sources/events/VSRegisteredEvents.java b/sources/events/VSRegisteredEvents.java
index 38676ca..5f73fea 100644
--- a/sources/events/VSRegisteredEvents.java
+++ b/sources/events/VSRegisteredEvents.java
@@ -7,4 +7,114 @@ import core.*;
import utils.*;
public final class VSRegisteredEvents {
+ private static HashMap<String,String> eventClassnames;
+ private static HashMap<String,String> eventShortnames;
+ private static HashMap<String,String> eventNames;
+ private static VSPrefs prefs;
+
+ public static void init(VSPrefs prefs_) {
+ prefs = prefs_;
+ eventNames = new HashMap<String, String>();
+ eventShortnames = new HashMap<String, String>();
+ eventClassnames = new HashMap<String, String>();
+
+ registerEvent("events.implementations.ProcessCrashEvent", "Prozessabsturz", null);
+ registerEvent("events.implementations.ProcessRecoverEvent", "Prozesswiederbelebung", null);
+ registerEvent("protocols.implementations.BerkelyTimeProtocol", "Berkeley Algorithmus zur internen Sync.", "Berkeley");
+ registerEvent("protocols.implementations.BroadcastSturmProtocol", "Broadcaststurm", null);
+ registerEvent("protocols.implementations.DummyProtocol", "Beispiel/Dummy", null);
+ registerEvent("protocols.implementations.ExternalTimeSyncProtocol", "Christians Methode zur externen Sync.", "Christians");
+ registerEvent("protocols.implementations.InternalTimeSyncProtocol", "Interne Synchronisation", "Interne Sync.");
+ registerEvent("protocols.implementations.PingPongProtocol", "Ping Pong", null);
+ }
+
+ public static Vector<String> getProtocolNames() {
+ Set<String> set = eventClassnames.keySet();
+ Vector<String> vector = new Vector<String>();
+
+ for (String eventName : set)
+ if (getClassname(eventName).startsWith("protocols"))
+ vector.add(eventName);
+
+ Collections.sort(vector);
+
+ return vector;
+ }
+
+ public static Vector<String> getProtocolClassnames() {
+ Set<String> set = eventNames.keySet();
+ Vector<String> vector = new Vector<String>();
+
+ for (String eventClassname : set)
+ if (eventClassname.startsWith("protocols"))
+ vector.add(eventClassname);
+
+ Collections.sort(vector);
+
+ return vector;
+ }
+
+ public static Vector<String> getNonProtocolNames() {
+ Set<String> set = eventClassnames.keySet();
+ Vector<String> vector = new Vector<String>();
+
+ for (String eventName : set)
+ if (!getClassname(eventName).startsWith("protocols"))
+ vector.add(eventName);
+
+ Collections.sort(vector);
+
+ return vector;
+ }
+
+ public static Vector<String> getNonProtocolClassnames() {
+ Set<String> set = eventNames.keySet();
+ Vector<String> vector = new Vector<String>();
+
+ for (String eventClassname : set)
+ if (!eventClassname.startsWith("protocols"))
+ vector.add(eventClassname);
+
+ Collections.sort(vector);
+
+ return vector;
+ }
+
+ public static String getClassname(String eventName) {
+ return eventClassnames.get(eventName);
+ }
+
+ public static String getName(String eventClassname) {
+ return eventNames.get(eventClassname);
+ }
+
+ public static String getShortname(String eventClassname) {
+ return eventShortnames.get(eventClassname);
+ }
+
+ public static VSEvent createEventInstanceByClassname(String eventClassname, VSProcess process) {
+ return createEventInstanceByName(getName(eventClassname), process);
+ }
+
+ public static VSEvent createEventInstanceByName(String eventName, VSProcess process) {
+ final String eventClassname = eventClassnames.get(eventName);
+ final Object protocolObj = new VSClassLoader().newInstance(eventClassname);
+
+ if (protocolObj instanceof VSEvent) {
+ VSEvent event = (VSEvent) protocolObj;
+ event.init(process);
+ return event;
+ }
+
+ return null;
+ }
+
+ private static void registerEvent(String eventClassname, String eventName, String eventShortname) {
+ if (eventShortname == null)
+ eventShortname = eventName;
+
+ eventNames.put(eventClassname, eventName);
+ eventShortnames.put(eventClassname, eventShortname);
+ eventClassnames.put(eventName, eventClassname);
+ }
}