From 2b4c9a57ba522cd8dd01dc1f1d2761b66f97e4f2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 31 May 2008 02:24:26 +0000 Subject: more elegant way to remove not relevantmessages. --- sources/events/internal/VSMessageReceiveEvent.java | 32 +++++++++++++++------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'sources/events/internal/VSMessageReceiveEvent.java') 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; } -- cgit v1.2.3