package com.ard.gb28181.task.deviceSubscribe.deviceSubscribe.impl; import com.ard.gb28181.api.bean.SipTransactionInfo; import com.ard.gb28181.api.common.SubscribeCallback; import com.ard.gb28181.api.domain.Device; import com.ard.gb28181.task.deviceSubscribe.deviceSubscribe.SubscribeTask; import lombok.extern.slf4j.Slf4j; @Slf4j public class SubscribeTaskForMobilPosition extends SubscribeTask { public static final String name = "mobilPosition"; public static SubscribeTask getInstance(Device device, SubscribeCallback callback, SipTransactionInfo transactionInfo) { if (device.getSubscribeCycleForMobilePosition() <= 0) { return null; } SubscribeTaskForMobilPosition subscribeTaskForMobilPosition = new SubscribeTaskForMobilPosition(); subscribeTaskForMobilPosition.setDelayTime((device.getSubscribeCycleForMobilePosition() * 1000L - 500L) + System.currentTimeMillis()); subscribeTaskForMobilPosition.setDeviceId(device.getDeviceId()); subscribeTaskForMobilPosition.setCallback(callback); subscribeTaskForMobilPosition.setTransactionInfo(transactionInfo); return subscribeTaskForMobilPosition; } @Override public void expired() { if (super.getCallback() == null) { log.info("[设备订阅到期] 移动位置订阅 未找到到期处理回调, 编号: {}", getDeviceId()); return; } getCallback().run(getDeviceId(), getTransactionInfo()); } @Override public String getKey() { return String.format("%s_%s", name, getDeviceId()); } @Override public String getName() { return name; } public static String getKey(Device device) { return String.format("%s_%s", SubscribeTaskForMobilPosition.name, device.getDeviceId()); } }