From b8f2687296ad47626412e2a54f4916f7fabc4d6d Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 29 May 2008 13:55:34 +0000 Subject: Only relevant message delivering works. --- sources/events/VSAbstractEvent.java | 5 +++- .../implementations/VSProcessCrashEvent.java | 4 ++- .../implementations/VSProcessRecoverEvent.java | 4 ++- sources/events/internal/VSMessageReceiveEvent.java | 32 ++++++++++++++-------- sources/events/internal/VSProtocolEvent.java | 19 +++++++++---- .../events/internal/VSProtocolScheduleEvent.java | 4 ++- 6 files changed, 47 insertions(+), 21 deletions(-) (limited to 'sources/events') 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; } } -- cgit v1.2.3