
package com.tmerclub.cloud.common.leaf.segment.model;

import java.io.Serial;
import java.io.Serializable;
import java.util.concurrent.atomic.AtomicLong;
/**
 * @author lanhai
 */
public class Segment implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    private AtomicLong value = new AtomicLong(0);
    private volatile long max;
    private volatile int step;
    private final SegmentBuffer buffer;

    public Segment(SegmentBuffer buffer) {
        this.buffer = buffer;
    }

    public AtomicLong getValue() {
        return value;
    }

    public void setValue(AtomicLong value) {
        this.value = value;
    }

    public long getMax() {
        return max;
    }

    public void setMax(long max) {
        this.max = max;
    }

    public int getStep() {
        return step;
    }

    public void setStep(int step) {
        this.step = step;
    }

    public SegmentBuffer getBuffer() {
        return buffer;
    }

    public long getIdle() {
        return this.getMax() - getValue().get();
    }

    @Override
    public String toString() {
        return "Segment(" + "value:" +
                value +
                ",max:" +
                max +
                ",step:" +
                step +
                ")";
    }
}
