[Sop-svn] SF.net SVN: sop:[11] trunk/sopf/kernel
Status: Planning
Brought to you by:
labiknight
|
From: <lab...@us...> - 2009-05-15 11:53:50
|
Revision: 11
http://sop.svn.sourceforge.net/sop/?rev=11&view=rev
Author: labiknight
Date: 2009-05-15 11:53:31 +0000 (Fri, 15 May 2009)
Log Message:
-----------
Renamed the based packages for kernel
Labi Oyapero
Modified Paths:
--------------
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/task/ApTask.java
trunk/sopf/kernel/src/test/java/org/sf/net/sopf/kernel/AppTest.java
Added Paths:
-----------
trunk/sopf/kernel/src/main/java/org/
trunk/sopf/kernel/src/main/java/org/sf/
trunk/sopf/kernel/src/main/java/org/sf/net/
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Delegator.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Executor.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Global.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ICycleAware.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ISopTask.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Processor.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEvent.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEventListener.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopSys.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTask.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTaskType.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Task.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/TaskInvocator.java
trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/task/
trunk/sopf/kernel/src/test/java/org/
trunk/sopf/kernel/src/test/java/org/sf/
trunk/sopf/kernel/src/test/java/org/sf/net/
trunk/sopf/kernel/src/test/java/org/sf/net/sopf/
trunk/sopf/kernel/src/test/java/org/sf/net/sopf/kernel/
Removed Paths:
-------------
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Delegator.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Executor.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Global.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ICycleAware.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ISopTask.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Processor.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEvent.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEventListener.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopSys.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTask.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTaskType.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Task.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/TaskInvocator.java
trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/task/
trunk/sopf/kernel/src/test/java/com/intellinova/sop/kernel/
Property Changed:
----------------
trunk/sopf/kernel/
Property changes on: trunk/sopf/kernel
___________________________________________________________________
Modified: svn:ignore
- .settings
.project
+ .settings
.project
target
.classpath
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Delegator.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Delegator.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Delegator.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-/**
- * @author oyapeo
- *
- */
-public interface Delegator {
-
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Executor.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Executor.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Executor.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,18 +0,0 @@
-package com.intellinova.sop.kernel;
-
-public interface Executor {
- public int getId();
- public boolean isProxy();
- public void setSelectorValues(int taskType, long[] selectorValues);
- public void setSelectorValues(int taskType, long minSelectorValues, long maxSelectorValue);
- public long[] getSelectorValues(int taskType);
- public long getMinSelectorValue();
- public long getMaxSelectorValue();
- public void add(Task[] tasks);
- public void register(ICycleAware cycleListener);
- //public void update(DataDelta[] globalDataDelta);
- public void doRound(long newTime);
- public void addCtx(Global data);
- public void removeCtx(Global data);
- public void quit();
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Global.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Global.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Global.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,17 +0,0 @@
-package com.intellinova.sop.kernel;
-
-/**
- *
- * @author oyapeo
- *
- */
-public interface Global {
- /**time within the context of sfde*/
- public long getTime();
- /**
- * data-type identifier
- * must be unique for all context registered in an executor
- * @return
- */
- public int getType();
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ICycleAware.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ICycleAware.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ICycleAware.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,22 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-import java.util.Queue;
-
-
-/**
- * @author oyapeo
- *
- */
-public interface ICycleAware {
- /**
- * Interface to allow functionalities to execute before a round starts
- * @param taskQueue stores newly created tasks during prepartion.
- * The taskQueue is specific to the domain
- * processing requirements.
- */
- public void preRound(Queue<Task> taskQueue);
- public void postRound(Queue<Task> taskQueue);
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ISopTask.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ISopTask.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ISopTask.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,13 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-/**
- * @author admin
- *
- */
-public interface ISopTask extends Runnable {
- public boolean isNull();
-
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Processor.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Processor.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Processor.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,97 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.locks.LockSupport;
-
-/**
- * @author admin
- *
- */
-public class Processor {
- private final boolean[] demQueueIndices;
- private final ConcurrentLinkedQueue<ISopTask>[] queues;
- private boolean started=false;
- private final ExecutorService es;//processing unit
- private int threadSize=2;//keep size to number of
- private final AtomicBoolean pauseProcess = new AtomicBoolean(false);
- /**controls pausing the processor*/
- private Thread processThread;
- private final AtomicLong cc = new AtomicLong(0); //cycle count
- private SopEventListener sel;
- private static Processor instance;
- /**
- *
- */
- private Processor() {
- // TODO Auto-generated constructor stub
- demQueueIndices = TaskInvocator.getInstance().getQueueDemIndices();
- queues = TaskInvocator.getInstance().getQueues();
- es = Executors.newFixedThreadPool(threadSize);
-
- }
-
- public final static Processor getInstance() {
- if(instance == null) {
- instance = new Processor();
- instance.init();
- }
- return instance;
- }
-
- /**
- * TODO
- */
- private void init(){
- Thread thread = new Thread(){ public void run(){ process();}};
- thread.start();
- }
-
- /**
- * get all the task queues
- */
- private void process(){
- final int queueLen = queues.length;
- final ISopTask nullTask = new ISopTask(){
- public boolean isNull(){return true;}
- public void run(){}
- };
- started = true;
- while(started) {
- cc.incrementAndGet();//demarcate
- for(int ci=0; ci < queueLen; ci++){// demarcate time
- if(demQueueIndices[ci]){
- queues[ci].offer(nullTask);//add null task
- }
- }
- for(int ci=0; ci < queueLen; ci++){
- while(!queues[ci].isEmpty()){
- final ISopTask sopTask = queues[ci].poll();
- boolean isTimeDemarcation = queues[ci].peek().isNull();
- //don't worry about waiting for all the submitted task to be completed before doing next. TODO keep an eye
- if(!isTimeDemarcation){ es.execute(sopTask);}
- else{ break; }
- }
- }
- if(pauseProcess.get()){//pause
- processThread = Thread.currentThread();
- LockSupport.park();
- }else {
- try{Thread.sleep(300);}
- catch(InterruptedException ie){ sel.consume(new SopEvent<Throwable>(this, ie)); }
- }
- }
- }
-
-
- public long getCc(){ return cc.get(); }
-
- public void pause(){ pauseProcess.set(true); }
- public void unPause(){ pauseProcess.set(false); LockSupport.unpark(processThread); }
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEvent.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEvent.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEvent.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,32 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-import java.util.EventObject;
-
-/**
- * @author admin
- *
- */
-public class SopEvent<E extends Object> extends EventObject {
- private static final long serialVersionUID = 8449936176355578066L;
- private E event;
-
- public SopEvent(Object source) {
- super(source);
- }
-
- public SopEvent(Object source, E _event) {
- super(source);
- event = _event;
- }
-
- public E getEvent() {
- return event;
- }
- public void setEvent(E event) {
- this.event = event;
- }
-
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEventListener.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEventListener.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEventListener.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,16 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-import java.util.EventListener;
-
-/**
- * @author admin
- *
- */
-public class SopEventListener implements EventListener {
- public void consume(SopEvent se){
- //TODO
- }
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopSys.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopSys.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopSys.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,12 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-/**
- * @author admin
- *
- */
-public class SopSys {
-
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTask.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTask.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTask.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,28 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-/**
- * @author admin
- *
- */
-public class SopTask implements ISopTask {
- private boolean isNull;
- /* (non-Javadoc)
- * @see com.intellinova.sop.kernel.ISopTask#isNull()
- */
- public boolean isNull() {
- // TODO Auto-generated method stub
- return isNull;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Runnable#run()
- */
- public void run() {
- // TODO Auto-generated method stub
-
- }
-
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTaskType.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTaskType.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTaskType.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,21 +0,0 @@
-package com.intellinova.sop.kernel;
-
-/**
- * Hello world!
- *
- */
-public enum SopTaskType
-{
- /**
- * AP=> Action-Potential, GET=> receive synaptic signal
- * SEND=> send synaptic signal,
- * determine-mp, determine-ku_facil
- * determine ku_ltp
- */
- AP(1), GET(3), SEND(4);
- private int tnum;
-
- private SopTaskType(int _stt){
- tnum = _stt;
- }
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Task.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Task.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Task.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,11 +0,0 @@
-package com.intellinova.sop.kernel;
-
-import java.util.Queue;
-
-public interface Task {
- public long getCreateTime();
- public int getSelectorValue();
- public int getType();
- public int[] getProbableSubTypes();
- public void execute(Queue<Task> createdTaskQueue);
-}
Deleted: trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/TaskInvocator.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/TaskInvocator.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/TaskInvocator.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,82 +0,0 @@
-/**
- *
- */
-package com.intellinova.sop.kernel;
-
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-import org.apache.commons.pool.impl.GenericKeyedObjectPool;
-
-import com.intellinova.sop.kernel.task.ApTask;
-import com.intellinova.sop.model.core.model.Neuron;
-
-/**
- * @author admin
- *
- */
-public class TaskInvocator {
- SopEventListener sel;
-
- ConcurrentLinkedQueue<SopTask> apq;
- ConcurrentLinkedQueue<SopTask> sendq;
- ConcurrentLinkedQueue<SopTask> getq;
-
- GenericKeyedObjectPool keyedObjPool;
-
-
-
- private static TaskInvocator instance;
-
- /**
- *
- */
- private TaskInvocator() {
- // TODO Auto-generated constructor stub
- }
-
- public final static TaskInvocator getInstance(){
- if(instance == null) {
- instance = new TaskInvocator(); //TODO
- }
- return instance;
- }
-
- public void doAp(Neuron neuron){
- try{
- ApTask task = (ApTask) keyedObjPool.borrowObject(SopTaskType.AP);
- //TODO set the appropriate fields
- apq.offer(task);
- }
- catch (Exception e) {
- sel.consume(new SopEvent<Throwable>(this, e));
- }
-
- }
-
- /**
- * Returns all the queues involved, their order is specific
- * and is matched by the other methods that return arrays.
- * This method is expected to be called ONCE
- * @return
- */
- @SuppressWarnings("unchecked")
- public final ConcurrentLinkedQueue<ISopTask>[] getQueues() {
- ConcurrentLinkedQueue[] queues = new ConcurrentLinkedQueue[]{
- apq, sendq, getq
- };//TODO update queue list
- return queues;
- }
-
- /**
- * Indicates queues that should be demarcated by time,
- * some queues don't need time-demarcation.
- * This method is expected to be called ONCE
- * @return
- */
- public final boolean[] getQueueDemIndices() {
- boolean[] demQueueIndices = new boolean[]{true, true, true, true, true, true, true};//TODO update setting
- return demQueueIndices;
- }
-
-}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Delegator.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Delegator.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Delegator.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Delegator.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+/**
+ * @author oyapeo
+ *
+ */
+public interface Delegator {
+
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Executor.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Executor.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Executor.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Executor.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,18 @@
+package org.sf.net.sopf.kernel;
+
+public interface Executor {
+ public int getId();
+ public boolean isProxy();
+ public void setSelectorValues(int taskType, long[] selectorValues);
+ public void setSelectorValues(int taskType, long minSelectorValues, long maxSelectorValue);
+ public long[] getSelectorValues(int taskType);
+ public long getMinSelectorValue();
+ public long getMaxSelectorValue();
+ public void add(Task[] tasks);
+ public void register(ICycleAware cycleListener);
+ //public void update(DataDelta[] globalDataDelta);
+ public void doRound(long newTime);
+ public void addCtx(Global data);
+ public void removeCtx(Global data);
+ public void quit();
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Global.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Global.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Global.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Global.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,17 @@
+package org.sf.net.sopf.kernel;
+
+/**
+ *
+ * @author oyapeo
+ *
+ */
+public interface Global {
+ /**time within the context of sfde*/
+ public long getTime();
+ /**
+ * data-type identifier
+ * must be unique for all context registered in an executor
+ * @return
+ */
+ public int getType();
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ICycleAware.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ICycleAware.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ICycleAware.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ICycleAware.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+import java.util.Queue;
+
+
+/**
+ * @author oyapeo
+ *
+ */
+public interface ICycleAware {
+ /**
+ * Interface to allow functionalities to execute before a round starts
+ * @param taskQueue stores newly created tasks during prepartion.
+ * The taskQueue is specific to the domain
+ * processing requirements.
+ */
+ public void preRound(Queue<Task> taskQueue);
+ public void postRound(Queue<Task> taskQueue);
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ISopTask.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/ISopTask.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ISopTask.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/ISopTask.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,13 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+/**
+ * @author admin
+ *
+ */
+public interface ISopTask extends Runnable {
+ public boolean isNull();
+
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Processor.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Processor.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Processor.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Processor.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,97 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.LockSupport;
+
+/**
+ * @author admin
+ *
+ */
+public class Processor {
+ private final boolean[] demQueueIndices;
+ private final ConcurrentLinkedQueue<ISopTask>[] queues;
+ private boolean started=false;
+ private final ExecutorService es;//processing unit
+ private int threadSize=2;//keep size to number of
+ private final AtomicBoolean pauseProcess = new AtomicBoolean(false);
+ /**controls pausing the processor*/
+ private Thread processThread;
+ private final AtomicLong cc = new AtomicLong(0); //cycle count
+ private SopEventListener sel;
+ private static Processor instance;
+ /**
+ *
+ */
+ private Processor() {
+ // TODO Auto-generated constructor stub
+ demQueueIndices = TaskInvocator.getInstance().getQueueDemIndices();
+ queues = TaskInvocator.getInstance().getQueues();
+ es = Executors.newFixedThreadPool(threadSize);
+
+ }
+
+ public final static Processor getInstance() {
+ if(instance == null) {
+ instance = new Processor();
+ instance.init();
+ }
+ return instance;
+ }
+
+ /**
+ * TODO
+ */
+ private void init(){
+ Thread thread = new Thread(){ public void run(){ process();}};
+ thread.start();
+ }
+
+ /**
+ * get all the task queues
+ */
+ private void process(){
+ final int queueLen = queues.length;
+ final ISopTask nullTask = new ISopTask(){
+ public boolean isNull(){return true;}
+ public void run(){}
+ };
+ started = true;
+ while(started) {
+ cc.incrementAndGet();//demarcate
+ for(int ci=0; ci < queueLen; ci++){// demarcate time
+ if(demQueueIndices[ci]){
+ queues[ci].offer(nullTask);//add null task
+ }
+ }
+ for(int ci=0; ci < queueLen; ci++){
+ while(!queues[ci].isEmpty()){
+ final ISopTask sopTask = queues[ci].poll();
+ boolean isTimeDemarcation = queues[ci].peek().isNull();
+ //don't worry about waiting for all the submitted task to be completed before doing next. TODO keep an eye
+ if(!isTimeDemarcation){ es.execute(sopTask);}
+ else{ break; }
+ }
+ }
+ if(pauseProcess.get()){//pause
+ processThread = Thread.currentThread();
+ LockSupport.park();
+ }else {
+ try{Thread.sleep(300);}
+ catch(InterruptedException ie){ sel.consume(new SopEvent<Throwable>(this, ie)); }
+ }
+ }
+ }
+
+
+ public long getCc(){ return cc.get(); }
+
+ public void pause(){ pauseProcess.set(true); }
+ public void unPause(){ pauseProcess.set(false); LockSupport.unpark(processThread); }
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEvent.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEvent.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEvent.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEvent.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+import java.util.EventObject;
+
+/**
+ * @author admin
+ *
+ */
+public class SopEvent<E extends Object> extends EventObject {
+ private static final long serialVersionUID = 8449936176355578066L;
+ private E event;
+
+ public SopEvent(Object source) {
+ super(source);
+ }
+
+ public SopEvent(Object source, E _event) {
+ super(source);
+ event = _event;
+ }
+
+ public E getEvent() {
+ return event;
+ }
+ public void setEvent(E event) {
+ this.event = event;
+ }
+
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEventListener.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopEventListener.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEventListener.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopEventListener.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+import java.util.EventListener;
+
+/**
+ * @author admin
+ *
+ */
+public class SopEventListener implements EventListener {
+ public void consume(SopEvent se){
+ //TODO
+ }
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopSys.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopSys.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopSys.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopSys.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+/**
+ * @author admin
+ *
+ */
+public class SopSys {
+
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTask.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTask.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTask.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTask.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,28 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+/**
+ * @author admin
+ *
+ */
+public class SopTask implements ISopTask {
+ private boolean isNull;
+ /* (non-Javadoc)
+ * @see org.sf.net.sopf.kernel.ISopTask#isNull()
+ */
+ public boolean isNull() {
+ // TODO Auto-generated method stub
+ return isNull;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTaskType.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/SopTaskType.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTaskType.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/SopTaskType.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,21 @@
+package org.sf.net.sopf.kernel;
+
+/**
+ * Hello world!
+ *
+ */
+public enum SopTaskType
+{
+ /**
+ * AP=> Action-Potential, GET=> receive synaptic signal
+ * SEND=> send synaptic signal,
+ * determine-mp, determine-ku_facil
+ * determine ku_ltp
+ */
+ AP(1), GET(3), SEND(4);
+ private int tnum;
+
+ private SopTaskType(int _stt){
+ tnum = _stt;
+ }
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Task.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/Task.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Task.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/Task.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,11 @@
+package org.sf.net.sopf.kernel;
+
+import java.util.Queue;
+
+public interface Task {
+ public long getCreateTime();
+ public int getSelectorValue();
+ public int getType();
+ public int[] getProbableSubTypes();
+ public void execute(Queue<Task> createdTaskQueue);
+}
Copied: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/TaskInvocator.java (from rev 10, trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/TaskInvocator.java)
===================================================================
--- trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/TaskInvocator.java (rev 0)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/TaskInvocator.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -0,0 +1,82 @@
+/**
+ *
+ */
+package org.sf.net.sopf.kernel;
+
+import java.util.ArrayList;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import org.apache.commons.pool.impl.GenericKeyedObjectPool;
+import org.sf.net.sopf.kernel.task.ApTask;
+
+import com.intellinova.sop.model.core.model.Neuron;
+
+/**
+ * @author admin
+ *
+ */
+public class TaskInvocator {
+ SopEventListener sel;
+
+ ConcurrentLinkedQueue<SopTask> apq;
+ ConcurrentLinkedQueue<SopTask> sendq;
+ ConcurrentLinkedQueue<SopTask> getq;
+
+ GenericKeyedObjectPool keyedObjPool;
+
+
+
+ private static TaskInvocator instance;
+
+ /**
+ *
+ */
+ private TaskInvocator() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public final static TaskInvocator getInstance(){
+ if(instance == null) {
+ instance = new TaskInvocator(); //TODO
+ }
+ return instance;
+ }
+
+ public void doAp(Neuron neuron){
+ try{
+ ApTask task = (ApTask) keyedObjPool.borrowObject(SopTaskType.AP);
+ //TODO set the appropriate fields
+ apq.offer(task);
+ }
+ catch (Exception e) {
+ sel.consume(new SopEvent<Throwable>(this, e));
+ }
+
+ }
+
+ /**
+ * Returns all the queues involved, their order is specific
+ * and is matched by the other methods that return arrays.
+ * This method is expected to be called ONCE
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public final ConcurrentLinkedQueue<ISopTask>[] getQueues() {
+ ConcurrentLinkedQueue[] queues = new ConcurrentLinkedQueue[]{
+ apq, sendq, getq
+ };//TODO update queue list
+ return queues;
+ }
+
+ /**
+ * Indicates queues that should be demarcated by time,
+ * some queues don't need time-demarcation.
+ * This method is expected to be called ONCE
+ * @return
+ */
+ public final boolean[] getQueueDemIndices() {
+ boolean[] demQueueIndices = new boolean[]{true, true, true, true, true, true, true};//TODO update setting
+ return demQueueIndices;
+ }
+
+}
Modified: trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/task/ApTask.java
===================================================================
--- trunk/sopf/kernel/src/main/java/com/intellinova/sop/kernel/task/ApTask.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/main/java/org/sf/net/sopf/kernel/task/ApTask.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,10 +1,10 @@
/**
*
*/
-package com.intellinova.sop.kernel.task;
+package org.sf.net.sopf.kernel.task;
-import com.intellinova.sop.kernel.ISopTask;
-import com.intellinova.sop.kernel.SopTask;
+import org.sf.net.sopf.kernel.ISopTask;
+import org.sf.net.sopf.kernel.SopTask;
/**
* @author admin
Modified: trunk/sopf/kernel/src/test/java/org/sf/net/sopf/kernel/AppTest.java
===================================================================
--- trunk/sopf/kernel/src/test/java/com/intellinova/sop/kernel/AppTest.java 2009-05-15 11:50:23 UTC (rev 10)
+++ trunk/sopf/kernel/src/test/java/org/sf/net/sopf/kernel/AppTest.java 2009-05-15 11:53:31 UTC (rev 11)
@@ -1,4 +1,4 @@
-package com.intellinova.sop.kernel;
+package org.sf.net.sopf.kernel;
import junit.framework.Test;
import junit.framework.TestCase;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|