package org.kevoree.library.javase.fakeDataProvider; import java.io.IOException; import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import org.kevoree.annotation.ComponentType; import org.kevoree.annotation.DictionaryAttribute; import org.kevoree.annotation.DictionaryType; import org.kevoree.annotation.Library; import org.kevoree.annotation.PortType; import org.kevoree.annotation.RequiredPort; import org.kevoree.annotation.Requires; import org.kevoree.annotation.Start; import org.kevoree.annotation.Stop; import org.kevoree.annotation.Update; import org.kevoree.framework.AbstractComponentType; import org.kevoree.framework.MessagePort; /** * Created by IntelliJ IDEA. * User: jed * Date: 09/11/11 * Time: 14:59 * To change this template use File | Settings | File Templates. */ @DictionaryType({ @DictionaryAttribute(name = "refresh_speed", defaultValue = "2000", optional = true), @DictionaryAttribute(name = "range_min", defaultValue = "0", optional = true), @DictionaryAttribute(name = "range_max", defaultValue = "50", optional = true) }) @Requires({ @RequiredPort(name = "out", type = PortType.MESSAGE, optional = true) }) @ComponentType @Library(name = "JavaSE") public class FakeDataProvider extends AbstractComponentType implements Runnable { Boolean alive = false; Thread t = null; int range_min; int range_max; int refresh_speed; // private Logger logger = LoggerFactory.getLogger(ARandom.class); @Start public void start () throws IOException { // logger.debug("ARandom ","starting"); updateDico(); alive = true; t = new Thread(this); t.start(); } @Stop public void stop () { //logger.debug("ARandom ","closing"); alive = false; } @Update public void update () { updateDico(); } @Override public void run () { OperatingSystemMXBean os = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); //java.util.Random rand = new java.util.Random(); while (alive) { //int rand_valeur = range_min + rand.nextInt(range_max - range_min); int proc = os.getAvailableProcessors(); MessagePort port = (MessagePort) this.getPortByName("out"); port.process("proc=" + proc); try { Thread.sleep(refresh_speed); } catch (InterruptedException e) { e.printStackTrace(); } } } public void updateDico () { range_max = Integer.parseInt(getDictionary().get("range_max").toString()); range_min = Integer.parseInt(getDictionary().get("range_min").toString()); refresh_speed = Integer.parseInt(getDictionary().get("refresh_speed").toString()); } }