From d9fbc75b17778459ebebc071396f918f4fe969dc Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Thu, 30 Jul 2015 18:12:14 +0200
Subject: [PATCH] prepared DynamicActuator

---
 .../java/teetime/framework/DynamicActuator.java     | 13 +++++++++++--
 .../util/framework/concurrent/SignalingCounter.java |  5 +++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/main/java/teetime/framework/DynamicActuator.java b/src/main/java/teetime/framework/DynamicActuator.java
index 2cb2423c..ee63f6d6 100644
--- a/src/main/java/teetime/framework/DynamicActuator.java
+++ b/src/main/java/teetime/framework/DynamicActuator.java
@@ -15,6 +15,7 @@
  */
 package teetime.framework;
 
+import teetime.util.framework.concurrent.SignalingCounter;
 
 public class DynamicActuator {
 
@@ -30,10 +31,14 @@ public class DynamicActuator {
 	}
 
 	public Runnable startWithinNewThread(final Stage previousStage, final Stage stage) {
-		// SignalingCounter runtimeCounter = previousStage.owningContext.getThreadService().getRunnableCounter();
-		// SignalingCounter newCounter = stage.owningContext.getThreadService().getRunnableCounter();
+		SignalingCounter runtimeCounter = previousStage.owningContext.getThreadService().getRunnableCounter();
+		SignalingCounter newCounter = stage.owningContext.getThreadService().getRunnableCounter();
 		// runtimeCounter.inc(newCounter);
 
+		// stage.logger.error(stage.owningContext.getThreadService().getRunnableCounter().toString());
+
+		// !!! stage.owningContext = XXX.owningContext !!!
+
 		Runnable runnable = wrap(stage);
 		Thread thread = new Thread(runnable);
 
@@ -42,6 +47,10 @@ public class DynamicActuator {
 
 		thread.start();
 
+		// requirements:
+		// 1. all new threads from stage must be known to the global context
+		// 2. number of active threads must be increased by the stage
+
 		if (runnable instanceof RunnableConsumerStage) {
 			// do nothing
 		} else if (runnable instanceof RunnableProducerStage) {
diff --git a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
index 64deae6a..3a418506 100644
--- a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
+++ b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
@@ -65,4 +65,9 @@ public class SignalingCounter {
 		counter += otherCounter.counter;
 		conditionalNotifyAll(counter);
 	}
+
+	@Override
+	public String toString() {
+		return "counter: " + counter + ", " + super.toString();
+	}
 }
-- 
GitLab