diff options
| author | Paul Buetow <paul@buetow.org> | 2008-06-01 19:28:00 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-06-01 19:28:00 +0000 |
| commit | 00120474f64906e34fa79ce6ac8eede521c320d5 (patch) | |
| tree | 88146a9507716ba40f10b01d55e14670a364f605 /sources/core/VSProcess.java | |
| parent | 9a0fc6463ac1bca1ec05056fb4f84163d1e9fc26 (diff) | |
initial complete serialization support
Diffstat (limited to 'sources/core/VSProcess.java')
| -rw-r--r-- | sources/core/VSProcess.java | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java index 31bbab6..023e017 100644 --- a/sources/core/VSProcess.java +++ b/sources/core/VSProcess.java @@ -24,6 +24,7 @@ package core; import java.awt.*; +import java.io.*; import java.util.*; import core.time.*; @@ -40,7 +41,7 @@ import utils.*; * * @author Paul C. Buetow */ -public class VSProcess extends VSPrefs { +public class VSProcess extends VSPrefs implements Serializable { /** The data serialization id. */ private static final long serialVersionUID = 1L; @@ -198,7 +199,22 @@ public class VSProcess extends VSPrefs { */ public VSProcess(VSPrefs prefs, int processNum, VSSimulatorCanvas simulatorCanvas, VSLogging logging) { - this.protocolsToReset = new ArrayList<VSAbstractProtocol>(); + init(prefs, processNum, simulatorCanvas, logging); + } + + /** + * Inits a the process. + * + * @param prefs the simulator's default prefs + * @param processNum the process num + * @param simulatorCanvas the simulator canvas + * @param logging the logging object + */ + private void init(VSPrefs prefs, int processNum, + VSSimulatorCanvas simulatorCanvas, VSLogging logging) { + /* May be not null if called from deserialization */ + if (protocolsToReset == null) + this.protocolsToReset = new ArrayList<VSAbstractProtocol>(); this.processNum = processNum; this.prefs = prefs; this.simulatorCanvas = simulatorCanvas; @@ -992,4 +1008,44 @@ public class VSProcess extends VSPrefs { return protocol; } + + /* (non-Javadoc) + * @see prefs.VSPrefs#writeObject() + */ + public synchronized void writeObject(ObjectOutputStream objectOutputStream) + throws IOException { + super.writeObject(objectOutputStream); + objectOutputStream.writeObject(new Integer(processNum)); + objectOutputStream.writeObject(protocolsToReset); + } + + /* (non-Javadoc) + * @see prefs.VSPrefs#readObject() + */ + @SuppressWarnings("unchecked") + public synchronized void readObject(ObjectInputStream objectInputStream) + throws IOException, ClassNotFoundException { + super.readObject(objectInputStream); + + if (VSDeserializationHelper.DEBUG) + System.out.println("Deserializing: VSProcess"); + + VSLogging logging = (VSLogging) + VSDeserializationHelper.getObject("logging"); + VSSimulatorCanvas simulatorCanvas = (VSSimulatorCanvas) + VSDeserializationHelper.getObject( + "simulatorCanvas"); + VSPrefs prefs = (VSPrefs) VSDeserializationHelper.getObject("prefs"); + + Integer processNum = (Integer) objectInputStream.readObject(); + this.protocolsToReset = (ArrayList<VSAbstractProtocol>) + objectInputStream.readObject(); + + for (VSAbstractProtocol protocol : protocolsToReset) + setObject(protocol.getClassname(), protocol); + + VSDeserializationHelper.setObject(processNum.intValue(), + "process", this); + init(prefs, processNum.intValue(), simulatorCanvas, logging); + } } |
