From 3cbf13f2605d206c468fefe11d1655dfc9f9a63b Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Thu, 9 Jul 2015 23:47:15 +0200 Subject: [PATCH] =?UTF-8?q?WIP:=20Asynchrones=20Interface=20f=C3=BCr=20Ser?= =?UTF-8?q?viceLink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AsynchronServiceLinkProvider.java | 40 +++++++++++++++++++ .../servicelink/ServiceRegisterListener.java | 8 ++++ 2 files changed, 48 insertions(+) create mode 100644 src/org/hwo/io/servicelink/AsynchronServiceLinkProvider.java create mode 100644 src/org/hwo/io/servicelink/ServiceRegisterListener.java diff --git a/src/org/hwo/io/servicelink/AsynchronServiceLinkProvider.java b/src/org/hwo/io/servicelink/AsynchronServiceLinkProvider.java new file mode 100644 index 0000000..8522e57 --- /dev/null +++ b/src/org/hwo/io/servicelink/AsynchronServiceLinkProvider.java @@ -0,0 +1,40 @@ +package org.hwo.io.servicelink; + +import java.util.Hashtable; +import java.util.LinkedList; +import java.util.List; + +public class AsynchronServiceLinkProvider { + + ServiceRegisterCache cache; + Hashtable> serviceRegisterListeners; + + public AsynchronServiceLinkProvider(ServiceRegisterCache cache){ + this.cache = cache; + } + + private Integer calcRegisterHash(int ax,int node,int registerno){ + Integer hash = (ax << 24) | (node << 16) | registerno; + return hash; + } + + private List getListeners(Integer hash){ + if (!serviceRegisterListeners.containsKey(hash)) + serviceRegisterListeners.put(hash, new LinkedList()); + + return serviceRegisterListeners.get(hash); + } + + public void addServiceRegisterListener(int ax,int node,int registerno,ServiceRegisterListener listener){ + getListeners(calcRegisterHash(ax, node, registerno)).add(listener); + } + public void removeServiceRegisterListener(int ax,int node,int registerno,ServiceRegisterListener listener){ + getListeners(calcRegisterHash(ax, node, registerno)).remove(listener); + } + + public void update(){ + /* TODO: Implementieren des Update Zyklus */ + } + + +} diff --git a/src/org/hwo/io/servicelink/ServiceRegisterListener.java b/src/org/hwo/io/servicelink/ServiceRegisterListener.java new file mode 100644 index 0000000..0d8d146 --- /dev/null +++ b/src/org/hwo/io/servicelink/ServiceRegisterListener.java @@ -0,0 +1,8 @@ +package org.hwo.io.servicelink; + +public interface ServiceRegisterListener { + + void ServiceRegisterValueUpdated(int ax,int node,int registervalue,Integer value); + void ServiceRegisterValueUpdated(int ax,int node,int registervalue,Float value); + +}