summaryrefslogtreecommitdiff
path: root/sources/events
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-29 13:55:34 +0000
committerPaul Buetow <paul@buetow.org>2008-05-29 13:55:34 +0000
commitb8f2687296ad47626412e2a54f4916f7fabc4d6d (patch)
tree247757bbb960ddceb5adefe89df2fd8115107bfc /sources/events
parentcd2024527c84e3e0fd22072a16ac1ff18e6d406d (diff)
Only relevant message delivering works.
Diffstat (limited to 'sources/events')
-rw-r--r--sources/events/VSAbstractEvent.java5
-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.java19
-rw-r--r--sources/events/internal/VSProtocolScheduleEvent.java4
6 files changed, 47 insertions, 21 deletions
diff --git a/sources/events/VSAbstractEvent.java b/sources/events/VSAbstractEvent.java
index 22fb81c..be721cd 100644
--- a/sources/events/VSAbstractEvent.java
+++ b/sources/events/VSAbstractEvent.java
@@ -132,6 +132,9 @@ abstract public class VSAbstractEvent extends VSPrefs {
/**
* On start.
+ *
+ * @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 void onStart();
+ abstract public boolean onStart();
}
diff --git a/sources/events/implementations/VSProcessCrashEvent.java b/sources/events/implementations/VSProcessCrashEvent.java
index 637a2b1..bfb58ff 100644
--- a/sources/events/implementations/VSProcessCrashEvent.java
+++ b/sources/events/implementations/VSProcessCrashEvent.java
@@ -21,10 +21,12 @@ public class VSProcessCrashEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public void onStart() {
+ public boolean 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 25bab7a..6799915 100644
--- a/sources/events/implementations/VSProcessRecoverEvent.java
+++ b/sources/events/implementations/VSProcessRecoverEvent.java
@@ -22,10 +22,12 @@ public class VSProcessRecoverEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public void onStart() {
+ public boolean 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 ff97010..0012775 100644
--- a/sources/events/internal/VSMessageReceiveEvent.java
+++ b/sources/events/internal/VSMessageReceiveEvent.java
@@ -36,31 +36,39 @@ public class VSMessageReceiveEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public void onStart() {
+ public boolean onStart() {
+ boolean returnValue = true;
+ boolean onlyRelevantMessages = process.getPrefs().
+ getBoolean("sim.messages.relevant");
+
String eventName = message.getName();
String protocolClassname = message.getProtocolClassname();
- process.updateLamportTime(message.getLamportTime()+1);
- process.updateVectorTime(message.getVectorTime());
-
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());
+
StringBuffer buffer = new StringBuffer();
buffer.append(prefs.getString("lang.message.recv"));
buffer.append("; ");
buffer.append(message);;
+ logg(buffer.toString());
- if (protocolObj == null) {
- logg(buffer.toString());
-
- } else {
- final VSAbstractProtocol protocol = (VSAbstractProtocol) protocolObj;
- logg(buffer.toString());
- protocol.onMessageRecvStart(message);
- }
+ if (protocolObj != null)
+ ((VSAbstractProtocol) protocolObj).onMessageRecvStart(message);
+ return true;
}
}
diff --git a/sources/events/internal/VSProtocolEvent.java b/sources/events/internal/VSProtocolEvent.java
index d5051f3..8b65c79 100644
--- a/sources/events/internal/VSProtocolEvent.java
+++ b/sources/events/internal/VSProtocolEvent.java
@@ -77,8 +77,9 @@ public class VSProtocolEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public void onStart() {
- VSAbstractProtocol protocol = process.getProtocolObject(protocolClassname);
+ public boolean onStart() {
+ VSAbstractProtocol protocol = process.getProtocolObject(
+ protocolClassname);
if (isClientProtocol)
protocol.isClient(isProtocolActivation);
@@ -87,13 +88,21 @@ public class VSProtocolEvent extends VSAbstractEvent {
protocol.isServer(isProtocolActivation);
StringBuffer buffer = new StringBuffer();
- buffer.append(VSRegisteredEvents.getShortnameByClassname(protocolClassname));
+ buffer.append(VSRegisteredEvents.getShortnameByClassname(
+ protocolClassname));
+
buffer.append(" ");
buffer.append(isClientProtocol
- ? prefs.getString("lang.client") : prefs.getString("lang.server"));
+ ? prefs.getString("lang.client")
+ : prefs.getString("lang.server"));
+
buffer.append(" ");
buffer.append(isProtocolActivation
- ? prefs.getString("lang.activated") : prefs.getString("lang.deactivated"));
+ ? prefs.getString("lang.activated")
+ : prefs.getString("lang.deactivated"));
+
logg(buffer.toString());
+
+ return true;
}
}
diff --git a/sources/events/internal/VSProtocolScheduleEvent.java b/sources/events/internal/VSProtocolScheduleEvent.java
index 9b6e664..9c72124 100644
--- a/sources/events/internal/VSProtocolScheduleEvent.java
+++ b/sources/events/internal/VSProtocolScheduleEvent.java
@@ -76,10 +76,12 @@ public class VSProtocolScheduleEvent extends VSAbstractEvent {
/* (non-Javadoc)
* @see events.VSAbstractEvent#onStart()
*/
- public void onStart() {
+ public boolean onStart() {
if (isServerSchedule)
protocol.onServerScheduleStart();
else
protocol.onClientScheduleStart();
+
+ return true;
}
}