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/protocols/VSAbstractProtocol.java | 45 ++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'sources/protocols/VSAbstractProtocol.java') diff --git a/sources/protocols/VSAbstractProtocol.java b/sources/protocols/VSAbstractProtocol.java index 1cb5281..70277de 100644 --- a/sources/protocols/VSAbstractProtocol.java +++ b/sources/protocols/VSAbstractProtocol.java @@ -51,7 +51,12 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { process.increaseLamportTime(); process.increaseVectorTime(); - message.init(process, getClassname()); + + if (currentContextIsServer) + message.init(process, getClassname(), VSMessage.IS_SERVER_MESSAGE); + else + message.init(process, getClassname(), VSMessage.IS_CLIENT_MESSAGE); + process.sendMessage(message); } @@ -69,7 +74,7 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { /* (non-Javadoc) * @see events.VSAbstractEvent#onStart() */ - public final void onStart() { + public final boolean onStart() { if (hasOnServerStart) { if (isServer) { currentContextIsServer(true); @@ -81,6 +86,8 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { onClientStart(); } } + + return true; } /* (non-Javadoc) @@ -108,7 +115,6 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { } } - /** * Runs a server schedule */ @@ -139,6 +145,31 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { } } + /** + * Check's if its a relevant message. + * + * @param message the message to check + * + * @return true, if it's a relevant meessage. false if the protocol + * is wrong or if the server recv a server message/the client recv a + * client message. Clients should only recv server messages and servers + * should only recv client messages. + */ + public final boolean isRelevantMessage(VSMessage message) { + if (isIncorrectProtocol(message)) + return false; + + if (message.isServerMessage()) { + if (isServer) + return false; + } else { + if (isClient) + return false; + } + + return true; + } + /** * Sets if the current context is server. * @@ -224,7 +255,7 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { serverSchedules.add(scheduleTask); else clientSchedules.add(scheduleTask); - process.getSimulationCanvas().getTaskManager().addTask(scheduleTask); + process.getSimulatorCanvas().getTaskManager().addTask(scheduleTask); } /** @@ -232,10 +263,10 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { */ public final void removeSchedules() { if (currentContextIsServer) { - process.getSimulationCanvas().getTaskManager().removeAllTasks(serverSchedules); + process.getSimulatorCanvas().getTaskManager().removeAllTasks(serverSchedules); serverSchedules.clear(); } else { - process.getSimulationCanvas().getTaskManager().removeAllTasks(clientSchedules); + process.getSimulatorCanvas().getTaskManager().removeAllTasks(clientSchedules); clientSchedules.clear(); } } @@ -303,7 +334,7 @@ abstract public class VSAbstractProtocol extends VSAbstractEvent { if (process == null) return 0; - return process.getSimulationCanvas().getNumProcesses(); + return process.getSimulatorCanvas().getNumProcesses(); } /* (non-Javadoc) -- cgit v1.2.3