summaryrefslogtreecommitdiff
path: root/sources/events/internal/VSMessageReceiveEvent.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/events/internal/VSMessageReceiveEvent.java')
-rw-r--r--sources/events/internal/VSMessageReceiveEvent.java32
1 files changed, 22 insertions, 10 deletions
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;
}