package org.skywalking.apm.collector.worker.storage;
import java.util.HashMap;
/**
* @author pengys5
*/
public abstract class Window<T extends Data> {
private WindowData<T> pointer;
private WindowData<T> windowDataA;
private WindowData<T> windowDataB;
public Window() {
windowDataA = new WindowData(new HashMap<>());
windowDataB = new WindowData(new HashMap<>());
pointer = windowDataA;
}
public void switchPointer() {
if (pointer == windowDataA) {
pointer = windowDataB;
} else {
pointer = windowDataA;
}
}
protected WindowData<T> getCurrentAndHold() {
if (pointer == windowDataA) {
windowDataA.hold();
return windowDataA;
} else {
windowDataB.hold();
return windowDataB;
}
}
public WindowData<T> getLast() {
if (pointer == windowDataA) {
return windowDataB;
} else {
return windowDataA;
}
}
}