package org.f1x.v1.state;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Thread safe
*/
public class MemorySessionState extends AbstractSessionState {
private final AtomicInteger nextSenderSeqNum = new AtomicInteger(1);
private final AtomicInteger nextTargetSeqNum = new AtomicInteger(1);
private volatile long lastLogonTimestamp = -1;
@Override
public void setLastConnectionTimestamp(long newValue) {
this.lastLogonTimestamp = newValue;
}
@Override
public long getLastConnectionTimestamp() {
return lastLogonTimestamp;
}
@Override
public void setNextSenderSeqNum(int newValue) {
this.nextSenderSeqNum.set(newValue);
}
@Override
public int getNextSenderSeqNum() {
return nextSenderSeqNum.get();
}
@Override
public int consumeNextSenderSeqNum() {
return nextSenderSeqNum.getAndIncrement();
}
@Override
public void setNextTargetSeqNum(int newValue) {
this.nextTargetSeqNum.set(newValue);
}
@Override
public int getNextTargetSeqNum() {
return nextTargetSeqNum.get();
}
@Override
public int consumeNextTargetSeqNum() {
return nextTargetSeqNum.getAndIncrement();
}
}