Moved the stream related methods into a separate streamable interface that

can be implemented by objects that are streamable but that don't have an
associated type code.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@263 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2001-08-16 03:25:14 +00:00
parent 8520b2e84b
commit 3aa5302b00
2 changed files with 38 additions and 18 deletions
@@ -0,0 +1,36 @@
//
// $Id: Streamable.java,v 1.1 2001/08/16 03:25:14 mdb Exp $
package com.threerings.cocktail.cher.io;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
/**
* A streamable is an object that knows how to read and write itself on a
* stream. We are obliged to reimplement an object serialization framework
* rather than use the one provided by Java because we're interested in
* taking maximal advantage of situations where we know the types of
* objects that are being streamed and in those cases we avoid writing
* type information for the objects and only write the values. In other
* cases, we assign unique codes to object classes (see {@link
* TypedObject}) to minimize the network footprint of the serialized
* objects.
*/
public interface Streamable
{
/**
* Writes all of the members of this object to the supplied data
* output stream.
*/
public void writeTo (DataOutputStream out)
throws IOException;
/**
* Reads all of the members of this object in from the supplied data
* input stream.
*/
public void readFrom (DataInputStream in)
throws IOException;
}
@@ -1,12 +1,8 @@
//
// $Id: TypedObject.java,v 1.3 2001/05/30 23:58:31 mdb Exp $
// $Id: TypedObject.java,v 1.4 2001/08/16 03:25:14 mdb Exp $
package com.threerings.cocktail.cher.io;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
/**
* A typed object is one that is associated with a particular type code.
* The type code can be communicated on the wire and used by the receiving
@@ -15,7 +11,7 @@ import java.io.DataOutputStream;
*
* @see TypedObjectFactory
*/
public interface TypedObject
public interface TypedObject extends Streamable
{
/**
* Each typed object class must associate itself with a type value via
@@ -26,16 +22,4 @@ public interface TypedObject
* @return The type code associated with this object.
*/
public short getType ();
/**
* Each typed object class must be able to write itself to a stream.
*/
public void writeTo (DataOutputStream out)
throws IOException;
/**
* Each typed object class must be able to read itself from a stream.
*/
public void readFrom (DataInputStream in)
throws IOException;
}