summaryrefslogtreecommitdiff
path: root/src/main/java/events/implementations/VSTimestampTriggeredEvent.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/events/implementations/VSTimestampTriggeredEvent.java')
-rw-r--r--src/main/java/events/implementations/VSTimestampTriggeredEvent.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/java/events/implementations/VSTimestampTriggeredEvent.java b/src/main/java/events/implementations/VSTimestampTriggeredEvent.java
index 16d552d..ef99104 100644
--- a/src/main/java/events/implementations/VSTimestampTriggeredEvent.java
+++ b/src/main/java/events/implementations/VSTimestampTriggeredEvent.java
@@ -1,10 +1,15 @@
package events.implementations;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
import core.VSInternalProcess;
import core.time.VSLamportTime;
import core.time.VSVectorTime;
import events.VSAbstractEvent;
import events.VSCopyableEvent;
+import serialize.VSSerialize;
/**
* Abstract base class for timestamp-triggered events that fire when specific
@@ -261,4 +266,59 @@ public abstract class VSTimestampTriggeredEvent extends VSAbstractEvent implemen
public void reset() {
hasTriggered = false;
}
+
+ @Override
+ public synchronized void serialize(VSSerialize serialize,
+ ObjectOutputStream objectOutputStream)
+ throws IOException {
+ super.serialize(serialize, objectOutputStream);
+
+ if (VSSerialize.DEBUG)
+ System.out.println("Serializing: VSTimestampTriggeredEvent; id="+getID());
+
+ /** For later backwards compatibility, to add more stuff */
+ objectOutputStream.writeObject(Boolean.valueOf(false));
+
+ objectOutputStream.writeObject(timestampType);
+ objectOutputStream.writeObject(operator);
+ objectOutputStream.writeObject(Long.valueOf(targetLamportTime));
+ objectOutputStream.writeObject(Boolean.valueOf(hasTriggered));
+
+ // Serialize vector time if present
+ boolean hasVectorTime = (targetVectorTime != null);
+ objectOutputStream.writeObject(Boolean.valueOf(hasVectorTime));
+ if (hasVectorTime) {
+ objectOutputStream.writeObject(targetVectorTime);
+ }
+
+ /** For later backwards compatibility, to add more stuff */
+ objectOutputStream.writeObject(Boolean.valueOf(false));
+ }
+
+ @Override
+ public synchronized void deserialize(VSSerialize serialize,
+ ObjectInputStream objectInputStream)
+ throws IOException, ClassNotFoundException {
+ super.deserialize(serialize, objectInputStream);
+
+ if (VSSerialize.DEBUG)
+ System.out.print("Deserializing: VSTimestampTriggeredEvent ");
+
+ /** For later backwards compatibility, to add more stuff */
+ objectInputStream.readObject();
+
+ timestampType = (TimestampType) objectInputStream.readObject();
+ operator = (ComparisonOperator) objectInputStream.readObject();
+ targetLamportTime = ((Long) objectInputStream.readObject()).longValue();
+ hasTriggered = ((Boolean) objectInputStream.readObject()).booleanValue();
+
+ // Deserialize vector time if present
+ boolean hasVectorTime = ((Boolean) objectInputStream.readObject()).booleanValue();
+ if (hasVectorTime) {
+ targetVectorTime = (VSVectorTime) objectInputStream.readObject();
+ }
+
+ /** For later backwards compatibility, to add more stuff */
+ objectInputStream.readObject();
+ }
} \ No newline at end of file