package scjlibs; import javax.safetycritical.ManagedMemory; import javax.safetycritical.Mission; import javax.safetycritical.annotate.Level; import javax.safetycritical.annotate.SCJAllowed; import scjlibs.util.Enumeration; import scjlibs.util.ObjectPool; import scjlibs.util.PoolObject; import scjlibs.util.Vector; public class PEH_1 extends GenericPeriodicEventHandler { // Vector<GenericEntry> vector; ObjectPool<GenericEntry> pool; public PEH_1(String name, int priority, ObjectPool<GenericEntry> pool){//Vector<GenericEntry> vector) { super(name, priority); // this.vector = vector; this.pool = pool; } @Override @SCJAllowed(Level.SUPPORT) public void handleAsyncEvent() { // TODO Auto-generated method stub ImmortalEntry.term.writeln(getName()); System.out.println(pool.usedObjects()); GenericEntry obj = pool.getPoolObject(); StringBuffer f = new StringBuffer("Juan"); obj.setName(f.toString()); System.out.println(obj.getName()); System.out.println(pool.usedObjects()); pool.releasePoolObject(obj); System.out.println(pool.usedObjects()); // Problem with lazy initialization: Get a set representation of the // entries, this is a field that uses lazy initialization. The HashMap // is in MissionMemory so all PEH handlers should be able to use it. // With the initialization below, any other PEH will fail when trying to // use it as the Set element is created in this handler allocation // context. Moreover, in the HashMap, this field is now different // from null preventing it from being re-initialized. Thus we are left // with a dangling pointer. // // hm.entrySet(); // // ManagedMemory.executeInAreaOf(hm, new Runnable() { // // @Override // public void run() { // hm.entrySet(); // // } // }); // System.out.println("-----------------------------"); // System.out.println(hm.get("Entry_0").getName()); // System.out.println("-----------------------------"); // Set<Entry<String, GenericEntry>> set = hm.entrySet(); // Get an iterator // Iterator<Entry<String, GenericEntry>> i = set.iterator(); // Display elements // while (i.hasNext()) { // Map.Entry<String, GenericEntry> me = (Map.Entry<String, GenericEntry>) i // .next(); // System.out.print(me.getKey() + ": "); // System.out.println(me.getValue().getName()); // } // ImmortalEntry.memStats(); // ManagedMemory.executeInAreaOf(vector, new Runnable() { // // @Override // public void run() { // // TODO Auto-generated method stub // vector.add(new GenericEntry("Juan")); // } // }); // // // Enumeration<GenericEntry> e = vector.elements(); // System.out.println(e.nextElement().getName()); Mission.getCurrentMission().requestTermination(); } }