]> git.basschouten.com Git - openhab-addons.git/blob
2590cc88613e07c1511f457ad58d9afd2031b290
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.nibeheatpump.internal.connection;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import org.openhab.binding.nibeheatpump.internal.NibeHeatPumpException;
19 import org.openhab.binding.nibeheatpump.internal.message.MessageFactory;
20 import org.openhab.binding.nibeheatpump.internal.message.NibeHeatPumpMessage;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 /**
25  * The {@link NibeHeatPumpBaseConnector} define abstract class for Nibe connectors. All connector implementations should
26  * extend this class.
27  *
28  *
29  * @author Pauli Anttila - Initial contribution
30  */
31 public abstract class NibeHeatPumpBaseConnector implements NibeHeatPumpConnector {
32     private final Logger logger = LoggerFactory.getLogger(NibeHeatPumpBaseConnector.class);
33
34     private final List<NibeHeatPumpEventListener> listeners = new ArrayList<>();
35     public boolean connected = false;
36
37     @Override
38     public synchronized void addEventListener(NibeHeatPumpEventListener listener) {
39         if (!listeners.contains(listener)) {
40             this.listeners.add(listener);
41         }
42     }
43
44     @Override
45     public synchronized void removeEventListener(NibeHeatPumpEventListener listener) {
46         this.listeners.remove(listener);
47     }
48
49     @Override
50     public boolean isConnected() {
51         return connected;
52     }
53
54     public void sendMsgToListeners(byte[] data) {
55         try {
56             NibeHeatPumpMessage msg = MessageFactory.getMessage(data);
57             sendMsgToListeners(msg);
58         } catch (NibeHeatPumpException e) {
59             logger.debug("Invalid message received, exception {}", e.getMessage());
60         }
61     }
62
63     public void sendMsgToListeners(NibeHeatPumpMessage msg) {
64         if (msg != null) {
65             for (NibeHeatPumpEventListener listener : listeners) {
66                 try {
67                     listener.msgReceived(msg);
68                 } catch (Exception e) {
69                     logger.error("Event listener invoking error", e);
70                 }
71             }
72         }
73     }
74
75     public void sendErrorToListeners(String error) {
76         for (NibeHeatPumpEventListener listener : listeners) {
77             try {
78                 listener.errorOccurred(error);
79             } catch (Exception e) {
80                 logger.error("Event listener invoking error", e);
81             }
82         }
83     }
84 }