Implement the proper shutdown for TibberController

This commit is contained in:
Ziver Koc 2025-10-23 22:31:30 +02:00
parent 8ee7ed0ef2
commit 6cec337db1

View file

@ -1,7 +1,7 @@
/* /*
* The MIT License (MIT) * The MIT License (MIT)
* *
* Copyright (c) 2024 Ziver Koc * Copyright (c) 2024-2025 Ziver Koc
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal * of this software and associated documentation files (the "Software"), to deal
@ -45,6 +45,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -61,7 +62,7 @@ public class TibberController implements HalSensorController, Runnable, HalDaemo
private List<TibberDevice> registeredDevices = new ArrayList<>(); private List<TibberDevice> registeredDevices = new ArrayList<>();
private List<HalDeviceReportListener> deviceListeners = new CopyOnWriteArrayList<>(); private List<HalDeviceReportListener> deviceListeners = new CopyOnWriteArrayList<>();
private ScheduledExecutorService executor; private ScheduledFuture<?> threadSchedule;
public TibberController() {} public TibberController() {}
@ -78,8 +79,7 @@ public class TibberController implements HalSensorController, Runnable, HalDaemo
@Override @Override
public void initiate(ScheduledExecutorService executor) { public void initiate(ScheduledExecutorService executor) {
this.executor = executor; threadSchedule = executor.scheduleAtFixedRate(this, 10, POLL_TIME, TimeUnit.SECONDS);
executor.scheduleAtFixedRate(this, 10, POLL_TIME, TimeUnit.SECONDS);
} }
@Override @Override
@ -198,7 +198,7 @@ public class TibberController implements HalSensorController, Runnable, HalDaemo
@Override @Override
public synchronized void close() { public synchronized void close() {
registeredDevices = new ArrayList<>(); registeredDevices.clear();
threadSchedule.cancel(false);
} }
} }