diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-29 13:55:34 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-29 13:55:34 +0000 |
| commit | b8f2687296ad47626412e2a54f4916f7fabc4d6d (patch) | |
| tree | 247757bbb960ddceb5adefe89df2fd8115107bfc /sources/protocols/VSAbstractProtocol.java | |
| parent | cd2024527c84e3e0fd22072a16ac1ff18e6d406d (diff) | |
Only relevant message delivering works.
Diffstat (limited to 'sources/protocols/VSAbstractProtocol.java')
| -rw-r--r-- | sources/protocols/VSAbstractProtocol.java | 45 |
1 files changed, 38 insertions, 7 deletions
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 */ @@ -140,6 +146,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. * * @param currentContextIsServer the context. @@ -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) |
