Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java')
-rw-r--r--runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java108
1 files changed, 100 insertions, 8 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java b/runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java
index 3219c7fda..498f6732e 100644
--- a/runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java
+++ b/runtime/org.eclipse.etrice.runtime.java/src/org/eclipse/etrice/runtime/java/modelbase/SubSystemClassBase.java
@@ -8,11 +8,14 @@
package org.eclipse.etrice.runtime.java.modelbase;
+import java.util.Collection;
+import java.util.List;
+
import org.eclipse.etrice.runtime.java.config.IVariableService;
import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IMessageService;
import org.eclipse.etrice.runtime.java.messaging.IRTObject;
-import org.eclipse.etrice.runtime.java.messaging.MessageService;
import org.eclipse.etrice.runtime.java.messaging.RTObject;
import org.eclipse.etrice.runtime.java.messaging.RTServices;
import org.eclipse.etrice.runtime.java.modelbase.RTSystemProtocol.RTSystemConjPort;
@@ -24,7 +27,7 @@ import org.eclipse.etrice.runtime.java.modelbase.RTSystemProtocol.RTSystemConjPo
* @author Henrik Rentz-Reichert
*
*/
-public abstract class SubSystemClassBase extends RTObject implements IEventReceiver{
+public abstract class SubSystemClassBase extends RTObject implements IEventReceiver, IInterfaceItemOwner {
// variable service (is only instantiated if needed)
protected IVariableService variableService = null;
@@ -35,6 +38,9 @@ public abstract class SubSystemClassBase extends RTObject implements IEventRecei
//--------------------- interface item IDs
protected static final int IFITEM_RTSystemPort = 0;
+ private PathToThread path2thread = new PathToThread();
+ private PathToPeers path2peers = new PathToPeers();
+
// for tests only
private TestSemaphore terminateSem=null;
private int terminateCode;
@@ -105,10 +111,7 @@ public abstract class SubSystemClassBase extends RTObject implements IEventRecei
public void destroy() {
System.out.println("*** MainComponent "+getInstancePath()+"::destroy ***");
- for (IRTObject child : getChildren()) {
- if (child instanceof ActorClassBase)
- ((ActorClassBase) child).destroy();
- }
+ super.destroy();
System.out.println("=== done destroy actor instances");
DebuggingService.getInstance().getAsyncLogger().close();
@@ -116,10 +119,10 @@ public abstract class SubSystemClassBase extends RTObject implements IEventRecei
System.out.println("=== done close loggers");
RTServices.getInstance().destroy();
- System.out.println("=== done destroy RTServices");
+ System.out.println("=== done destroy RTServices\n\n\n");
}
- public MessageService getMsgService(int idx) {
+ public IMessageService getMsgService(int idx) {
return RTServices.getInstance().getMsgSvcCtrl().getMsgSvc(idx);
}
@@ -163,4 +166,93 @@ public abstract class SubSystemClassBase extends RTObject implements IEventRecei
public IVariableService getVariableService() {
return variableService;
}
+
+ /**
+ * map a path to a thread id
+ * @param path
+ * @param thread
+ */
+ public void addPathToThread(String path, int thread) {
+ path2thread.put(path, thread);
+ }
+
+ /**
+ * get thread for path
+ * @param path
+ * @return
+ */
+ public int getThreadForPath(String path) {
+ Integer thread = path2thread.get(path);
+ if (thread==null)
+ return -1;
+
+ return thread;
+ }
+
+ /**
+ * add a peer for the given path
+ * @param path
+ * @param peer
+ */
+ public void addPathToPeer(String path, String peer) {
+ path2peers.put(path, peer);
+ }
+
+ /**
+ * add a collection of peers to the given path
+ * @param path
+ * @param peers
+ */
+ public void addPathToPeers(String path, Collection<String> peers) {
+ path2peers.put(path, peers);
+ }
+
+ /**
+ * add several peers to the given path
+ * @param path
+ * @param peers
+ */
+ public void addPathToPeers(String path, String... peers) {
+ path2peers.put(path, peers);
+ }
+
+ /**
+ * @param path
+ * @return list of peer paths
+ */
+ public List<String> getPeersForPath(String path) {
+ return path2peers.get(path);
+ }
+
+ /**
+ * Clears thread and peer mappings.
+ */
+ public void resetAll() {
+ path2peers.clear();
+ path2thread.clear();
+ }
+ /**
+ * @param optionalActorClass
+ * @param instanceActorClass
+ * @return
+ */
+ abstract public IOptionalActorFactory getFactory(String optionalActorClass, String instanceActorClass);
+
+ /* (non-Javadoc)
+ * @see org.eclipse.etrice.runtime.java.modelbase.IInterfaceItemOwner#getEventReceiver()
+ */
+ @Override
+ public IEventReceiver getEventReceiver() {
+ return this;
+ }
+
+ @Override
+ public int getThread() {
+ return 0;
+ }
+
+ @Override
+ public IReplicatedInterfaceItem getSystemPort() {
+ return RTSystemPort;
+ }
}

Back to the top