Added persistTo/unpersistFrom methods for persisting updates.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3652 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Andrzej Kapolka
2005-07-21 02:23:45 +00:00
parent ac22e65145
commit 58bf15f3e8
@@ -1,5 +1,5 @@
//
// $Id: SceneUpdate.java,v 1.3 2004/08/27 02:20:42 mdb Exp $
// $Id$
//
// Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -21,7 +21,12 @@
package com.threerings.whirled.data;
import java.io.IOException;
import com.samskivert.util.StringUtil;
import com.threerings.io.ObjectInputStream;
import com.threerings.io.ObjectOutputStream;
import com.threerings.io.Streamable;
import com.threerings.whirled.Log;
@@ -105,6 +110,64 @@ public class SceneUpdate
}
}
/**
* Writes our custom streamable fields.
*/
public void writeObject (ObjectOutputStream out)
throws IOException
{
if (_nondb) {
out.writeInt(_targetId);
out.writeInt(_targetVersion);
}
out.defaultWriteObject();
}
/**
* Reads our custom streamable fields.
*/
public void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
if (_nondb) {
_targetId = in.readInt();
_targetVersion = in.readInt();
}
in.defaultReadObject();
}
/**
* Serializes the bare representation of this instance without the scene id
* and version fields. Useful when storing updates in a database where the
* scene id and version fields are stored in separate columns and the rest
* if the representation is contained in an opaque blob.
*/
public void persistTo (ObjectOutputStream out)
throws IOException
{
_nondb = false;
try {
out.writeBareObject(this);
} finally {
_nondb = true;
}
}
/**
* Unserializes this instance from the bare representation created by
* {@link #persistTo}.
*/
public void unpersistFrom (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
_nondb = false;
try {
in.readBareObject(this);
} finally {
_nondb = true;
}
}
/**
* Generates a string representation of this instance.
*/
@@ -128,8 +191,11 @@ public class SceneUpdate
}
/** The version number of the scene on which we operate. */
protected int _targetId;
protected transient int _targetId;
/** The version number of the scene on which we operate. */
protected int _targetVersion;
protected transient int _targetVersion;
/** Used when serializing this update for storage in the database. */
protected transient boolean _nondb = true;
}