WIP: Asynchrones Interface für ServiceLink

thobaben_serialize
Harald Wolff 2015-07-09 23:47:15 +02:00
parent 69db4cd9f7
commit 3cbf13f260
2 changed files with 48 additions and 0 deletions

View File

@ -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<Integer, List<ServiceRegisterListener>> 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<ServiceRegisterListener> getListeners(Integer hash){
if (!serviceRegisterListeners.containsKey(hash))
serviceRegisterListeners.put(hash, new LinkedList<ServiceRegisterListener>());
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 */
}
}

View File

@ -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);
}