summaryrefslogtreecommitdiff
path: root/sources/events
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-31 02:24:26 +0000
committerPaul Buetow <paul@buetow.org>2008-05-31 02:24:26 +0000
commit2b4c9a57ba522cd8dd01dc1f1d2761b66f97e4f2 (patch)
tree97350ff115f7a3751e028c4959256b7a3627c1fe /sources/events
parent5a41d318c3460beaaeed9d44a1aa3c376956f7b2 (diff)
more elegant way to remove not relevantmessages.
Diffstat (limited to 'sources/events')
-rw-r--r--sources/events/VSAbstractEvent.java14
-rw-r--r--sources/events/implementations/VSProcessCrashEvent.java4
-rw-r--r--sources/events/implementations/VSProcessRecoverEvent.java4
-rw-r--r--sources/events/internal/VSMessageReceiveEvent.java32
-rw-r--r--sources/events/internal/VSProtocolEvent.java4
-rw-r--r--sources/events/internal/VSProtocolScheduleEvent.java4
6 files changed, 32 insertions, 30 deletions
diff --git a/sources/events/VSAbstractEvent.java b/sources/events/VSAbstractEvent.java
index 146c428..15b742f 100644
--- a/sources/events/VSAbstractEvent.java
+++ b/sources/events/VSAbstractEvent.java
@@ -55,10 +55,11 @@ abstract public class VSAbstractEvent extends VSPrefs {
* @param process the process
*/
public void init(VSProcess process) {
- this.process = process;
- this.prefs = process.getPrefs();
-
- init();
+ if (this.process == null) {
+ this.process = process;
+ this.prefs = process.getPrefs();
+ init();
+ }
}
/**
@@ -157,9 +158,6 @@ abstract public class VSAbstractEvent extends VSPrefs {
/**
* Every event can get started. This method get's executed if the event
* takes place.
- *
- * @return false, if a message has been delivered but is not relevant and
- * can get removed from the simulator canvas paint area. true otherwise.
*/
- abstract public boolean onStart();
+ abstract public void onStart();
}
diff --git a/sources/events/implementations/VSProcessCrashEvent.java b/sources/events/implementations/VSProcessCrashEvent.java
index 4a49942..c281500 100644
--- a/sources/events/implementations/VSProcessCrashEvent.java
+++ b/sources/events/implementations/VSProcessCrashEvent.java
@@ -44,12 +44,10 @@ public class VSProcessCrashEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public boolean onStart() {
+ public void onStart() {
if (!process.isCrashed()) {
process.isCrashed(true);
logg(prefs.getString("lang.crashed"));
}
-
- return true;
}
}
diff --git a/sources/events/implementations/VSProcessRecoverEvent.java b/sources/events/implementations/VSProcessRecoverEvent.java
index 0c0ddb9..43479cf 100644
--- a/sources/events/implementations/VSProcessRecoverEvent.java
+++ b/sources/events/implementations/VSProcessRecoverEvent.java
@@ -45,12 +45,10 @@ public class VSProcessRecoverEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public boolean onStart() {
+ public void onStart() {
if (process.isCrashed()) {
process.isCrashed(false);
logg(prefs.getString("lang.recovered"));
}
-
- return true;
}
}
diff --git a/sources/events/internal/VSMessageReceiveEvent.java b/sources/events/internal/VSMessageReceiveEvent.java
index d53d019..0cffa86 100644
--- a/sources/events/internal/VSMessageReceiveEvent.java
+++ b/sources/events/internal/VSMessageReceiveEvent.java
@@ -59,27 +59,21 @@ public class VSMessageReceiveEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public boolean onStart() {
- boolean returnValue = true;
+ public void onStart() {
boolean onlyRelevantMessages = process.getPrefs().getBoolean(
"sim.messages.relevant");
String eventName = message.getName();
String protocolClassname = message.getProtocolClassname();
+ if (onlyRelevantMessages && !isRelevantMessage())
+ return;
+
Object protocolObj = null;
if (process.objectExists(protocolClassname))
protocolObj = process.getObject(protocolClassname);
- if (onlyRelevantMessages) {
- if (protocolObj == null)
- return false;
-
- if (!((VSAbstractProtocol) protocolObj).isRelevantMessage(message))
- return false;
- }
-
process.updateLamportTime(message.getLamportTime()+1);
process.updateVectorTime(message.getVectorTime());
@@ -91,6 +85,24 @@ public class VSMessageReceiveEvent extends VSAbstractEvent {
if (protocolObj != null)
((VSAbstractProtocol) protocolObj).onMessageRecvStart(message);
+ }
+
+ /**
+ * Checks if the message delivering is relevant.
+ *
+ * @return true, if relevant
+ */
+ public boolean isRelevantMessage() {
+ String protocolClassname = message.getProtocolClassname();
+ Object protocolObj = null;
+
+ if (process.objectExists(protocolClassname))
+ protocolObj = process.getObject(protocolClassname);
+ else
+ return false;
+
+ if (!((VSAbstractProtocol) protocolObj).isRelevantMessage(message))
+ return false;
return true;
}
diff --git a/sources/events/internal/VSProtocolEvent.java b/sources/events/internal/VSProtocolEvent.java
index d3efcb2..cfb1e35 100644
--- a/sources/events/internal/VSProtocolEvent.java
+++ b/sources/events/internal/VSProtocolEvent.java
@@ -107,7 +107,7 @@ public class VSProtocolEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public boolean onStart() {
+ public void onStart() {
VSAbstractProtocol protocol =
process.getProtocolObject(protocolClassname);
@@ -131,7 +131,5 @@ public class VSProtocolEvent extends VSAbstractEvent {
: prefs.getString("lang.deactivated"));
logg(buffer.toString());
-
- return true;
}
}
diff --git a/sources/events/internal/VSProtocolScheduleEvent.java b/sources/events/internal/VSProtocolScheduleEvent.java
index 3bbac19..912b552 100644
--- a/sources/events/internal/VSProtocolScheduleEvent.java
+++ b/sources/events/internal/VSProtocolScheduleEvent.java
@@ -104,12 +104,10 @@ public class VSProtocolScheduleEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public boolean onStart() {
+ public void onStart() {
if (isServerSchedule)
protocol.onServerScheduleStart();
else
protocol.onClientScheduleStart();
-
- return true;
}
}