package water.util; import water.AutoBuffer; import water.Freezable; import water.H2O; import water.TypeMap; import java.util.concurrent.atomic.AtomicInteger; /** * Created by tomas on 3/13/17. */ public final class IcedAtomicInt extends AtomicInteger implements Freezable { private static volatile int _frozeType = 0; public IcedAtomicInt(){super(0);} public IcedAtomicInt(int val){super(val);} @Override public final AutoBuffer write(AutoBuffer ab) { ab.put4(get()); return ab; } @Override public final IcedAtomicInt read(AutoBuffer ab) { set(ab.get4()); return this; } @Override public AutoBuffer writeJSON(AutoBuffer ab) { return ab.putJSON4(get()); } @Override public Freezable readJSON(AutoBuffer ab) { throw H2O.unimpl(); } @Override public int frozenType() { if(_frozeType != 0) return _frozeType; return (_frozeType = TypeMap.getIcer(this).frozenType()); } @Override public byte [] asBytes(){ return write(new AutoBuffer()).buf(); } @Override public IcedAtomicInt reloadFromBytes(byte [] ary){ return read(new AutoBuffer(ary)); } @Override public Freezable clone() { return new IcedAtomicInt(get()); } }