summaryrefslogtreecommitdiff
path: root/sources/core
diff options
context:
space:
mode:
Diffstat (limited to 'sources/core')
-rw-r--r--sources/core/VSAbstractProcess.java758
-rw-r--r--sources/core/VSInternalProcess.java456
-rw-r--r--sources/core/VSMessage.java208
-rw-r--r--sources/core/VSMessageStub.java61
-rw-r--r--sources/core/VSTask.java523
-rw-r--r--sources/core/VSTaskManager.java585
-rw-r--r--sources/core/time/VSLamportTime.java76
-rw-r--r--sources/core/time/VSTime.java45
-rw-r--r--sources/core/time/VSVectorTime.java119
9 files changed, 0 insertions, 2831 deletions
diff --git a/sources/core/VSAbstractProcess.java b/sources/core/VSAbstractProcess.java
deleted file mode 100644
index eeff528..0000000
--- a/sources/core/VSAbstractProcess.java
+++ /dev/null
@@ -1,758 +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 core;
-
-import java.awt.*;
-import java.io.*;
-import java.util.*;
-
-import core.time.*;
-//import events.*;
-//import events.implementations.*;
-import prefs.*;
-import protocols.*;
-import serialize.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSAbstractProcess, an object of this class represents a process
- * of a simulator.
- *
- * @author Paul C. Buetow
- */
-public abstract class VSAbstractProcess extends VSSerializablePrefs
- implements VSSerializable {
- /** The data serialization id. */
- protected static final long serialVersionUID = 1L;
-
- /** The protocols to reset if the simulator is over or the reset
- * button has been pressed.
- */
- protected ArrayList<VSAbstractProtocol> protocolsToReset;
-
- /** The crash history. represents all crashes of the process using the
- * global simulator time.
- */
- protected ArrayList<Long> crashHistory;
-
- /** The lamport time history. */
- protected ArrayList<VSLamportTime> lamportTimeHistory;
-
- /** The vector time history. */
- protected ArrayList<VSVectorTime> vectorTimeHistory;
-
- /** The color used if the process has crashed. */
- protected Color crashedColor;;
-
- /** The process' current color. */
- protected Color currentColor;
-
- /** A temp. color. For internal usage. */
- protected Color tmpColor;
-
- /** The loging object. */
- protected VSLogging loging;
-
- /** The simulator's default prefs. */
- protected VSPrefs prefs;
-
- /** The random generator of the process. */
- protected VSRandom random;
-
- /** The simulator canvas. */
- protected VSSimulatorVisualization simulatorVisualization;
-
- /** The random crash task. May be null if there is no such random task. */
- protected VSTask randomCrashTask;
-
- /** The vector time. */
- protected VSVectorTime vectorTime;
-
- /** The tasks of the process. DO ONLY MANIPULATE THIS OBJECT WITHIN THE
- * VSTaskManager CLASS! OTHERWISE THE SYNCHRONIZATION IS WRONG! Use the
- * VSAbstractProcess.getTasks() method to get a reference to this object
- * within the VSTaskManager! */
- protected VSPriorityQueue<VSTask> tasks;
-
- /** The process has crashed. But may be working again. */
- protected boolean hasCrashed;
-
- /** The process has started. But may be paused or crashed.. */
- protected boolean hasStarted;
-
- /** The process is crashed. */
- protected boolean isCrashed;
-
- /** The process is highlighted. */
- protected boolean isHighlighted;
-
- /** The process is paused. */
- protected boolean isPaused;
-
- /** The time has been modified in a task. Needed by the task manager to
- * calculate correct offsets.
- */
- protected boolean timeModified;
-
- /** The clock offset. Used by the task manager and also by the process'
- * clock variance.
- */
- protected double clockOffset;
-
- /** The clock variance. */
- protected float clockVariance;
-
- /** The process id. */
- protected int processID;
-
- /** The process num. It is different to the process id. It represents the
- * array index of there the process is stored at.
- */
- protected int processNum;
-
- /** The global time. */
- protected long globalTime;
-
- /** The lamport time. */
- protected long lamportTime;
-
- /** The local time. */
- protected long localTime;
-
- /** The Constant DEFAULT_INTEGER_VALUE_KEYS.
- * This array contains all Integer prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_INTEGER_VALUE_KEYS[] = {
- "process.prob.crash",
- "message.prob.outage",
- };
-
- /** The Constant DEFAULT_LONG_VALUE_KEYS.
- * This array contains all Long prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_LONG_VALUE_KEYS[] = {
- "message.sendingtime.min",
- "message.sendingtime.max",
- };
-
- /** The Constant DEFAULT_FLOAT_VALUE_KEYS.
- * This array contains all Float prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_FLOAT_VALUE_KEYS[] = {
- "process.clock.variance",
- };
-
- /** The Constant DEFAULT_COLOR_VALUE_KEYS.
- * This array contains all Color prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_COLOR_VALUE_KEYS[] = {
- "col.process.default",
- "col.process.running",
- "col.process.stopped",
- "col.process.highlight",
- "col.process.crashed",
- };
-
- /** The Constant DEFAULT_STRING_VALUE_KEYS.
- * This array contains all String prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_STRING_VALUE_KEYS[] = {
- };
-
- /**
- * Instantiates a new process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- public VSAbstractProcess(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- init(prefs, processNum, simulatorVisualization, loging);
- }
-
- /**
- * Inits a the process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- protected void init(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- /* May be not null if called from deserialization */
- if (this.protocolsToReset == null)
- this.protocolsToReset = new ArrayList<VSAbstractProtocol>();
-
- this.processNum = processNum;
- this.prefs = prefs;
- this.simulatorVisualization = simulatorVisualization;
- this.loging = loging;
-
- processID = simulatorVisualization.processIDCount();
- random = new VSRandom(processID*processNum+processID+processNum);
- tasks = new VSPriorityQueue<VSTask>();
-
- initTimeFormats();
-
- isPaused = true;
-
- /* Create the super.VSPrefs with it's default prefs */
- fillWithDefaults();
-
- /* Make local copys in order to have more performance */
- clockVariance = getFloat("process.clock.variance");
- currentColor = getColor("col.process.default");
- crashedColor = getColor("col.process.crashed");
-
- /* Make additional process settings editable through GUI */
- initLong("process.localtime", localTime,
- prefs.getString("lang.en.process.time.local"), "ms");
-
- createRandomCrashTask_();
- }
-
- /**
- * Inits the time formats. E.g. lamport and vector time stamps.
- */
- protected void initTimeFormats() {
- lamportTime = 0;
- lamportTimeHistory = new ArrayList<VSLamportTime>();
-
- vectorTime = new VSVectorTime(0);
- vectorTimeHistory = new ArrayList<VSVectorTime>();
- crashHistory = new ArrayList<Long>();
-
- final int numProcesses = simulatorVisualization.getNumProcesses();
- for (int i = 0; i < numProcesses; ++i)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Reset time formats. E.g. lamport and vector time stamps.
- */
- protected void resetTimeFormats() {
- lamportTime = 0;
- lamportTimeHistory.clear();
-
- vectorTime = new VSVectorTime(0);
- vectorTimeHistory.clear();
- crashHistory.clear();
-
- final int numProcesses = simulatorVisualization.getNumProcesses();
- for (int i = numProcesses; i > 0; --i)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Creates a random percentage 0..100 using the process' own pseudo
- * random number generator object of the VSRandom class.
- *
- * @return A random percentage 0..100.
- */
- public synchronized int getRandomPercentage() {
- return random.nextInt() % 101;
- }
-
- /**
- * Adds the clock offset. This method is used by the task manager. The
- * clock offset identifies if the local time of the process has changed and
- * how much..
- *
- * @param add the clock offset to add.
- */
- protected synchronized void addClockOffset(long add) {
- this.clockOffset += add;
- }
-
- /**
- * Gets the process id.
- *
- * @return the process id
- */
- public synchronized int getProcessID() {
- return processID;
- }
-
- /**
- * Gets the process num. The num is different to the process id. It
- * represents the array index of there the process is stored at.
- *
- * @return the process num
- */
- public synchronized int getProcessNum() {
- return processNum;
- }
-
- /**
- * Sets the process id.
- *
- * @param processID the new process id
- */
- public synchronized void setProcessID(int processID) {
- this.processID = processID;
- }
-
- /**
- * Gets the process' local time.
- *
- * @return the process' local time
- */
- public synchronized long getTime() {
- return localTime;
- }
-
- /**
- * Sets the process' local time.
- *
- * @param time the new local time of the process.
- */
- public synchronized void setTime(final long time) {
- if (time >= 0)
- this.localTime = time;
- else
- this.localTime = 0;
-
- this.timeModified = true;
- }
-
- /**
- * Checks if the process is crashed.
- *
- * @return true, if is crashed
- */
- public synchronized boolean isCrashed() {
- return isCrashed;
- }
-
- /**
- * Sets if the process is crashed.
- *
- * @param isCrashed true if the process is crashed.
- */
- public synchronized void isCrashed(boolean isCrashed) {
- this.isCrashed = isCrashed;
- crashHistory.add(new Long(globalTime));
- if (!hasCrashed)
- hasCrashed = true;
- }
-
- /**
- * Checks if the process has crashed. The difference to isCrashed is,
- * that the process may be fully functional again after crashing. This
- * method is needed by the simulator canvas in order to see if it should
- * paint 'crashed areas' using the crash history of this process.
- *
- * @return true, if yes
- */
- public synchronized boolean hasCrashed() {
- return hasCrashed;
- }
-
- /**
- * Gets the global time.
- *
- * @return the global time
- */
- public synchronized long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the clock variance.
- *
- * @return the clock variance
- */
- public synchronized float getClockVariance() {
- return clockVariance;
- }
-
- /**
- * Sets the clock variance.
- *
- * @param clockVariance the new clock variance
- */
- public synchronized void setClockVariance(float clockVariance) {
- /* If negative, only allow < 1 prefs */
- if (clockVariance < 0) {
- int part = (int) -clockVariance;
- if (part > 0) {
- this.clockVariance = 0;
- return;
- }
- }
-
- this.clockVariance = clockVariance;
- }
-
- /**
- * Gets the a random crash time.
- *
- * @return the a random crash time. It will be -1 if the process will not
- * crash at all randomly!
- */
- protected long getARandomCrashTime() {
- /* Check if the process will crash or not */
- if (getRandomPercentage() < getInteger("process.prob.crash")) {
- /* Calculate the random crash time! */
- final long crashTime =
- random.nextLong(simulatorVisualization.getUntilTime()+1) %
- simulatorVisualization.getUntilTime();
- return crashTime;
- }
-
- /* No crash */
- return -1;
- }
-
- /**
- * Increases the process' lamport time.
- */
- public synchronized void increaseLamportTime() {
- setLamportTime(getLamportTime()+1);
- }
-
- /**
- * Updates the process' lamport time.
- *
- * @param time the lamport time to use as its update reference.
- */
- public synchronized void updateLamportTime(long time) {
- final long lamportTime = getLamportTime() + 1;
-
- if (time > lamportTime)
- setLamportTime(time);
- else
- setLamportTime(lamportTime);
- }
-
- /**
- * Gets the lamport time.
- *
- * @return the lamport time.
- */
- public synchronized long getLamportTime() {
- return lamportTime;
- }
-
- /**
- * Sets the lamport time.
- *
- * @param lamportTime the new lamport time
- */
- public synchronized void setLamportTime(long lamportTime) {
- this.lamportTime = lamportTime;
- lamportTimeHistory.add(new VSLamportTime(globalTime, lamportTime));
- }
-
- /**
- * Gets the lamport time history as an array.
- *
- * @return the lamport time history array
- */
- public synchronized VSTime[] getLamportTimeArray() {
- final int size = lamportTimeHistory.size();
- final VSTime[] arr = new VSLamportTime[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = (VSTime) lamportTimeHistory.get(i);
-
- return arr;
- }
-
- /**
- * Increases the vector and the lamport time by 1 each if
- * sim.update.vectortime.all/sim.update.lamporttime.all are set
- * to true.
- */
- public void increaseVectorAndLamportTimeIfAll() {
- if (prefs.getBoolean("sim.update.lamporttime.all"))
- increaseLamportTime();
-
- if (prefs.getBoolean("sim.update.vectortime.all"))
- increaseVectorTime();
- }
-
- /**
- * Increases the vector time by 1.
- */
- public synchronized void increaseVectorTime() {
- vectorTime.set(processNum,
- new Long(vectorTime.get(processNum).longValue()+1));
- vectorTime.setGlobalTime(globalTime);
- vectorTimeHistory.add(vectorTime.getCopy());
- }
-
- /**
- * Updates the vector time.
- *
- * @param vectorTimeUpdate the vector time of the other process to use for
- * the update
- */
- public synchronized void updateVectorTime(VSVectorTime vectorTimeUpdate) {
- final int size = vectorTime.size();
-
- for (int i = 0; i < size; ++i) {
- if (i == processNum)
- vectorTime.set(i, new Long(vectorTime.get(i).longValue()+1));
- else if (vectorTimeUpdate.get(i) > vectorTime.get(i))
- vectorTime.set(i, vectorTimeUpdate.get(i));
- }
-
- vectorTime.setGlobalTime(globalTime);
- vectorTimeHistory.add(vectorTime.getCopy());
- }
-
- /**
- * Gets the vector time.
- *
- * @return the vector time
- */
- public synchronized VSVectorTime getVectorTime() {
- return vectorTime;
- }
-
- /**
- * Gets the vector time history as an array.
- *
- * @return the vector time history array
- */
- public synchronized VSTime[] getVectorTimeArray() {
- final int size = vectorTimeHistory.size();
- final VSTime[] arr = new VSTime[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = (VSTime) vectorTimeHistory.get(i);
-
- return arr;
- }
-
- /**
- * Gets the crash history array.
- *
- * @return the crash history array
- */
- public synchronized Long[] getCrashHistoryArray() {
- final int size = crashHistory.size();
- final Long[] arr = new Long[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = crashHistory.get(i);
-
- return arr;
- }
-
- /**
- * Logg a message to the loging area.
- *
- * @param message the message to log
- */
- public void log(String message) {
- loging.log(toString() + "; " + message, globalTime);
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#fillWithDefaults()
- */
- public void fillWithDefaults() {
- prefs.copyIntegers(this, DEFAULT_INTEGER_VALUE_KEYS);
- prefs.copyLongs(this, DEFAULT_LONG_VALUE_KEYS);
- prefs.copyFloats(this, DEFAULT_FLOAT_VALUE_KEYS);
- prefs.copyColors(this, DEFAULT_COLOR_VALUE_KEYS);
- prefs.copyStrings(this, DEFAULT_STRING_VALUE_KEYS);
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#toString()
- */
- public synchronized String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.append(prefs.getString("lang.en.process.id"));
- buffer.append(": ");
- buffer.append(getProcessID());
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.process.time.local"));
- buffer.append(": ");
- buffer.append(VSTools.getTimeString(getTime()));
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.time.lamport"));
- buffer.append(": ");
- buffer.append(lamportTime);
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.time.vector"));
- buffer.append(": ");
- buffer.append(vectorTime);
- return buffer.toString();
- }
-
- /**
- * The extended string representation of the process object.
- *
- * @return the extended string representation
- */
- public synchronized String toStringFull() {
- StringBuffer buffer = new StringBuffer();
- buffer.append(toString());
- buffer.append("; paused: ");
- buffer.append(isPaused);
- buffer.append("; crashed: ");
- buffer.append(isCrashed);
- buffer.append("; crashTask: ");
- buffer.append(randomCrashTask);
- return buffer.toString();
- }
-
- /**
- * Equals. Checks, if both processes have the same process num.
- *
- * @param process the process to compare to
- *
- * @return true, if both processes are the same (same processNum).
- */
- public boolean equals(VSAbstractProcess process) {
- return process.getProcessNum() == processNum;
- }
-
- /**
- * Gets the simulator's default prefs.
- *
- * @return the default prefs
- */
- public VSPrefs getPrefs() {
- return prefs;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Serializing: VSAbstractProcess (num: "
- + processNum
- + "; id: " + processID + ")");
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(processID));
- objectOutputStream.writeObject(new Integer(protocolsToReset.size()));
- for (VSAbstractProtocol protocol : protocolsToReset) {
- objectOutputStream.writeObject(protocol.getClassname());
- protocol.serialize(serialize, objectOutputStream);
- }
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- /* Bugfix, being compatible with old versions */
- super.deleteLong("process.localTime");
-
-
- updateFromPrefs_();
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSAbstractProcess");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- this.processID = ((Integer)
- objectInputStream.readObject()).intValue();
- int numProtocols = ((Integer)
- objectInputStream.readObject()).intValue();
-
- for (int i = 0; i < numProtocols; ++i) {
- String protocolClassname = (String) objectInputStream.readObject();
- VSAbstractProtocol protocol = getProtocolObject_(protocolClassname);
- protocol.deserialize(serialize, objectInputStream);
- }
-
- localTime = 0;
- setLong("process.localtime", localTime);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- serialize.setObject(processNum, "process", this);
- }
-
- /**
- * Sets the current color.
- *
- * @param newColor the new current color
- */
- protected void setCurrentColor(Color newColor) {
- if (isHighlighted)
- tmpColor = newColor;
- else
- currentColor = newColor;
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#updateFromPrefs()
- */
- protected abstract void updateFromPrefs_();
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#createRandomCrashTask()
- */
- protected abstract void createRandomCrashTask_();
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#getProtocolObjekt(java.util.String)
- */
- protected abstract VSAbstractProtocol getProtocolObject_(
- String protocolClassname);
-}
diff --git a/sources/core/VSInternalProcess.java b/sources/core/VSInternalProcess.java
deleted file mode 100644
index 01e23d0..0000000
--- a/sources/core/VSInternalProcess.java
+++ /dev/null
@@ -1,456 +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 core;
-
-import java.awt.*;
-
-import core.time.*;
-import events.*;
-import events.implementations.*;
-import prefs.*;
-import protocols.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSInternalProcess, an object of this class represents a process
- * of a simulator.
- *
- * @author Paul C. Buetow
- */
-public class VSInternalProcess extends VSAbstractProcess {
- /**
- * Instantiates a new process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- public VSInternalProcess(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- super(prefs, processNum, simulatorVisualization, loging);
- }
-
- /**
- * Called from the VSProcessEditor, after finishing editing! This makes
- * sure that the VSInternalProcess object is using the up to date prefs!
- */
- public synchronized void updateFromPrefs() {
- setClockVariance(getFloat("process.clock.variance"));
- setLocalTime(getLong("process.localtime"));
- crashedColor = getColor("col.process.crashed");
- createRandomCrashTask();
- }
-
- /**
- * Called from the VSProcessEditor, before starting editing! This makes
- * sure that the editor edits the up to date prefs of the process!
- */
- public synchronized void updatePrefs() {
- setFloat("process.clock.variance", getClockVariance());
- setLong("process.localtime", getTime());
- }
-
- /**
- * Syncs the process' time. This method is using the clockOffset and
- * clockVariance variables. This method is called repeatedly from the
- * VSSimulatorVisualization in order to update the process' local and global
- * time values.
- *
- * @param globalTime the global time.
- */
- public synchronized void syncTime(final long globalTime) {
- final long currentGlobalTimestep = globalTime - this.globalTime;
- this.globalTime = globalTime;
-
- localTime += currentGlobalTimestep;
- clockOffset += currentGlobalTimestep * (double) clockVariance;
-
- while (clockOffset >= 1) {
- clockOffset -= 1;
- ++localTime;
- }
-
- while (clockOffset <= -1) {
- clockOffset += 1;
- --localTime;
- }
-
- /* We do not want a negative time */
- if (localTime < 0)
- localTime = 0;
- }
-
- /**
- * Highlights the process.
- */
- public synchronized void highlightOn() {
- tmpColor = currentColor;
- currentColor = getColor("col.process.highlight");
- isHighlighted = true;
- }
-
- /**
- * Unhighlights the process.
- */
- public synchronized void highlightOff() {
- currentColor = tmpColor;
- isHighlighted = false;
- }
-
- /**
- * Resets the process.
- */
- public synchronized void reset() {
- isPaused = true;
- isCrashed = false;
- hasCrashed = false;
- localTime = 0;
- globalTime = 0;
- clockOffset = 0;
-
- for (VSAbstractProtocol protocol : protocolsToReset)
- protocol.reset();
-
- setCurrentColor(getColor("col.process.default"));
- resetTimeFormats();
- }
-
- /**
- * Creates the random crash task. The crash task will be created only if
- * the process is not crashed atm. and if
- * VSInternalProcess.getARandomCrashTime() * returns a non-negative value.
- * The random crash task uses the simulaion's global time for its
- * scheduling.
- */
- public synchronized void createRandomCrashTask() {
- if (!isCrashed) {
- VSTaskManager taskManager = simulatorVisualization.getTaskManager();
- long crashTime = getARandomCrashTime();
-
- if (crashTime < 0)
- return;
-
- if (randomCrashTask != null)
- taskManager.removeTask(randomCrashTask);
-
- if (crashTime >= getGlobalTime()) {
- VSAbstractEvent event = new VSProcessCrashEvent();
- randomCrashTask = new VSTask(crashTime, this, event,
- VSTask.GLOBAL);
- taskManager.addTask(randomCrashTask);
-
- } else {
- randomCrashTask = null;
- }
- }
- }
-
- /**
- * Creates a random percentage 0..100 using the process' own pseudo
- * random number generator object of the VSRandom class.
- *
- * @return A random percentage 0..100.
- */
- public synchronized int getRandomPercentage() {
- return random.nextInt() % 101;
- }
-
- /**
- * Adds the clock offset. This method is used by the task manager. The
- * clock offset identifies if the local time of the process has changed and
- * how much..
- *
- * @param add the clock offset to add.
- */
- public synchronized void addClockOffset(long add) {
- this.clockOffset += add;
- }
-
- /**
- * The process' state is 'play'. Called by the simulator canvas.
- */
- public synchronized void play() {
- isPaused = false;
- setCurrentColor(getColor("col.process.running"));
- }
-
- /**
- * The process' state is 'pause'. Called by the simulator canvas.
- */
- public synchronized void pause() {
- isPaused = true;
- setCurrentColor(getColor("col.process.stopped"));
- }
-
- /**
- * The process' state is 'Finish'. Called by the simulator canvas.
- */
- public synchronized void finish() {
- isPaused = true;
- setCurrentColor(getColor("col.process.default"));
- }
-
- /**
- * Gets the current process' color.
- *
- * @return the current color of the process.
- */
- public synchronized Color getColor() {
- return currentColor;
- }
-
- /**
- * Gets the color of this process if it's crashed.
- *
- * @return the crashed color
- */
- public synchronized Color getCrashedColor() {
- return crashedColor;
- }
-
- /**
- * Checks if the time has been modified. by a task.
- * This mehod is needed by the task manager in order to add a clock offset
- * to the process object.
- *
- * @return true, if yes
- */
- public synchronized boolean timeModified() {
- return timeModified;
- }
-
- /**
- * Sets if the time has been modified by a task.
- *
- * @param timeModified true, if it has been modified.
- */
- public synchronized void timeModified(boolean timeModified) {
- this.timeModified = timeModified;
- }
-
- /**
- * Sets the global time.
- *
- * @param globalTime the new global time
- */
- public synchronized void setGlobalTime(final long globalTime) {
- this.globalTime = globalTime >= 0 ? globalTime : 0;
- }
-
- /* Gets the duration time of a message to send.
- *
- * @return the duration time
- */
- public synchronized long getDurationTime() {
- final long maxDurationTime = getLong("message.sendingtime.max");
- final long minDurationTime = getLong("message.sendingtime.min");
-
- if (maxDurationTime <= minDurationTime)
- return minDurationTime;
-
- final int diff = (int) (maxDurationTime - minDurationTime);
-
- /* Integer overflow */
- if (diff <= 0)
- return minDurationTime;
-
- return minDurationTime + random.nextInt(diff+1);
- }
-
- /**
- * Gets the a random message outage time.
- *
- * @param durationTime the duration time
- *
- * @return the a random message outage time. It will be -1 if the message
- * will not get lost at all.
- */
- public synchronized long getARandomMessageOutageTime(long durationTime,
- VSInternalProcess receiverProcess) {
- int percentage = (int) ((getInteger("message.prob.outage") +
- receiverProcess.getInteger(
- "message.prob.outage")) / 2);
-
- /* Check if the message will have an outage or not */
- if (getRandomPercentage() < percentage) {
-
- /* Calculate the random outage time! */
- long outageTime = globalTime + random.nextLong(durationTime+1) %
- simulatorVisualization.getUntilTime();
-
- return outageTime;
- }
-
- /* No outage */
- return -1;
- }
-
- /**
- * Gets the random crash task.
- *
- * @return the random crash task
- */
- public synchronized VSTask getCrashTask() {
- return randomCrashTask;
- }
-
- /**
- * Checks if the process is paused.
- *
- * @return true, if is paused
- */
- public synchronized boolean isPaused() {
- return isPaused;
- }
-
- /**
- * Called by a task if the process sends a message.
- *
- * @param message the message to send.
- */
- public synchronized void sendMessage(VSMessage message) {
- StringBuffer buffer = new StringBuffer();
- buffer.append(prefs.getString("lang.en.message.sent"));
- buffer.append("; ");
- buffer.append(message.toStringFull());
- log(buffer.toString());
- simulatorVisualization.sendMessage(message);
- }
-
- /**
- * Gets the simulator canvas.
- *
- * @return the simulator canvas
- */
- public VSSimulatorVisualization getSimulatorCanvas() {
- return simulatorVisualization;
- }
-
- /**
- * Removes the process at the specified index. Called by the simulator
- * canvas if a process has been removed from the simulator. Needed in
- * order to update the vector time and the local processNum.
- *
- * @param index the index the process has to get removed.
- */
- public synchronized void removedAProcessAtIndex(int index) {
- if (index < processNum)
- --processNum;
-
- vectorTime.remove(index);
- for (VSVectorTime vectorTime : vectorTimeHistory)
- vectorTime.remove(index);
- }
-
- /**
- * Added a process. Needed in order to update the vector time's size.
- * Called by the simulator canvas if a process has been added to the
- * simulator.
- */
- public synchronized void addedAProcess() {
- vectorTime.add(new Long(0));
- for (VSVectorTime vectorTime : vectorTimeHistory)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Gets the tasks of the process.
- *
- * @return The tasks
- */
- public VSPriorityQueue<VSTask> getTasks() {
- return tasks;
- }
-
- /**
- * Sets the tasks of the process.
- *
- * @param tasks The tasks
- */
- public void setTasks(VSPriorityQueue<VSTask> tasks) {
- this.tasks = tasks;
- }
-
- /**
- * Gets the protocol object.
- *
- * @param protocolClassname the protocol classname
- *
- * @return the protocol object
- */
- public synchronized VSAbstractProtocol getProtocolObject(
- String protocolClassname) {
- VSAbstractProtocol protocol = null;
-
- if (!objectExists(protocolClassname)) {
- protocol = (VSAbstractProtocol)
- VSRegisteredEvents.createEventInstanceByClassname(
- protocolClassname, this);
-
- setObject(protocolClassname, protocol);
- protocolsToReset.add(protocol);
-
- } else {
- protocol = (VSAbstractProtocol) getObject(protocolClassname);
- }
-
- return protocol;
- }
-
- /**
- * Sets the local time.
- *
- * @param localTime the new local time.
- */
- public synchronized void setLocalTime(final long localTime) {
- if (localTime >= 0)
- this.localTime = localTime;
- else
- this.localTime = 0;
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#updateFromPrefs()
- */
- protected void updateFromPrefs_() {
- updateFromPrefs();
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#createRandomCrashTask()
- */
- protected void createRandomCrashTask_() {
- createRandomCrashTask();
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#getProtocolObjekt(java.util.String)
- */
- protected VSAbstractProtocol getProtocolObject_(String protocolClassname) {
- return getProtocolObject(protocolClassname);
- }
-}
diff --git a/sources/core/VSMessage.java b/sources/core/VSMessage.java
deleted file mode 100644
index eca2001..0000000
--- a/sources/core/VSMessage.java
+++ /dev/null
@@ -1,208 +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 core;
-
-import core.time.*;
-import events.*;
-import prefs.VSPrefs;
-
-/**
- * An object of this class represents a message which is sent from one process
- * to another process in the simulator.
- *
- * @author Paul C. Buetow
- */
-public class VSMessage extends VSPrefs {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The constant IS_SERVER_MESSAGE. */
- public static final boolean IS_SERVER_MESSAGE = true;
-
- /** The constant IS_CLIENT_MESSAGE. */
- public static final boolean IS_CLIENT_MESSAGE = false;
-
- /** true, if the message has been sent from a server. false, if the message
- * has been sent from a client.
- */
- private boolean isServerMessage;
-
- /** Each message belongs to a specific protocol. This variable defined the
- * class name of the protocol being used.
- */
- private String protocolClassname;
-
- /** The default application preferences. */
- private VSPrefs prefs;
-
- /** A reference to the process who sent this message. */
- private VSInternalProcess sendingProcess;
-
- /** The vector time of the sending process after sending. The receiver
- * process will use this vector time in order to update the local vector
- * time.
- */
- private VSVectorTime vectorTime;
-
- /** The lamport time of the sending process after sending. The receiver
- * process will use this lamport time in order to update the local vector
- * time.
- */
- private long lamportTime;
-
- /** Each message has its own unique ID. The ID will show up in the loging
- * window of the simulator
- */
- private long messageID;
-
- /** This counter is used in order to generate unique message ID's. */
- private static long messageCounter;
-
- /**
- * The constructor of the message. Creates a new message object.
- */
- public VSMessage() {
- this.messageID = ++messageCounter;
- }
-
- /**
- * Initializes the message.
- *
- * @param process The sending process of this message.
- * @param protocolClassname The classname of the protocol this message.
- * @param isServerMessage Sets if the message has been sent by a server.
- */
- void init(VSInternalProcess process, String protocolClassname,
- boolean isServerMessage) {
- this.sendingProcess = process;
- this.protocolClassname = protocolClassname;
- this.isServerMessage = isServerMessage;
- this.prefs = process.getPrefs();
-
- lamportTime = sendingProcess.getLamportTime();
- vectorTime = sendingProcess.getVectorTime().getCopy();
- }
-
- /**
- * Gets the protocol name of the message.
- *
- * @return The protocol name of the message.
- */
- public String getName() {
- return VSRegisteredEvents.getNameByClassname(getProtocolClassname());
- }
-
- /**
- * Gets the protocol classname.
- *
- * @return The protocol classname of the message.
- */
- public String getProtocolClassname() {
- return protocolClassname;
- }
-
- /**
- * Gets the message id.
- *
- * @return The id of the message.
- */
- public long getMessageID() {
- return messageID;
- }
-
- /**
- * Gets a reference of the sending process.
- *
- * @return The process which sent this message.
- */
- public VSAbstractProcess getSendingProcess() {
- return sendingProcess;
- }
-
- /**
- * Gets the lamport time.
- *
- * @return The lamport time of the sending process.
- */
- public long getLamportTime() {
- return lamportTime;
- }
-
- /**
- * Gets the vector time.
- *
- * @return The vector time of the sending process.
- */
- public VSVectorTime getVectorTime() {
- return vectorTime;
- }
-
- /**
- * Checks if the message has been sent by a server or a client.
- *
- * @return true, if the message has been sent by a server. false, if the
- * message has been sent by a client.
- */
- public boolean isServerMessage() {
- return isServerMessage;
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#toString()
- */
- public String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append("ID: ");
- buffer.append(messageID);
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.protocol"));
- buffer.append(": ");
- buffer.append(VSRegisteredEvents.getShortnameByClassname(
- getProtocolClassname()));
-
- return buffer.toString();
- }
-
- /**
- * Extended string representation of the message object.
- *
- * @return Extended string representation of the message object.
- */
- public String toStringFull() {
- return toString() + "; " + super.toString();
- }
-
- /**
- * Compares two messages.
- *
- * @param message The message to compare with.
- *
- * @return true, if the messages have the same id. Otherwise false.
- */
- public boolean equals(VSMessage message) {
- return messageID == message.getMessageID();
- }
-}
-
diff --git a/sources/core/VSMessageStub.java b/sources/core/VSMessageStub.java
deleted file mode 100644
index 0210b74..0000000
--- a/sources/core/VSMessageStub.java
+++ /dev/null
@@ -1,61 +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 core;
-
-//import core.time.*;
-//import events.*;
-//import prefs.VSPrefs;
-
-/**
- * An object of this class represents a message stub. A message stub allows
- * to run the init method on a VSMessage object. The init method should be
- * hidden by the protocol programming API.
- *
- * @author Paul C. Buetow
- */
-public class VSMessageStub {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The message */
- private VSMessage message;
-
- /**
- * The constructor of the message stub. Creates a new message stub object.
- *
- * @param message the message
- */
- public VSMessageStub(VSMessage message) {
- this.message = message;
- }
-
- /* (non-Javadoc)
- * @see core.VSMessage#init(VSInternalProcess, java.util.String, boolean)
- */
- public void init(VSInternalProcess process, String protocolClassname,
- boolean isServerMessage) {
- message.init(process, protocolClassname, isServerMessage);
- }
-}
-
diff --git a/sources/core/VSTask.java b/sources/core/VSTask.java
deleted file mode 100644
index 381b268..0000000
--- a/sources/core/VSTask.java
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 -2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 core;
-
-import java.io.*;
-
-import events.*;
-import events.implementations.*;
-import events.internal.*;
-import exceptions.*;
-import prefs.VSPrefs;
-import protocols.VSAbstractProtocol;
-import serialize.*;
-//import utils.*;
-
-/**
- * The class VSTask, an object of this class represents a task to do or done.
- * All tasks are managed by the task manager. There are local and global timed
- * tasks. Local timed tasks are being fullfilled if the process' local time is
- * reached. Global timed tasks are being fullfilled if the simulator's time is
- * reached.
- *
- * @author Paul C. Buetow
- */
-public class VSTask implements Comparable, VSSerializable {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The Constant LOCAL. Used for the constructor if it's a local timed
- * task.
- */
- public final static boolean LOCAL = true;
-
- /** The Constant GLOBAL. Used for the constructor if it's a global timed
- * task.
- */
- public final static boolean GLOBAL = false;
-
- /** The task time. */
- private long taskTime;
-
- /** The event which takes plase if the task time matches. */
- private VSAbstractEvent event;
-
- /** The process to run the task at. */
- private VSInternalProcess process;
-
- /** The simulator's default prefs. */
- private VSPrefs prefs;
-
- /** The task is programmed. The task will be still in the task manager
- * after reset.
- */
- private boolean isProgrammed;
-
- /** The task is global timed. If set to true, its local timed. */
- private boolean isGlobalTimed;
-
- /** The task counter. Needed for the unique task numbers. */
- private static int taskCounter;
-
- /** The task number. */
- private int taskNum;
-
- /**
- * Instantiates a new task.
- *
- * @param taskTime the task time
- * @param process the process
- * @param event the event
- * @param isLocal the taks is local timed
- */
- public VSTask(long taskTime, VSInternalProcess process,
- VSAbstractEvent event,
- boolean isLocal) {
- init(taskTime, process, event, isLocal);
- }
-
- /**
- * Instantiates a new task, it's a copy constructor.
- *
- * @param task the task to copy
- */
- public VSTask(VSTask task) {
- VSAbstractEvent event = task.getEvent();
-
- try {
- // Use the copy of the event object
- event = event.getCopy();
-
- } catch (VSEventNotCopyableException e) {
- // Use the original event object
- }
-
- init(task.getTaskTime(),
- task.getProcess(),
- event,
- !task.isGlobalTimed());
- }
-
- /**
- * Instantiates a new task during a deserialization.
- *
- * @param serialize the serialize object
- * @param objectInputStream The input stream
- */
- public VSTask(VSSerialize serialize, ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- deserialize(serialize, objectInputStream);
- }
-
- /**
- * Inits the task
- *
- * @param taskTime the task time
- * @param process the process
- * @param event the event
- * @param isLocal the taks is local timed
- */
- private void init(long taskTime, VSInternalProcess process,
- VSAbstractEvent event, boolean isLocal) {
- this.process = process;
- this.taskTime = taskTime > 0 ? taskTime : 0;
- /* May be not null if called from deserialization */
- if (this.event == null)
- this.event = event;
- this.prefs = process.getPrefs();
- this.isGlobalTimed = !isLocal;
- this.taskNum = ++taskCounter;
- }
-
- /**
- * Gets the task num.
- *
- * @return the task num
- */
- public int getTaskNum() {
- return taskNum;
- }
-
- /**
- * Sets if the task is programmed.
- *
- * @param isProgrammed true, if the task is programmed
- */
- public void isProgrammed(boolean isProgrammed) {
- this.isProgrammed = isProgrammed;
- }
-
- /**
- * Checks if the task is programmed.
- *
- * @return true, if the task is programmed
- */
- public boolean isProgrammed() {
- return isProgrammed;
- }
-
- /**
- * Checks if the task is using an "internal event".
- *
- * @return true, if the task is using an internal event
- */
- public boolean hasInternalEvent() {
- return event instanceof VSAbstractInternalEvent;
- }
-
- /**
- * Checks if the task should not get serialized.
- *
- * @return true, if the task should not get serialized
- */
- public boolean hasNotSerializableEvent() {
- return event instanceof VSNotSerializable;
- }
-
- /**
- * Checks if the task is a message receive event.
- *
- * @return true, if it is a message receive event
- */
- public boolean hasMessageReceiveEvent() {
- return event instanceof VSMessageReceiveEvent;
- }
-
- /**
- * Checks if the task is a process recover event.
- *
- * @return true, if it is a process recover event
- */
- public boolean hasProcessRecoverEvent() {
- return event instanceof VSProcessRecoverEvent;
- }
-
- /**
- * Checks if the task belongs to the specified protocol object.
- *
- * @param protocol the protocol object to check against.
- *
- * @return true, if it's a task using the protocol object.
- */
- public boolean isProtocol(VSAbstractProtocol protocol) {
- if (event instanceof VSAbstractProtocol)
- return ((VSAbstractProtocol) event).equals(protocol);
-
- return false;
- }
-
- /**
- * Checks if the task's time is over.
- *
- * @return true, if it's over
- */
- public boolean timeOver() {
- if (isGlobalTimed)
- return taskTime < process.getGlobalTime();
-
- return taskTime < process.getTime();
- }
-
- /**
- * Checks if the task equals to another task.
- *
- * @param task the task to compare to
- *
- * @return true, if equal (the task nums equal)
- */
- public boolean equals(VSTask task) {
- return taskNum == task.getTaskNum();
- }
-
- /**
- * Checks if the task belongs to the specified process.
- *
- * @param process the process to check against
- *
- * @return true, if the task is using the process
- */
- public boolean isProcess(VSInternalProcess process) {
- return this.process.equals(process);
- }
-
- /**
- * Checks if the task is global timed.
- *
- * @return true, if the taks is global timed
- */
- public boolean isGlobalTimed() {
- return isGlobalTimed;
- }
-
- /**
- * Gets the process.
- *
- * @return the process of the event
- */
- public VSInternalProcess getProcess() {
- return process;
- }
-
- /**
- * Runs the task.
- */
- public void run() {
- if (event.getProcess() == null)
- event.init(process);
-
- if (!(event instanceof VSMessageReceiveEvent)
- && !(event instanceof VSAbstractProtocol))
- process.increaseVectorAndLamportTimeIfAll();
-
- event.onStart();
- }
-
- /**
- * Gets the task time.
- *
- * @return the task time
- */
- public long getTaskTime() {
- return taskTime;
- }
-
- /**
- * Sets the task time.
- *
- * @param taskTime the task time
- */
- public void setTaskTime(long taskTime) {
- this.taskTime = taskTime;
- }
-
- /**
- * Sets the process.
- *
- * @param process the process
- */
- public void setProcess(VSInternalProcess process) {
- /* Only do it if the process differs */
- if (!this.process.equals(process)) {
- this.process = process;
-
- try {
- // Use the copy of the event object
- event = event.getCopy(process);
-
- } catch (VSEventNotCopyableException e) {
- if (event instanceof VSAbstractProtocol) {
- String eventShortname = event.getShortname();
- event = process.getProtocolObject(event.getClassname());
- event.setShortname(eventShortname);
- } else {
- System.out.println(e);
- }
- }
- }
- }
-
- /**
- * Gets the event.
- *
- * @return the event
- */
- public VSAbstractEvent getEvent() {
- return event;
- }
-
- /*
- private void log(String message) {
- process.log(message);
- }
- */
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(prefs.getString("lang.en.task"));
- buffer.append(" ");
- buffer.append(getTaskTime());
- buffer.append(event.toString());
- buffer.append("; PID: ");
- buffer.append(process.getProcessID());
- /*
- if (isProgrammed()) {
- buffer.append("; Programmed");
- }
- */
-
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
- public int compareTo(Object object) {
- if (object instanceof VSTask) {
- final VSTask task = (VSTask) object;
-
- if (taskTime < task.getTaskTime())
- return -1;
-
- else if (taskTime > task.getTaskTime())
- return 1;
-
- VSAbstractEvent event2 = task.getEvent();
-
- /* If it's a recovering, it should get handled very first */
- boolean a = event instanceof VSProcessRecoverEvent;
- boolean b = event2 instanceof VSProcessRecoverEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- /* If it's a crash, it should get handled second first */
- a = event instanceof VSProcessCrashEvent;
- b = event2 instanceof VSProcessCrashEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- /* If it's a VSProtocolEvent, it should get handled third */
- a = event instanceof VSProtocolEvent;
- b = event2 instanceof VSProtocolEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- String shortname = event.getShortname();
- String shortname2 = event2.getShortname();
-
- /* One of those may be null if an VSAbstractEvent object has not
- been initialized yet */
- if (shortname == null || shortname2 == null)
- return 0;
-
- return shortname.compareTo(shortname2);
- }
-
- return 0;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(process.getProcessNum()));
-
- if (event.getClassname() == null)
- event.init(process);
-
- if (VSSerialize.DEBUG)
- System.out.println("Serializing: " + event.getClassname());
-
- objectOutputStream.writeObject(event.getClassname());
- objectOutputStream.writeObject(new Integer(event.getID()));
- event.serialize(serialize, objectOutputStream);
- objectOutputStream.writeObject(new Integer(taskNum));
- objectOutputStream.writeObject(new Long(taskTime));
- objectOutputStream.writeObject(new Boolean(isGlobalTimed));
- objectOutputStream.writeObject(new Boolean(isProgrammed));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSTask");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- int processNum = ((Integer) objectInputStream.readObject()).intValue();
- VSInternalProcess process = (VSInternalProcess)
- serialize.getObject(processNum, "process");
-
- String eventClassname = (String) objectInputStream.readObject();
- int eventID = ((Integer) objectInputStream.readObject()).intValue();
-
- VSAbstractEvent event = null;
-
- if (serialize.objectExists(eventID, "event")) {
- event = (VSAbstractEvent) serialize.getObject(eventID, "event");
-
- } else {
- event = VSRegisteredEvents.
- createEventInstanceByClassname(eventClassname, process);
-
- serialize.setObject(eventID, "event", event);
- }
-
- event.deserialize(serialize, objectInputStream);
-
- int taskNum = ((Integer) objectInputStream.readObject()).intValue();
- long taskTime = ((Long) objectInputStream.readObject()).longValue();
- Boolean isGlobalTimed = (Boolean) objectInputStream.readObject();
- Boolean isProgrammed = (Boolean) objectInputStream.readObject();
-
- serialize.setObject(taskNum, "task", this);
- init(taskTime, process, event, !isGlobalTimed.booleanValue());
- this.isProgrammed = isProgrammed.booleanValue();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
-
diff --git a/sources/core/VSTaskManager.java b/sources/core/VSTaskManager.java
deleted file mode 100644
index 8de8d80..0000000
--- a/sources/core/VSTaskManager.java
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 -2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 core;
-
-import java.io.*;
-import java.util.*;
-
-import prefs.*;
-import serialize.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSTaskManager, it is responsible that all tasks will get
- * fullfilled in the correct order. Please also read the javadoc of the VSTask
- * class. It describes the difference between local and global timed tasks.
- *
- * @author Paul C. Buetow
- */
-public class VSTaskManager implements VSSerializable {
- /** The seriao version uid */
- private static final long serialVersionUID = 1L;
-
- /** The simulator canvas. */
- private VSSimulatorVisualization simulatorVisualization;
-
- /** The global tasks. */
- private PriorityQueue<VSTask> globalTasks;
-
- /** The fullfilled programmed tasks. */
- private LinkedList<VSTask> fullfilledProgrammedTasks;
-
- /** The Constant PROGRAMMED. */
- public final static boolean PROGRAMMED = true;
-
- /** The Constant ONLY_ONCE. */
- public final static boolean ONLY_ONCE = false;
-
- /** The simulator's default prefs. */
- private VSPrefs prefs;
-
- /**
- * Instantiates a new task manager object.
- *
- * @param prefs the simulator's default prefs
- * @param simulatorVisualization the simulator canvas
- */
- public VSTaskManager(VSPrefs prefs,
- VSSimulatorVisualization simulatorVisualization) {
- init(prefs, simulatorVisualization);
- }
-
- /**
- * Inits the task manager.
- *
- * @param prefs the simulator's default prefs
- * @param simulatorVisualization the simulator canvas
- */
- private void init(VSPrefs prefs,
- VSSimulatorVisualization simulatorVisualization) {
- this.prefs = prefs;
- this.simulatorVisualization = simulatorVisualization;
-
- /* May be not null if called from deserialization */
- if (globalTasks == null)
- this.globalTasks = new PriorityQueue<VSTask>();
-
- this.fullfilledProgrammedTasks = new LinkedList<VSTask>();
- }
-
- /**
- * Run tasks. This method gets called by the simulator canvas repeatedly.
- * Almost all simulator actions take place in this method.
- *
- * @param step the step
- * @param offset the offset
- * @param lastGlobalTime the last global time
- */
- public synchronized void runTasks(long step, long offset,
- long lastGlobalTime) {
- VSTask task = null;
- long localTime;
- long offsetTime;
- long taskTime;
- long globalTime;
- final long globalOffsetTime = lastGlobalTime + step;
- boolean redo;
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- do {
- redo = false;
-
- /* Run tasks which have for its schedule the global time */
- while (globalTasks.size() != 0) {
- task = globalTasks.peek();
- VSInternalProcess process = task.getProcess();
- localTime = process.getTime();
- offsetTime = localTime + step;
- taskTime = task.getTaskTime();
- globalTime = process.getGlobalTime();
-
- if (globalOffsetTime < taskTime)
- break;
-
- globalTasks.poll();
- redo = true;
-
- if (process.isCrashed() && !task.hasProcessRecoverEvent()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- continue;
- }
-
- if (globalOffsetTime == taskTime) {
- process.setGlobalTime(globalOffsetTime);
- process.setLocalTime(offsetTime);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.isCrashed())
- process.addClockOffset(step);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-offsetTime);
- process.setLocalTime(localTime);
-
- } else { /* if (globalOffsetTime > taskTime) */
- final long diff = globalOffsetTime - taskTime;
- if (globalOffsetTime - diff < lastGlobalTime)
- process.setGlobalTime(lastGlobalTime);
- else
- process.setGlobalTime(globalOffsetTime - diff);
- process.setLocalTime(offsetTime - diff);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.isCrashed())
- process.addClockOffset(step);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- (offsetTime-diff));
- process.setLocalTime(localTime);
- }
-
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- }
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- PriorityQueue<VSTask> tasks = process.getTasks();
-
- /* Run tasks which have for its schedule the local
- process times */
- while (tasks.size() != 0) {
- task = tasks.peek();
- process = task.getProcess();
- localTime = process.getTime();
- offsetTime = localTime + step;
- taskTime = task.getTaskTime();
- globalTime = process.getGlobalTime();
-
- if (offsetTime < taskTime)
- break;
-
- tasks.poll();
- redo = true;
-
- if (process.isCrashed() &&
- !task.hasProcessRecoverEvent()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- continue;
- }
-
- if (offsetTime == taskTime) {
- process.setGlobalTime(globalOffsetTime);
- process.setLocalTime(offsetTime);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- offsetTime);
- process.setLocalTime(localTime);
-
- } else { /* if (offsetTime > taskTime) */
- final long diff = offsetTime - taskTime;
- if (globalOffsetTime - diff < lastGlobalTime)
- process.setGlobalTime(lastGlobalTime);
- else
- process.setGlobalTime(globalOffsetTime-
- diff);
- process.setLocalTime(offsetTime - diff);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- (offsetTime-diff));
- process.setLocalTime(localTime);
- }
-
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- }
- }
- }
-
- } while (redo);
- }
-
- /**
- * Resets the task manager.
- */
- public synchronized void reset() {
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- PriorityQueue<VSTask> tmp = null;
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- tmp = process.getTasks();
- process.setTasks(new VSPriorityQueue<VSTask>());
-
- for (VSTask task : tmp) {
- if (task.isProgrammed())
- insert(task);
- }
- }
- }
-
- tmp = globalTasks;
- globalTasks = new PriorityQueue<VSTask>();
-
- while (fullfilledProgrammedTasks.size() != 0)
- insert(fullfilledProgrammedTasks.removeFirst());
-
- while (tmp.size() != 0) {
- VSTask task = tmp.poll();
- if (task.isProgrammed())
- insert(task);
- }
- }
-
- /**
- * Inserts a task. Only for internal usage. Use the add methods instead.
- * This method checks if the task to insert is a global or a local timed
- * task. And it also checks if the task's time is over already.
- *
- * @param task the task to insert
- */
- private synchronized void insert(VSTask task) {
- if (task.timeOver()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.addLast(task);
-
- } else if (task.isGlobalTimed()) {
- globalTasks.add(task);
-
- } else {
- task.getProcess().getTasks().add(task);
- }
- }
-
- /**
- * Adds a task.
- *
- * @param task the task to add
- */
- public synchronized void addTask(VSTask task) {
- addTask(task, VSTaskManager.ONLY_ONCE);
- }
-
- /**
- * Adds a task.
- *
- * @param task the task to add
- * @param isProgrammed true, if the task is programmed
- */
- public synchronized void addTask(VSTask task, boolean isProgrammed) {
- task.isProgrammed(isProgrammed);
- insert(task);
- }
-
- /**
- * Removes a task.
- *
- * @param task the task to remove
- *
- * @return true, if the task has been removed with success
- */
- public synchronized boolean removeTask(VSTask task) {
- if (fullfilledProgrammedTasks.remove(task)) {
- return true;
-
- } else if (task.isGlobalTimed() && globalTasks.remove(task)) {
- return true;
-
- } else if (!task.isGlobalTimed()) {
- if (task.getProcess().getTasks().remove(task))
- return true;
- }
-
- return false;
- }
-
- /**
- * Removes several tasks.
- *
- * @param tasks the tasks to remove
- */
- public synchronized void removeAllTasks(ArrayList<VSTask> tasks) {
- for (VSTask task : tasks)
- removeTask(task);
- }
-
- /**
- * Removes the tasks of the specified process.
- *
- * @param process the process to remove the tasks of
- */
- public synchronized void removeTasksOf(VSInternalProcess process) {
- ArrayList<VSTask> removeThose = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isProcess(process))
- removeThose.add(task);
-
- for (VSTask task : removeThose)
- fullfilledProgrammedTasks.remove(task);
-
- removeThose.clear();
-
- for (VSTask task : globalTasks)
- if (task.isProcess(process))
- removeThose.add(task);
-
- for (VSTask task : removeThose)
- globalTasks.remove(task);
-
- process.getTasks().clear();
- }
-
- /**
- * Gets the local timed tasks.
- *
- * @return the local timed tasks
- */
- public synchronized ArrayList<VSTask> getLocalTasks() {
- ArrayList<VSTask> localTasks = new ArrayList<VSTask>();
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (!task.isGlobalTimed())
- localTasks.add(task);
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> tasks = process.getTasks();
- for (VSTask task : tasks)
- localTasks.add(task);
- }
- }
-
- return localTasks;
- }
-
- /**
- * Gets the global timed tasks.
- *
- * @return the global timed tasks
- */
- public synchronized ArrayList<VSTask> getGlobalTasks() {
- ArrayList<VSTask> globalTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isGlobalTimed())
- globalTasks.add(task);
-
- for (VSTask task : this.globalTasks)
- if (task.isProgrammed())
- globalTasks.add(task);
-
- return globalTasks;
- }
-
- /**
- * Gets the local timed tasks of a specific process.
- *
- * @param process the process to get the local timed tasks of
- *
- * @return the local tasks of the specified process
- */
- public synchronized ArrayList<VSTask> getProcessLocalTasks(
- VSInternalProcess process) {
- ArrayList<VSTask> processTasks = new ArrayList<VSTask>();
- VSPriorityQueue<VSTask> tasks = process.getTasks();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (!task.isGlobalTimed() && task.isProcess(process) &&
- task.isProgrammed())
- processTasks.add(task);
-
- for (VSTask task : tasks)
- if (task.isProgrammed())
- processTasks.add(task);
-
- return processTasks;
- }
-
- /**
- * Gets the global timed tasks of a specific process.
- *
- * @param process the process to get the local timed tasks of
- *
- * @return the global timed tasks of the specified process
- */
- public synchronized ArrayList<VSTask> getProcessGlobalTasks(
- VSInternalProcess process) {
- ArrayList<VSTask> processTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isGlobalTimed() && task.isProcess(process) &&
- task.isProgrammed())
- processTasks.add(task);
-
- for (VSTask task : globalTasks)
- if (task.isProcess(process) && task.isProgrammed())
- processTasks.add(task);
-
- return processTasks;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public synchronized String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(prefs.getString("lang.en.task.manager"));
- buffer.append(" (");
- buffer.append(prefs.getString("lang.en.tasks.fullfilled"));
- buffer.append(": ");
-
- for (VSTask task : fullfilledProgrammedTasks) {
- buffer.append(task);
- buffer.append("; ");
- }
-
- buffer.append(prefs.getString("lang.en.tasks.global"));
- buffer.append(": ");
-
- for (VSTask task : globalTasks) {
- buffer.append(task);
- buffer.append("; ");
- }
-
- buffer.append(prefs.getString("lang.en.tasks.local"));
- buffer.append(": ");
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> tasks = process.getTasks();
- for (VSTask task : tasks) {
- buffer.append(task);
- buffer.append("; ");
- }
- }
- }
-
- String descr = buffer.toString();
-
- if (descr.endsWith("; "))
- return descr.substring(0, descr.length()-2) + ")";
-
- return descr + ")";
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- ArrayList<VSTask> serializeThoseTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
-
- for (VSTask task : globalTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> localTasks = process.getTasks();
- for (VSTask task : localTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
- }
- }
-
- objectOutputStream.writeObject(
- new Integer(serializeThoseTasks.size()));
- for (VSTask task : serializeThoseTasks)
- task.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSTaskManager");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- globalTasks.clear();
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- process.getTasks().clear();
- }
-
- int numTasks = ((Integer) objectInputStream.readObject()).intValue();
-
- if (VSSerialize.DEBUG)
- System.out.println("Num of tasks: " + numTasks);
-
- for (int i = 0; i < numTasks; ++i) {
- VSTask task = new VSTask(serialize, objectInputStream);
- addTask(task, task.isProgrammed());
- }
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/core/time/VSLamportTime.java b/sources/core/time/VSLamportTime.java
deleted file mode 100644
index 165adfc..0000000
--- a/sources/core/time/VSLamportTime.java
+++ /dev/null
@@ -1,76 +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 core.time;
-
-/**
- * The class VSLamportTime, defines how the lamport timestamps are represented.
- *
- * @author Paul C. Buetow
- */
-public class VSLamportTime implements VSTime {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** Specified the global time of the lamport timestamp. It's used for
- * correct painting position in the simulator canvas paint area.
- */
- private long globalTime;
-
- /** Specified the process' local lamport time. */
- private long lamportTime;
-
- /**
- * A simple constructor.
- *
- * @param globalTime The global time.
- * @param lamportTime The local lamport time.
- */
- public VSLamportTime(long globalTime, long lamportTime) {
- this.globalTime = globalTime;
- this.lamportTime = lamportTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#getGlobalTime()
- */
- public long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the lamport time.
- *
- * @return The process' local lamport time
- */
- public long getLamportTime() {
- return lamportTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#toString()
- */
- public String toString() {
- return "(" + lamportTime + ")";
- }
-}
diff --git a/sources/core/time/VSTime.java b/sources/core/time/VSTime.java
deleted file mode 100644
index 3142d6b..0000000
--- a/sources/core/time/VSTime.java
+++ /dev/null
@@ -1,45 +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 core.time;
-
-/**
- * This interface is a guidline for general time format classes.
- *
- * @author Paul C. Buetow
- */
-public interface VSTime {
- /**
- * Gets the global time.
- *
- * @return The global time
- */
- public long getGlobalTime();
-
- /**
- * Returns a string representation.
- *
- * @return The representation of the implementing object as a string
- */
- public String toString();
-}
diff --git a/sources/core/time/VSVectorTime.java b/sources/core/time/VSVectorTime.java
deleted file mode 100644
index ebd5438..0000000
--- a/sources/core/time/VSVectorTime.java
+++ /dev/null
@@ -1,119 +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 core.time;
-
-import java.util.ArrayList;
-
-/**
- * The class VSVectorTime, defined how the vector timestamps are represented.
- *
- * @author Paul C. Buetow
- */
-public class VSVectorTime extends ArrayList<Long> implements VSTime {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The global time. */
- private long globalTime;
-
- /**
- * Instantiates a new vector time.
- *
- * @param globalTime the global time
- */
- public VSVectorTime(long globalTime) {
- this.globalTime = globalTime;
- }
-
- /**
- * To long array.
- *
- * @return the long[]
- */
- public long[] toLongArray() {
- final int size = super.size();
- final long[] arr = new long[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = super.get(i).longValue();
-
- return arr;
- }
-
- /**
- * Sets the global time.
- *
- * @param globalTime the new global time
- */
- public void setGlobalTime(long globalTime) {
- this.globalTime = globalTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#getGlobalTime()
- */
- public long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the copy.
- *
- * @return the copy
- */
- public VSVectorTime getCopy() {
- final VSVectorTime vectorTime = new VSVectorTime(globalTime);
- final int size = super.size();
-
- for (int i = 0; i < size; ++i)
- vectorTime.add(super.get(i));
-
- return vectorTime;
- }
-
- /* (non-Javadoc)
- * @see java.util.AbstractCollection#toString()
- */
- public String toString() {
- final int size = super.size();
- final StringBuffer buffer = new StringBuffer();
- buffer.append("(");
-
- for (int i = 0; i < size-1; ++i)
- buffer.append(super.get(i)+",");
- buffer.append(super.get(size-1)+")");
-
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see java.util.ArrayList#get(int)
- */
- public Long get(int index) {
- if (index >= super.size())
- return new Long(0);
-
- return super.get(index);
- }
-}