package water.serial;
import java.io.IOException;
import water.AutoBuffer;
import water.Freezable;
public abstract class AutoBufferSerializer<T extends Freezable> implements Serializer<T, AutoBuffer, AutoBuffer> {
@Override public void save(T m, AutoBuffer output) {
postSave(m, m.write(
preSave(m,output)));
}
@Override public T load(T e, AutoBuffer input) {
// Check model compatibility
T r = e.read(
preLoad(e,input));
postLoad(r,input);
return e;
}
@Override public T load(AutoBuffer input) throws IOException {
throw new UnsupportedOperationException();
}
/** Hook which is call before the model is serialized. */
protected AutoBuffer preSave (T m, AutoBuffer ab) { return ab; }
/** Hook which is call after the model is serialized. */
protected AutoBuffer postSave(T m, AutoBuffer ab) { return ab; }
/** Hook which is call before the model is loaded from <code>AutoBuffer</code>. */
protected AutoBuffer preLoad (T m, AutoBuffer ab) { return ab; }
/** Hook which is call after the model is loaded from <code>AutoBuffer</code>. */
protected AutoBuffer postLoad(T m, AutoBuffer ab) { return ab; }
}