package com.ard.gb28181.task.deviceSubscribe.deviceSubscribe;
|
|
import com.ard.gb28181.api.bean.SipTransactionInfo;
|
import com.ard.gb28181.api.common.SubscribeCallback;
|
import jakarta.validation.constraints.NotNull;
|
import lombok.Data;
|
|
import java.util.concurrent.Delayed;
|
import java.util.concurrent.TimeUnit;
|
|
@Data
|
public abstract class SubscribeTask implements Delayed {
|
|
private String deviceId;
|
|
private SubscribeCallback callback;
|
|
private SipTransactionInfo transactionInfo;
|
|
/**
|
* 超时时间(单位: 毫秒)
|
*/
|
private long delayTime;
|
|
public abstract void expired();
|
|
public abstract String getKey();
|
|
public abstract String getName();
|
|
@Override
|
public long getDelay(@NotNull TimeUnit unit) {
|
return unit.convert(delayTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
|
}
|
|
@Override
|
public int compareTo(@NotNull Delayed o) {
|
return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));
|
}
|
|
public SubscribeTaskInfo getInfo() {
|
SubscribeTaskInfo subscribeTaskInfo = new SubscribeTaskInfo();
|
subscribeTaskInfo.setName(getName());
|
subscribeTaskInfo.setTransactionInfo(transactionInfo);
|
subscribeTaskInfo.setDeviceId(deviceId);
|
subscribeTaskInfo.setKey(getKey());
|
return subscribeTaskInfo;
|
}
|
}
|