org.apache.cassandra.io

## Class ForwardingVersionedSerializer<T>

- java.lang.Object
- - org.apache.cassandra.io.ForwardingVersionedSerializer<T>

All Implemented Interfaces:
  IVersionedSerializer<T>

    public abstract class ForwardingVersionedSerializer<T>
    extends java.lang.Object
    implements IVersionedSerializer<T>

A serializer which forwards all its method calls to another serializer. Subclasses should override one or more methods to modify the behavior of the backing serializer as desired per the decorator pattern.

### Constructor Summary

Constructors
`protected` `ForwardingVersionedSerializer()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`protected abstract IVersionedSerializer<T>` `delegate(int version)` Returns the backing delegate instance that methods are forwarded to.
`T` `deserialize(DataInputPlus in, int version)` Deserialize into the specified DataInputStream instance.
`void` `serialize(T t, DataOutputPlus out, int version)` Serialize the specified type into the specified DataOutputStream instance.
`long` `serializedSize(T t, int version)` Calculate serialized size of object without actually serializing.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ForwardingVersionedSerializer

    protected ForwardingVersionedSerializer()

### Method Detail

#### delegate

    protected abstract IVersionedSerializer<T> delegate(int version)

Returns the backing delegate instance that methods are forwarded to.

Parameters:
  `version` - the server version
Returns:
  the backing delegate instance that methods are forwarded to.

#### serialize

    public void serialize(T t,
                          DataOutputPlus out,
                          int version)
                   throws java.io.IOException

Description copied from interface: `IVersionedSerializer`
Serialize the specified type into the specified DataOutputStream instance.

Specified by:
  `serialize` in interface `IVersionedSerializer<T>`
Parameters:
  `t` - type that needs to be serialized
  `out` - DataOutput into which serialization needs to happen.
  `version` - protocol version
Throws:
  `java.io.IOException` - if serialization fails

#### deserialize

    public T deserialize(DataInputPlus in,
                         int version)
                  throws java.io.IOException

Description copied from interface: `IVersionedSerializer`
Deserialize into the specified DataInputStream instance.

Specified by:
  `deserialize` in interface `IVersionedSerializer<T>`
Parameters:
  `in` - DataInput from which deserialization needs to happen.
  `version` - protocol version
Returns:
  the type that was deserialized
Throws:
  `java.io.IOException` - if deserialization fails

#### serializedSize

    public long serializedSize(T t,
                               int version)

Description copied from interface: `IVersionedSerializer`
Calculate serialized size of object without actually serializing.

Specified by:
  `serializedSize` in interface `IVersionedSerializer<T>`
Parameters:
  `t` - object to calculate serialized size
  `version` - protocol version
Returns:
  serialized size of object t