00001 package cast.examples; 00002 00003 import java.util.ArrayList; 00004 00005 import cast.CASTException; 00006 import cast.architecture.ChangeFilterFactory; 00007 import cast.architecture.ManagedComponent; 00008 import cast.architecture.WorkingMemoryChangeReceiver; 00009 import cast.cdl.WorkingMemoryChange; 00010 import cast.cdl.WorkingMemoryChangeFilter; 00011 00012 import comedyarch.autogen.Joke; 00013 00014 public class PriorityTest extends ManagedComponent { 00015 00016 private class PrinterReceiver implements WorkingMemoryChangeReceiver { 00017 private final String m_say; 00018 public PrinterReceiver(String _say) { 00019 m_say = _say; 00020 } 00021 public void workingMemoryChanged(WorkingMemoryChange _wmc) 00022 throws CASTException { 00023 println(m_say); 00024 removeChangeFilter(this); 00025 } 00026 } 00027 00028 00029 private ArrayList<WorkingMemoryChangeReceiver> m_receivers = new ArrayList<WorkingMemoryChangeReceiver>(3); 00030 private WorkingMemoryChangeFilter m_filter = ChangeFilterFactory.createGlobalTypeFilter(Joke.class); 00031 00032 @Override 00033 public void start() { 00034 00035 m_receivers.add(new PrinterReceiver("default")); 00036 m_receivers.add(new PrinterReceiver("high")); 00037 m_receivers.add(new PrinterReceiver("low")); 00038 00039 00040 00041 int i = 0; 00042 for (WorkingMemoryChangeReceiver receiver : m_receivers) { 00043 ChangeReceiverPriority prio; 00044 if(i % 3 == 0) { 00045 prio = ChangeReceiverPriority.MEDIUM; 00046 } 00047 else if(i % 3 == 1) { 00048 prio = ChangeReceiverPriority.HIGH; 00049 } 00050 else { 00051 prio = ChangeReceiverPriority.LOW; 00052 } 00053 addChangeFilter(m_filter, receiver,prio); 00054 i++; 00055 } 00056 println(getFilterCount()); 00057 00058 } 00059 00060 @Override 00061 protected void runComponent() { 00062 while(isRunning()) { 00063 sleepComponent(1000); 00064 log("log here"); 00065 debug("debug here"); 00066 println(getFilterCount()); 00067 } 00068 } 00069 }
1.5.8