summaryrefslogtreecommitdiff
path: root/sources/protocols/implementations
diff options
context:
space:
mode:
Diffstat (limited to 'sources/protocols/implementations')
-rw-r--r--sources/protocols/implementations/README10
-rw-r--r--sources/protocols/implementations/VSBasicMulticastProtocol.java112
-rw-r--r--sources/protocols/implementations/VSBerkelyTimeProtocol.java229
-rw-r--r--sources/protocols/implementations/VSBroadcastProtocol.java129
-rw-r--r--sources/protocols/implementations/VSDummyProtocol.java124
-rw-r--r--sources/protocols/implementations/VSExternalTimeSyncProtocol.java145
-rw-r--r--sources/protocols/implementations/VSInternalTimeSyncProtocol.java149
-rw-r--r--sources/protocols/implementations/VSOnePhaseCommitProtocol.java174
-rw-r--r--sources/protocols/implementations/VSPingPongProtocol.java136
-rw-r--r--sources/protocols/implementations/VSReliableMulticastProtocol.java168
-rw-r--r--sources/protocols/implementations/VSTwoPhaseCommitProtocol.java224
11 files changed, 0 insertions, 1600 deletions
diff --git a/sources/protocols/implementations/README b/sources/protocols/implementations/README
deleted file mode 100644
index fd8effa..0000000
--- a/sources/protocols/implementations/README
+++ /dev/null
@@ -1,10 +0,0 @@
-How to add a new protocol:
-
-1. Copy the file VSDummyProtocol.java into VSYourOwnNiceProtocol.java
-
-2. Edit VSYourOwnNiceProtocol.java and replace the classname!
-
-3. Edit the initialize method of events.RegisteredEvents.java and add the classname
-of your protocol. E.g.: "protocols.implementations.VSYourOwnNiceProtocol"
-
-
diff --git a/sources/protocols/implementations/VSBasicMulticastProtocol.java b/sources/protocols/implementations/VSBasicMulticastProtocol.java
deleted file mode 100644
index 76b13b5..0000000
--- a/sources/protocols/implementations/VSBasicMulticastProtocol.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSBasicMulticastProtocol, an implementation of the basic multicast
- * protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBasicMulticastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new VSBasicMulticast object.
- */
- public VSBasicMulticastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setBoolean("isMulticast", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isMulticast"))
- log("Multicast erhalten");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSBerkelyTimeProtocol.java b/sources/protocols/implementations/VSBerkelyTimeProtocol.java
deleted file mode 100644
index 1b69b72..0000000
--- a/sources/protocols/implementations/VSBerkelyTimeProtocol.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Vector;
-
-/**
- * The class VSBerkelyTimeProtocol, an implementation of the berkely time
- * protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBerkelyTimeProtocol extends VSAbstractProtocol {
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new berkely time protocol.
- */
- public VSBerkelyTimeProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /** Integer: Process ID, Long: Local time of the process */
- private HashMap<Integer,Long> processTimes = new HashMap<Integer,Long>();
-
- /** Integer: Process ID, Long: Time of receiving the response from the
- * process
- */
- private HashMap<Integer,Long> recvTimes = new HashMap<Integer,Long>();
-
- /** Integer: Process ID, Long: Calculated process times (using the RTT) */
- private HashMap<Integer,Long> realTimesRTT = new HashMap<Integer,Long>();
-
- /** Contains all process IDs of processes which want to justify their
- * time
- */
- private ArrayList<Integer> peers = new ArrayList<Integer>();
-
- /** Time the request/response has started */
- private long requestTime;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
- initVector("pids", vec, "PIDs beteiliger Prozesse");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- //System.out.println("FOOBAR");
- processTimes.clear();
- recvTimes.clear();
- realTimesRTT.clear();
- peers.clear();
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- //System.out.println("FOO");
- peers.addAll(getVector("pids"));
- requestTime = process.getTime();
- VSMessage message = new VSMessage();
- message.setBoolean("isRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a response message,
- e.g. itself */
- if (!recvMessage.getBoolean("isResponse"))
- return;
-
- Integer processID = recvMessage.getIntegerObj("processID");
-
- if (peers.contains(processID))
- peers.remove(processID);
- else
- return; /* Process has been handled already or is not listed */
-
- Long time = new Long(recvMessage.getLong("time"));
-
- processTimes.put(processID, time);
- recvTimes.put(processID, new Long(process.getTime()));
-
- /* All peers have told their times */
- if (peers.size() == 0) {
- long avgTime = calculateAverageTime();
- /* Set the local's process time to the new avg reference time */
- process.setTime(avgTime);
- /* Tell all other processes what to do in order to justify their
- times */
- sendJustifyRequests(avgTime);
- /* Start "clean" next time */
- onServerReset();
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /**
- * Calculate the new average time.
- *
- * @return the long
- */
- private long calculateAverageTime() {
- long sum = 0;
- for (Integer processID : processTimes.keySet()) {
- Long localTime = processTimes.get(processID);
- Long recvTime = recvTimes.get(processID);
- long rtt = recvTime.longValue() - requestTime;
- long realProcessTime = localTime + (long) (rtt / 2);
- realTimesRTT.put(processID, new Long(realProcessTime));
- sum += realProcessTime;
- }
- /* Include the time of the local process */
- sum += process.getTime();
- return (long) sum / (getVector("pids").size() + 1);
- }
-
- /**
- * Sends to all clients a value to justify their local clocks.
- *
- * @param avgTime the avg time
- */
- private void sendJustifyRequests(long avgTime) {
- for (Integer processID : processTimes.keySet()) {
- long realProcessTime = realTimesRTT.get(processID).longValue();
- long diff = avgTime - realProcessTime;
- VSMessage message = new VSMessage();
- message.setBoolean("isJustify", true);
- message.setLong("timeDiff", diff);
- message.setInteger("receiverProcessID", processID);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isRequest")) {
- VSMessage message = new VSMessage();
- message.setInteger("processID", process.getProcessID());
- message.setLong("time", process.getTime());
- message.setBoolean("isResponse", true);
- sendMessage(message);
-
- } else if (recvMessage.getBoolean("isJustify")) {
- /* Check if it's "my" justify message */
- if (recvMessage.getInteger("receiverProcessID") !=
- process.getProcessID())
- return;
-
- long timeDiff = recvMessage.getLong("timeDiff");
- //long recvTime = process.getTime();
- long newTime = process.getTime() + timeDiff;
- log("Neue Zeit: " + newTime);
-
- process.setTime(newTime);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSBroadcastProtocol.java b/sources/protocols/implementations/VSBroadcastProtocol.java
deleted file mode 100644
index 0ae8fae..0000000
--- a/sources/protocols/implementations/VSBroadcastProtocol.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSBroadcastProtocol, an implementation of the broadcast
- * sturm protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBroadcastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The sent messages. */
- private ArrayList<Integer> sentMessages;
-
- /** The broadcast count. */
- private static int broadcastCount;
-
- /**
- * Instantiates a new broadcast sturm protocol.
- */
- public VSBroadcastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- sentMessages = new ArrayList<Integer>();
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setInteger("Broadcast", broadcastCount++);
- sentMessages.add(message.getIntegerObj("Broadcast"));
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- onServerRecv(recvMessage);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- sentMessages.clear();
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!sentMessages.contains(recvMessage.getIntegerObj("Broadcast"))) {
- VSMessage message = new VSMessage();
- message.setInteger("Broadcast",
- recvMessage.getInteger("Broadcast"));
- sentMessages.add(message.getIntegerObj("Broadcast"));
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSDummyProtocol.java b/sources/protocols/implementations/VSDummyProtocol.java
deleted file mode 100644
index b06e256..0000000
--- a/sources/protocols/implementations/VSDummyProtocol.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSDummyProtocol, can be used as a template in order to create
- * own protocols.
- *
- * @author Paul C. Buetow
- */
-public class VSDummyProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new dummy protocol object.
- */
- public VSDummyProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- log("onClientReset()");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- log("onClientStart()");
-
- VSMessage message = new VSMessage();
- message.setString("Greeting", "Hello World!");
- message.setInteger("A number", 1);
- message.setBoolean("A boolean", true);
- message.setFloat("A float", 1.2f);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- log("onClientRecv("+recvMessage+")");
-
- String s = recvMessage.getString("Greeting");
- int n = recvMessage.getInteger("A number");
- boolean b = recvMessage.getBoolean("A boolean");
- float f = recvMessage.getFloat("A float");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- log("onClientReset()");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- log("onServerRecv("+recvMessage+")");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString() + "; Dummy Test";
- }
-}
diff --git a/sources/protocols/implementations/VSExternalTimeSyncProtocol.java b/sources/protocols/implementations/VSExternalTimeSyncProtocol.java
deleted file mode 100644
index 3bb5eb9..0000000
--- a/sources/protocols/implementations/VSExternalTimeSyncProtocol.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSExternalTimeSyncProtocol, an implementation of the external
- * time synchronisation protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSExternalTimeSyncProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The request time. */
- private long requestTime;
-
- /** The server is waiting for response, if true. */
- private boolean waitingForResponse;
-
- /**
- * Instantiates a new external time sync protocol object.
- */
- public VSExternalTimeSyncProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- requestTime = process.getTime();
- waitingForResponse = true;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setBoolean("isClientRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("isServerResponse"))
- return;
-
- if (waitingForResponse)
- waitingForResponse = false;
- else
- return;
-
- long recvTime = process.getTime();
- long roundTripTime = recvTime - requestTime;
- long serverTime = recvMessage.getLong("time");
- long newTime = serverTime + (long) (roundTripTime / 2);
-
- log("Server Zeit: " + serverTime + "; RTT: " + roundTripTime +
- "; Alte Zeit: " + recvTime + "; Neue Zeit: " + newTime +
- "; Offset: " + (newTime - recvTime));
- process.setTime(newTime);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("isClientRequest"))
- return;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setLong("time", process.getTime());
- message.setBoolean("isServerResponse", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSInternalTimeSyncProtocol.java b/sources/protocols/implementations/VSInternalTimeSyncProtocol.java
deleted file mode 100644
index c52b0ed..0000000
--- a/sources/protocols/implementations/VSInternalTimeSyncProtocol.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSInternalTimeSyncProtocol, an implementation of the internal
- * time synchronisation protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSInternalTimeSyncProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The waiting for response. */
- private boolean waitingForResponse;
-
- /**
- * Instantiates a new internal time sync protocol.
- */
- public VSInternalTimeSyncProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- initLong("t_min", 2000, "Max. Übetragungszeit", "ms");
- initLong("t_max", 500, "Min. Übertragungszeit", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- waitingForResponse = true;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setBoolean("isClientRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a response message,
- e.g. itself */
- if (!recvMessage.getBoolean("isServerResponse"))
- return;
-
- if (waitingForResponse)
- waitingForResponse = false;
- else
- return;
-
- long tMax = getLong("t_max");
- long tMin = getLong("t_min");
- long serverTime = recvMessage.getLong("time");
- long newTime = serverTime + (long) ((tMax + tMin) / 2 );
-
- log("Server Zeit: " + serverTime + "; (t_min,t_max): (" + tMin +
- "," + tMax + "); Alte Zeit: " + process.getTime() +
- "; Neue Zeit: " + newTime + "; Offset: " +
- (process.getTime() - newTime));
-
- process.setTime(newTime);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a request message,
- e.g. itself */
- if (!recvMessage.getBoolean("isClientRequest"))
- return;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setLong("time", process.getTime());
- message.setBoolean("isServerResponse", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSOnePhaseCommitProtocol.java b/sources/protocols/implementations/VSOnePhaseCommitProtocol.java
deleted file mode 100644
index feb4dd5..0000000
--- a/sources/protocols/implementations/VSOnePhaseCommitProtocol.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSOnePhaseCommitProtocol, an implementation of the one phase
- * commit protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSOnePhaseCommitProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* Server variables */
- private boolean ackSent;
-
- /**
- * Instantiates a one phase commit protocol.
- */
- public VSOnePhaseCommitProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- /* Can be changed via GUI variables editor of each process */
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
-
- initVector("pids", vec, "PIDs beteiligter Prozesse");
- initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- if (pids != null) {
- pids.clear();
- pids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- if (pids == null) {
- pids = new ArrayList<Integer>();
- pids.addAll(getVector("pids"));
- }
-
- if (pids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("wantAck", true);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (pids.size() == 0)
- return;
-
- if (recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (pids.contains(pid))
- pids.remove(pid);
- else
- return;
-
- log("ACK von Prozess " + pid + " erhalten!");
-
- if (pids.size() == 0) {
- log("ACKs von allen beteiligten Prozessen erhalten! " +
- "Festgeschrieben!");
-
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- onServerStart();
- }
-
-
- /* Client variables, coordinator */
- private ArrayList<Integer> pids;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- ackSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (ackSent)
- return;
-
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
- ackSent = true;
- log("Festgeschrieben");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSPingPongProtocol.java b/sources/protocols/implementations/VSPingPongProtocol.java
deleted file mode 100644
index c9d763b..0000000
--- a/sources/protocols/implementations/VSPingPongProtocol.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSPingPongProtocol, an implementation of the ping pong protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSPingPongProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The client counter. */
- private int clientCounter;
-
- /** The server counter. */
- private int serverCounter;
-
- /**
- * Instantiates a new ping pong protocol.
- */
- public VSPingPongProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- clientCounter = 0;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setBoolean("fromClient", true);
- message.setInteger("counter", ++clientCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("fromServer"))
- return;
-
- super.log("message: " + recvMessage.getInteger("counter"));
-
- VSMessage message = new VSMessage();
- message.setBoolean("fromClient", true);
- message.setInteger("counter", ++clientCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- serverCounter = 0;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("fromClient"))
- return;
-
- super.log("message: " + recvMessage.getInteger("counter"));
-
- VSMessage message = new VSMessage();
- message.setBoolean("fromServer", true);
- message.setInteger("counter", ++serverCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString() + "; Neue Nachricht da hinter";
- }
-}
diff --git a/sources/protocols/implementations/VSReliableMulticastProtocol.java b/sources/protocols/implementations/VSReliableMulticastProtocol.java
deleted file mode 100644
index 57b943c..0000000
--- a/sources/protocols/implementations/VSReliableMulticastProtocol.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSReliableMulticastProtocol, an implementation of the reliable
- * multicast protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSReliableMulticastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 2L;
-
- /**
- * Instantiates a two phase commit protocol object.
- */
- public VSReliableMulticastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /** PIDs of all processes which still have to send an ACK */
- private ArrayList<Integer> pids;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
-
- super.initVector("pids", vec, "PIDs beteiligter Prozesse");
- super.initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- if (pids != null) {
- pids.clear();
- pids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- if (pids == null) {
- pids = new ArrayList<Integer>();
- pids.addAll(getVector("pids"));
- }
-
- if (pids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onClientSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isMulticast", true);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (pids.size() != 0 && recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
-
- if (pids.contains(pid))
- pids.remove(pid);
- else
- return;
-
- log("ACK von Prozess " + pid + " erhalten!");
-
- if (pids.size() == 0) {
- log("ACKs von allen beteiligten Prozessen " +
- "erhalten!");
-
- /* Remove the active schedule which has been created in the
- onClientStart method */
- removeSchedules();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- onClientStart();
- }
-
- /** True if ACK has been sent already */
- private boolean ackSent;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- ackSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isMulticast")) {
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
-
- if (ackSent) {
- log("ACK erneut versendet");
-
- } else {
- log("ACK versendet");
- ackSent = true;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-}
diff --git a/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java b/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java
deleted file mode 100644
index 2a0a4f2..0000000
--- a/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSTwoPhaseCommitProtocol, an implementation of the two phase
- * commit protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSTwoPhaseCommitProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a two phase commit protocol object.
- */
- public VSTwoPhaseCommitProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /** PIDs of all processes which still have to vote */
- private ArrayList<Integer> votePids;
-
- /** PIDs of all processes which have to acknowledge that they recv the
- * global vote result
- */
- private ArrayList<Integer> ackPids;
-
- /** The gloal vote result */
- private boolean voteResult;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(2);
- vec.add(3);
-
- initVector("pids", vec, "PIDs beteiligter Prozesse");
- initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- if (votePids != null) {
- voteResult = true;
- votePids.clear();
- votePids.addAll(getVector("pids"));
- ackPids.clear();
- ackPids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- if (votePids == null) {
- voteResult = true;
- votePids = new ArrayList<Integer>();
- votePids.addAll(getVector("pids"));
- ackPids = new ArrayList<Integer>();
- ackPids.addAll(getVector("pids"));
- }
-
- if (votePids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("wantVote", true);
- sendMessage(message);
-
- } else if (ackPids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isVoteResult", true);
- message.setBoolean("voteResult", voteResult);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (votePids.size() != 0 && recvMessage.getBoolean("isVote")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (votePids.contains(pid))
- votePids.remove(pid);
- else
- return;
-
- boolean vote = recvMessage.getBoolean("vote");
- log("Abstimmung von Prozess " + pid +
- " erhalten! Ergebnis: " + vote);
-
- if (!vote)
- voteResult = false;
-
- if (votePids.size() == 0) {
- log("Abstimmungen von allen beteiligten Prozessen " +
- "erhalten! Globales Ergebnis: " + voteResult);
-
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- /* Create a new schedule and send the vote result */
- onServerStart();
- }
-
- } else if (ackPids.size() != 0 && recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (ackPids.contains(pid))
- ackPids.remove(pid);
- else
- return;
-
- if (ackPids.size() == 0) {
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- log("Alle Teilnehmer haben die Abstimmung erhalten");
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- onServerStart();
- }
-
- /* Server variables */
- private boolean voteSent;
- private boolean myVote;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- initInteger("ackProb", 50, "Festschreibw'keit", 0, 100, "%");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- voteSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("wantVote")) {
- if (!voteSent) {
- voteSent = true;
- myVote = process.getRandomPercentage() <= getInteger("ackProb");
- }
-
- VSMessage message = new VSMessage();
- message.setBoolean("isVote", true);
- message.setBoolean("vote", myVote);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
-
- log("Abstimmung " + myVote + " versendet");
-
- } else if (recvMessage.getBoolean("isVoteResult")) {
- boolean voteResult = recvMessage.getBoolean("voteResult");
- log("Globales Abstimmungsergebnis erhalten. Ergebnis: " +
- voteResult);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-}