1 package org.commscope.tr069adapter.vesagent.timer;
\r
3 import java.util.List;
\r
4 import java.util.concurrent.TimeUnit;
\r
5 import java.util.function.Function;
\r
7 import javax.annotation.PostConstruct;
\r
9 import org.commscope.tr069adapter.vesagent.entity.DeviceDataEntity;
\r
10 import org.commscope.tr069adapter.vesagent.repository.VesDataRepository;
\r
11 import org.commscope.tr069adapter.vesagent.util.VesAgentConstants;
\r
12 import org.commscope.tr069adapter.vesagent.util.VesAgentUtils;
\r
13 import org.slf4j.Logger;
\r
14 import org.slf4j.LoggerFactory;
\r
15 import org.springframework.beans.factory.annotation.Autowired;
\r
16 import org.springframework.stereotype.Component;
\r
19 public class StartupTimerService {
\r
20 private static final Logger logger = LoggerFactory.getLogger(StartupTimerService.class);
\r
23 private Function<String, HeartBeatTimeoutTask> beanFactory;
\r
25 public HeartBeatTimeoutTask getBeanInstance(String name) {
\r
26 return beanFactory.apply(name);
\r
30 VesDataRepository vesDataRepository;
\r
33 ScheduleTaskService timerService;
\r
36 public void initializeDeviceReachabilityCheckTimers() {
\r
37 logger.debug("Initializing all device connectivity check timer tasks.");
\r
38 List<DeviceDataEntity> deviceDataEntityList =
\r
39 vesDataRepository.findByAttrGroup(VesAgentConstants.HEART_BEAT);
\r
41 if (VesAgentUtils.isNullOrEmpty(deviceDataEntityList)) {
\r
42 logger.debug("No device reachability check timer tasks exist.");
\r
46 for (DeviceDataEntity deviceDataEntity : deviceDataEntityList) {
\r
47 String heartBeatPeriod = null;
\r
49 if (null != deviceDataEntity.getAttributesMap()) {
\r
51 deviceDataEntity.getAttributesMap().get(VesAgentConstants.HEART_BEAT_PERIOD);
\r
54 if (!VesAgentUtils.isNullOrEmpty(heartBeatPeriod)
\r
55 && !heartBeatPeriod.equals(VesAgentConstants.REMOVE_HEART_BEAT_TIMER_VAL)) {
\r
56 logger.info("Creating device connectivity check timer tasks for device {}.",
\r
57 deviceDataEntity.getDeviceId());
\r
58 ScheduleInfo scheduleInfo = new ScheduleInfo();
\r
59 scheduleInfo.setInterval(Integer.parseInt(heartBeatPeriod));
\r
60 scheduleInfo.setTimeUnit(TimeUnit.SECONDS);
\r
62 HeartBeatTimeoutTask callbackTask = getBeanInstance(deviceDataEntity.getDeviceId());
\r
64 timerService.schedule(deviceDataEntity.getDeviceId(), scheduleInfo, callbackTask);
\r