summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schuetz2013-04-10 02:00:18 (EDT)
committerThomas Schuetz2013-04-10 02:00:18 (EDT)
commitbdeb20297bf7a180e1ade30970f72696f40204c2 (patch)
tree94e340624c9309b03b2f97a4ed832122657e3198
parent95537aab385a67c1423fc8961763dd8b43c3f836 (diff)
downloadorg.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.zip
org.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.tar.gz
org.eclipse.etrice-bdeb20297bf7a180e1ade30970f72696f40204c2.tar.bz2
[runtime.c, generator.c] added WakeupService and changes for polled
execution for multi threading Change-Id: Ic911d89af77150210ce9e7b1ba023a8acfdfc5e3
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/gen_MassiveMultiThreading.launch14
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etmap14
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etphys40
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.room248
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etmap4
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etphys16
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.room19
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.behavior (renamed from examples/org.eclipse.etrice.generator.c.reference/model/diagrams/generic_fsm_gen.AC.behavior)36
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.structure (renamed from examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.structure)36
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.behavior202
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.structure67
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.behavior106
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.structure53
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.SubSys.structure801
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.behavior106
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.structure (renamed from examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.ReceiverManual.structure)12
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.behavior (renamed from examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.behavior)68
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.structure (renamed from examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SenderManual.structure)27
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.behavior393
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.structure4
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.behavior21
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.structure4
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SubSys.structure14
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.c (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.c)25
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.h (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.h)8
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.c185
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.h (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.h)30
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.c226
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.h64
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.c (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.c)101
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.h (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.h)31
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.c89
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.h54
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.c184
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.h60
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.c (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.c)88
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.h61
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.c (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.c)33
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.h (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.h)0
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Disp.h235
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Inst.h333
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Runner.c (renamed from examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Runner.c)0
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.c30
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.h40
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.c24
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.h32
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Disp.h42
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Inst.h79
-rw-r--r--examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq2510
-rw-r--r--plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java1
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend34
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java694
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/.cproject18
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/base/etMemory_FreeList.h3
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/base/etQueue.c1
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.c3
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageReceiver.h1
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c10
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.h31
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.c31
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.h34
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.c33
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.h42
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/modelbase/etRTSystemServicesProtocol.h18
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/platform/etPlatform.h43
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.c17
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.h18
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.c14
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.h32
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h8
-rw-r--r--runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c8
71 files changed, 6078 insertions, 1885 deletions
diff --git a/examples/org.eclipse.etrice.generator.c.reference/gen_MassiveMultiThreading.launch b/examples/org.eclipse.etrice.generator.c.reference/gen_MassiveMultiThreading.launch
new file mode 100644
index 0000000..dd69771
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/gen_MassiveMultiThreading.launch
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.etrice.generator.launch.c.launchConfigurationType">
+<booleanAttribute key="Debug" value="true"/>
+<booleanAttribute key="GenDocumentation" value="false"/>
+<booleanAttribute key="GenInstanceDiagram" value="false"/>
+<stringAttribute key="GenModelPath" value=""/>
+<booleanAttribute key="Lib" value="false"/>
+<booleanAttribute key="MSC" value="true"/>
+<listAttribute key="ModelFiles">
+<listEntry value="${workspace_loc:/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etmap}"/>
+</listAttribute>
+<booleanAttribute key="SaveGenModel" value="false"/>
+<booleanAttribute key="Verbose" value="false"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etmap b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etmap
new file mode 100644
index 0000000..131a08f
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etmap
@@ -0,0 +1,14 @@
+MappingModel MassiveMultiThreading {
+
+ import cGenRef from "MassiveMultiThreading.room"
+ import cGenRef from "MassiveMultiThreading.etphys"
+
+ Mapping MassiveMultiThreading.LS -> MassiveMultiThreading.Sys {
+ SubSystemMapping sys1 -> node1 {
+ ThreadMapping logical_thread1 -> PhysicalThread1
+ ThreadMapping logical_thread2 -> PhysicalThread2
+ ThreadMapping logical_thread3 -> PhysicalThread2
+ ThreadMapping logical_thread4 -> PhysicalThread3
+ }
+ }
+} \ No newline at end of file
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etphys b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etphys
new file mode 100644
index 0000000..9a11626
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.etphys
@@ -0,0 +1,40 @@
+PhysicalModel MassiveMultiThreading {
+
+ PhysicalSystem Sys {
+ NodeRef node1: PC
+ }
+
+ NodeClass PC {
+ runtime = PC
+ priomin = 1
+ priomax = 10
+
+ DefaultThread PhysicalThread1 {
+ execmode = blocked
+ prio = 1
+ stacksize = 1024
+ msgblocksize = 64
+ msgpoolsize = 50
+ }
+
+ Thread PhysicalThread2 {
+ execmode = blocked
+ prio = 5
+ stacksize = 1024
+ msgblocksize = 64
+ msgpoolsize = 50
+ }
+
+ Thread PhysicalThread3 {
+ execmode = blocked
+ prio = 10
+ stacksize = 1024
+ msgblocksize = 64
+ msgpoolsize = 50
+ }
+ }
+
+ RuntimeClass PC {
+ model = multiThreaded
+ }
+} \ No newline at end of file
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.room b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.room
new file mode 100644
index 0000000..924cc65
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/MassiveMultiThreading.room
@@ -0,0 +1,248 @@
+RoomModel MassiveMultiThreading {
+
+ import room.basic.types.* from "Types.room"
+
+ LogicalSystem LS {
+ SubSystemRef sys1: SubSys
+ }
+
+ SubSystemClass SubSys {
+ ActorRef tester: Tester
+ ActorRef fork: Fork
+ ActorRef redirect1: Redirect
+ ActorRef redirect2: Redirect
+ ActorRef redirect3: Redirect
+ ActorRef redirect4: Redirect
+ ActorRef redirect5: Redirect
+ ActorRef redirect6: Redirect
+ ActorRef redirect7: Redirect
+ ActorRef redirect8: Redirect
+ ActorRef redirect9: Redirect
+ ActorRef redirect10: Redirect
+ ActorRef join: Join
+ ActorRef supervisor: Supervisor
+ Binding tester.outport and fork.inport
+ Binding tester.inport and join.outport
+ Binding supervisor.application and join.security
+ Binding fork.broadcast and redirect1.inport
+ Binding fork.broadcast and redirect2.inport
+ Binding fork.broadcast and redirect3.inport
+ Binding fork.broadcast and redirect4.inport
+ Binding fork.broadcast and redirect5.inport
+ Binding fork.broadcast and redirect6.inport
+ Binding fork.broadcast and redirect7.inport
+ Binding fork.broadcast and redirect8.inport
+ Binding fork.broadcast and redirect9.inport
+ Binding fork.broadcast and redirect10.inport
+ Binding join.inport and redirect1.outport
+ Binding join.inport and redirect2.outport
+ Binding join.inport and redirect3.outport
+ Binding join.inport and redirect4.outport
+ Binding join.inport and redirect5.outport
+ Binding join.inport and redirect6.outport
+ Binding join.inport and redirect7.outport
+ Binding join.inport and redirect8.outport
+ Binding join.inport and redirect9.outport
+ Binding join.inport and redirect10.outport
+
+ LogicalThread logical_thread2
+ LogicalThread logical_thread1
+ LogicalThread logical_thread3
+ LogicalThread logical_thread4
+
+ ActorInstanceMapping tester -> logical_thread1
+ ActorInstanceMapping fork -> logical_thread2
+ ActorInstanceMapping redirect1 -> logical_thread2
+ ActorInstanceMapping redirect2 -> logical_thread3
+ ActorInstanceMapping join -> logical_thread3
+ ActorInstanceMapping supervisor -> logical_thread4
+ }
+
+ ActorClass Tester {
+ Interface {
+ conjugated Port outport: CommunicationProtocol
+ Port inport: CommunicationProtocol
+ }
+ Structure {
+ external Port outport
+ external Port inport
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Started { }
+ Transition tr0: Started -> Done {
+ triggers {
+ <sendData: inport>
+ }
+ }
+ State Started {
+ entry {
+ "outport.sendData();"
+ }
+ }
+ State Done {
+ entry {
+ "etLogger_logInfo(\"+++ Test Done +++\");"
+ }
+ }
+ }
+ }
+ }
+
+ ActorClass Fork {
+ Interface {
+ conjugated Port broadcast [*]: CommunicationProtocol
+ Port inport: CommunicationProtocol
+ }
+ Structure {
+ external Port broadcast
+ external Port inport
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Fork { }
+ Transition tr0: Fork -> Fork {
+ triggers {
+ <sendData: inport>
+ }
+ action {
+ "broadcast.sendData();"
+ }
+ }
+ State Fork
+ }
+ }
+ }
+
+ ActorClass Redirect {
+ Interface {
+ Port inport: CommunicationProtocol
+ conjugated Port outport: CommunicationProtocol
+ }
+ Structure {
+ external Port inport
+ external Port outport
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Redirect { }
+ Transition tr0: Redirect -> Redirect {
+ triggers {
+ <sendData: inport>
+ }
+ action {
+ "outport.sendData();"
+ "etLogger_logInfo(\"+++ Redirect: sendData +++\");"
+ }
+ }
+ State Redirect
+ }
+ }
+ }
+
+ ActorClass Join {
+ Interface {
+ Port inport [*]: CommunicationProtocol
+ conjugated Port outport: CommunicationProtocol
+ conjugated Port security: SecurityProtocol
+ }
+ Structure {
+ external Port inport
+ external Port outport
+ external Port security
+ Attribute counter: int32
+
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Count {
+ action {
+ "counter=0;"
+ }
+ }
+ Transition tr0: Count -> cp cp0 {
+ triggers {
+ <pong: security>
+ }
+ action {
+ "counter++;"
+ "etLogger_logInfo(\"+++ Join: received pong +++\");"
+ }
+ }
+ Transition tr1: cp cp0 -> Done {
+ action {
+ "outport.sendData();"
+ }
+ }
+ Transition tr2: cp cp0 -> Count {
+ cond {
+ "counter<10"
+ }
+ }
+ Transition tr3: Count -> Count {
+ triggers {
+ <sendData: inport>
+ }
+ action {
+ "security.ping();"
+ "etLogger_logInfo(\"+++ Join: sent ping +++\");"
+ }
+ }
+ ChoicePoint cp0
+ State Count
+ State Done
+ }
+ }
+ }
+
+ ActorClass Supervisor {
+ Interface {
+ Port application: SecurityProtocol
+ }
+ Structure {
+ external Port application
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> PingPongActive { }
+ Transition tr0: PingPongActive -> PingPongActive {
+ triggers {
+ <ping: application>
+ }
+ action {
+ "application.pong();"
+ }
+ }
+ State PingPongActive
+ }
+ }
+ }
+
+ ProtocolClass CommunicationProtocol {
+ incoming {
+ Message sendData()
+ }
+ }
+
+ ProtocolClass SecurityProtocol {
+ incoming {
+ Message ping()
+ }
+ outgoing {
+ Message pong()
+ }
+ }
+
+ DataClass DataClass1 {
+ Attribute Attr1: int32
+ Attribute ComplexAttr: DataClass2
+ Attribute Attr3: float32
+ }
+
+ DataClass DataClass2 {
+ Attribute Attr1: int32
+ Attribute Attr2: float32
+ Attribute Attr3: int32
+ }
+
+} \ No newline at end of file
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etmap b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etmap
index 70b2ce5..0892b16 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etmap
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etmap
@@ -6,8 +6,8 @@ MappingModel cgenRef {
Mapping cGenRef.LS -> cGenRef.Sys {
SubSystemMapping sys1 -> node1 {
ThreadMapping dflt_thread -> PhysicalThread1
- //ThreadMapping other_thread -> PhysicalThread1
- ThreadMapping other_thread -> PhysicalThread2
+ ThreadMapping other_thread -> PhysicalThread1
+ //ThreadMapping other_thread -> PhysicalThread2
}
// SubSystemMapping sys2 -> node2 {
// ThreadMapping dflt_thread -> PhysicalThread1
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etphys b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etphys
index fbf9f42..7e72ece 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etphys
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.etphys
@@ -14,17 +14,17 @@ PhysicalModel cGenRef {
execmode = blocked
prio = 5
stacksize = 1024
- msgblocksize = 64
+ msgblocksize = 32
msgpoolsize = 5
}
- Thread PhysicalThread2 {
- execmode = blocked
- prio = 5
- stacksize = 1024
- msgblocksize = 64
- msgpoolsize = 3
- }
+// Thread PhysicalThread2 {
+// execmode = blocked
+// prio = 5
+// stacksize = 1024
+// msgblocksize = 64
+// msgpoolsize = 3
+// }
}
RuntimeClass PC {
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.room b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.room
index cbbff79..163f89b 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.room
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/cGenRef.room
@@ -8,7 +8,7 @@ RoomModel cGenRef {
SubSystemClass SubSys {
ActorRef Sender: Sender
- ActorRef Receiver: Receiver
+ ActorRef Receiver: Receiver
Binding Sender.dataOut and Receiver.dataIn
LogicalThread dflt_thread
@@ -36,8 +36,7 @@ RoomModel cGenRef {
// Binding ref3.dataIn and ref1.dataOut
// }
-
- ActorClass Receiver {
+ async ActorClass Receiver {
Interface {
Port dataIn: CommunicationProtocol
}
@@ -149,12 +148,12 @@ RoomModel cGenRef {
}
}
- ActorClass Sender {
+ async ActorClass Sender {
Interface {
- conjugated Port dataOut: CommunicationProtocol
+ conjugated Port dataOut: CommunicationProtocol
}
Structure {
- external Port dataOut
+ external Port dataOut
Attribute counter: int32
}
@@ -197,14 +196,18 @@ RoomModel cGenRef {
ProtocolClass CommunicationProtocol {
incoming {
Message sendData()
-
}
outgoing {
Message receivedData()
}
}
-
+ ProtocolClass etSystemProtocol {
+ incoming {
+ Message poll()
+ }
+ }
+
DataClass DataClass1 {
usercode1 {"// usercode1"}
usercode2 {"// usercode2"}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/generic_fsm_gen.AC.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.behavior
index 989f6f7..0a2feb8 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/generic_fsm_gen.AC.behavior
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.behavior
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.behavior" name="Behavior of AC" showGuides="true" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Fork" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
- <businessObjects href="../generic_fsm_gen.room#ActorClass:AC"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Fork"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="sg"/>
@@ -11,27 +11,27 @@
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../generic_fsm_gen.room#StateGraph:AC$sg"/>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Fork$sg"/>
</link>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="115" y="109">
<graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../generic_fsm_gen.room#StateGraph:AC$sg"/>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Fork$sg"/>
</link>
<anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
</children>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="370" y="80">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="297" y="160">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
<graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
@@ -53,11 +53,11 @@
</graphicsAlgorithmChildren>
</graphicsAlgorithm>
<link>
- <businessObjects href="../generic_fsm_gen.room#BaseState:AC$state0"/>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Fork$Fork"/>
</link>
<anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="state0"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Fork"/>
</children>
</children>
</children>
@@ -65,37 +65,37 @@
<properties key="obj-type" value="trans"/>
<graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
<link>
- <businessObjects href="../generic_fsm_gen.room#InitialTransition:AC$initial"/>
+ <businessObjects href="../MassiveMultiThreading.room#InitialTransition:Fork$initial"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
</graphicsAlgorithm>
</connectionDecorators>
<connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
</connectionDecorators>
</connections>
<connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
<properties key="obj-type" value="trans"/>
<graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
<link>
- <businessObjects href="../generic_fsm_gen.room#TriggeredTransition:AC$tr0"/>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Fork$tr0"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
</graphicsAlgorithm>
</connectionDecorators>
<connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;m1:fct>"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;sendData:inpor..."/>
</connectionDecorators>
- <bendpoints x="470" y="285"/>
- <bendpoints x="470" y="285"/>
+ <bendpoints x="397" y="365"/>
+ <bendpoints x="459" y="365"/>
</connections>
<colors red="227" green="238" blue="249"/>
<colors red="255" green="255" blue="255"/>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.structure
index 11358bf..ab2c269 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Fork.structure
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of Broadcast" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Fork" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:Broadcast"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Fork"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="cls"/>
@@ -11,37 +11,37 @@
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:Broadcast"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Fork"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
- <properties key="item-kind" value=""/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="266">
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ <properties key="item-kind" value="CM"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="398" y="500">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="25" y="15"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#Port:Broadcast$dataIn"/>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Fork$broadcast"/>
</link>
- <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataIn"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="broadcast"/>
</children>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
- <properties key="item-kind" value="CM"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="25" y="15"/>
- <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="400">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#Port:Broadcast$dataOut"/>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Fork$inport"/>
</link>
- <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataOut"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.behavior
new file mode 100644
index 0000000..3cfab23
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.behavior
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Join" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@children.0/@children.3/@link //@connections.1/@link //@children.0/@children.4/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Join"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Join$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="78" y="84">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Join$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="301" y="110">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Join$Count"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1 //@connections.4" incomingConnections="//@connections.0 //@connections.3 //@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Count"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="311" y="233">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ChoicePoint:Join$cp0"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2 //@connections.3" incomingConnections="//@connections.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="50" height="25" y="12" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="C"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="270" y="333">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Join$Done"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Done"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#InitialTransition:Join$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Join$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;pong:security>"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.4/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ContinuationTransition:Join$tr1"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: [else]"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#CPBranchTransition:Join$tr2"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [counter&lt;10]"/>
+ </connectionDecorators>
+ <bendpoints x="567" y="269"/>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Join$tr3"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;sendData:inpor..."/>
+ </connectionDecorators>
+ <bendpoints x="573" y="180"/>
+ <bendpoints x="548" y="153"/>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.structure
new file mode 100644
index 0000000..22ad3b1
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Join.structure
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Join" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Join"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Join"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="M"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="266">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="25" y="15"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="800" y="239">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$security"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="security"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.behavior
new file mode 100644
index 0000000..3a257aa
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.behavior
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Redirect" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Redirect"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Redirect$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="123" y="84">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Redirect$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="375" y="183">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Redirect$Redirect"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Redirect"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#InitialTransition:Redirect$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Redirect$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;sendData:inpor..."/>
+ </connectionDecorators>
+ <bendpoints x="475" y="388"/>
+ <bendpoints x="516" y="388"/>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.structure
new file mode 100644
index 0000000..9d0ca20
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Redirect.structure
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Redirect" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Redirect"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Redirect"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="M"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="266">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="25" y="15"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="CM"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="532">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="25" y="15"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.SubSys.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.SubSys.structure
new file mode 100644
index 0000000..863544c
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.SubSys.structure
@@ -0,0 +1,801 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSys" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.0/@children.5/@link //@children.0/@children.1/@children.1/@link //@children.0/@children.0/@children.1/@link //@children.0/@children.0/@children.2/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.2/@children.1/@link //@children.0/@children.2/@children.2/@link //@children.0/@children.3/@children.1/@link //@children.0/@children.3/@children.2/@link //@children.0/@children.4/@children.1/@link //@children.0/@children.4/@children.2/@link //@connections.0/@link //@connections.1/@link //@children.0/@children.4/@children.3/@link //@children.0/@children.5/@children.1/@link //@connections.2/@link //@connections.3/@link //@children.0/@children.6/@link //@children.0/@children.6/@children.1/@link //@children.0/@children.6/@children.2/@link //@children.0/@children.7/@link //@children.0/@children.7/@children.1/@link //@children.0/@children.7/@children.2/@link //@children.0/@children.8/@link //@children.0/@children.8/@children.1/@link //@children.0/@children.8/@children.2/@link //@children.0/@children.9/@link //@children.0/@children.9/@children.1/@link //@children.0/@children.9/@children.2/@link //@children.0/@children.10/@link //@children.0/@children.10/@children.1/@link //@children.0/@children.10/@children.2/@link //@children.0/@children.11/@link //@children.0/@children.11/@children.1/@link //@children.0/@children.11/@children.2/@link //@children.0/@children.12/@link //@children.0/@children.12/@children.1/@link //@children.0/@children.12/@children.2/@link //@children.0/@children.13/@link //@children.0/@children.13/@children.1/@link //@children.0/@children.13/@children.2/@link //@connections.4/@link //@connections.5/@link //@connections.6/@link //@connections.7/@link //@connections.8/@link //@connections.9/@link //@connections.10/@link //@connections.11/@link //@connections.12/@link //@connections.13/@link //@connections.14/@link //@connections.15/@link //@connections.16/@link //@connections.17/@link //@connections.18/@link //@connections.19/@link //@connections.20/@link //@connections.21/@link //@connections.22/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SubSystemClass:SubSys"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="1042" height="580" x="-35" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="962" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="962" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SubSystemClass:SubSys"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="810" height="121" x="197" y="35">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="750" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="720" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="715" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$tester"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="750" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="tester&#xA;(Tester)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="200" y="61">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Tester$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="712" y="61">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Tester$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="196" height="121" x="419" y="139">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="136" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="106" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="101" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$fork"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="136" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="fork&#xA;(Fork)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="CM"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="67" y="61">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="23" y="19"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Fork$broadcast"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3 //@connections.5 //@connections.6 //@connections.7 //@connections.8 //@connections.9 //@connections.10 //@connections.11 //@connections.12" incomingConnections="//@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="broadcast"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="68">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Fork$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="166" height="121" x="19" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="106" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="76" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="71" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect1"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="106" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect1&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="35">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.2/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="63" y="61">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.13" referencedGraphicsAlgorithm="//@children.0/@children.2/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="166" height="121" x="106" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="106" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="76" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="71" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect2"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="106" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect2&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="35">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.3/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="60" y="61">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.14" referencedGraphicsAlgorithm="//@children.0/@children.3/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="712" height="121" x="282" y="392">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="652" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="622" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="617" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$join"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="652" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="join&#xA;(Join)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="M"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="216">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="23" y="19"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.13 //@connections.14 //@connections.15 //@connections.16 //@connections.17 //@connections.18 //@connections.19 //@connections.20 //@connections.21 //@connections.22" referencedGraphicsAlgorithm="//@children.0/@children.4/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="619">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.4/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_RIGHT" value="outport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" y="35">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Join$security"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.4/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" value="security"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="174" height="121" x="48" y="392">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="114" height="61" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="84" y="31"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="79" y="46"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$supervisor"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.5/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="114" height="61" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="supervisor&#xA;(Supervisor)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="114" y="33">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Supervisor$application"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.5/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_RIGHT" value="application"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="162" height="122" x="181" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="102" height="62" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="72" y="32"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="67" y="47"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect3"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.6/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="102" height="62" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect3&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="33">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.6/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="50" y="62">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.15" referencedGraphicsAlgorithm="//@children.0/@children.6/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="162" height="122" x="265" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="102" height="62" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="72" y="32"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="67" y="47"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect4"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.7/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="102" height="62" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect4&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="33">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.6" referencedGraphicsAlgorithm="//@children.0/@children.7/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="50" y="62">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.16" referencedGraphicsAlgorithm="//@children.0/@children.7/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="162" height="122" x="351" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="102" height="62" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="72" y="32"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="67" y="47"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect5"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.8/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="102" height="62" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect5&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="33">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.7" referencedGraphicsAlgorithm="//@children.0/@children.8/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="50" y="62">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.17" referencedGraphicsAlgorithm="//@children.0/@children.8/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="162" height="122" x="436" y="248">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="102" height="62" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="72" y="32"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="67" y="47"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect6"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.9/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="102" height="62" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect6&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="33">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.8" referencedGraphicsAlgorithm="//@children.0/@children.9/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="50" y="62">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.18" referencedGraphicsAlgorithm="//@children.0/@children.9/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="164" height="123" x="526" y="247">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="104" height="63" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="74" y="33"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="69" y="48"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect7"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.10/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="104" height="63" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect7&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="34">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.9" referencedGraphicsAlgorithm="//@children.0/@children.10/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="51" y="63">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.19" referencedGraphicsAlgorithm="//@children.0/@children.10/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="164" height="123" x="613" y="247">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="104" height="63" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="74" y="33"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="69" y="48"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect8"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.11/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="104" height="63" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect8&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="34">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.10" referencedGraphicsAlgorithm="//@children.0/@children.11/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="45" y="63">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.20" referencedGraphicsAlgorithm="//@children.0/@children.11/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="164" height="123" x="692" y="247">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="104" height="63" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="74" y="33"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="69" y="48"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect9"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.12/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="104" height="63" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect9&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="34">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.11" referencedGraphicsAlgorithm="//@children.0/@children.12/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="45" y="63">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.21" referencedGraphicsAlgorithm="//@children.0/@children.12/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="164" height="123" x="778" y="247">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="104" height="63" x="30" y="30">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="74" y="33"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="69" y="48"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorRef:SubSys$redirect10"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.13/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="104" height="63" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="redirect10&#xA;(Redirect)"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="18">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.12" referencedGraphicsAlgorithm="//@children.0/@children.13/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="inport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="48" y="63">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Redirect$outport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.22" referencedGraphicsAlgorithm="//@children.0/@children.13/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@children.1/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$outport!tester-inport!fork"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@children.2/@anchors.0" end="//@children.0/@children.4/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!tester-outport!join"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.5/@children.1/@anchors.0" end="//@children.0/@children.4/@children.3/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$application!supervisor-security!join"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.2/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect1"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@children.1/@anchors.0" end="//@children.0/@children.1/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect2"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.6/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect3"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.7/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect4"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.8/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect5"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.9/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect6"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.10/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect7"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.11/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect8"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.12/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect9"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@children.1/@anchors.0" end="//@children.0/@children.13/@children.1/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$broadcast!fork-inport!redirect10"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.2/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect1"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.3/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect2"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.6/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect3"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.7/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect4"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.8/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect5"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.9/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect6"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.10/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect7"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.11/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect8"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.12/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect9"/>
+ </link>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@children.1/@anchors.0" end="//@children.0/@children.13/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Binding:SubSys$inport!join-outport!redirect10"/>
+ </link>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.behavior
new file mode 100644
index 0000000..b1472a2
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.behavior
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Supervisor" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="10" version="0.9.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Supervisor"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Supervisor$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="105" y="82">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Supervisor$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="161" height="90" x="360" y="141">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="101" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="76" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="50" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Supervisor$PingPongActive"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0 //@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="101" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="PingPongActive"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#InitialTransition:Supervisor$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Supervisor$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;ping:applicati..."/>
+ </connectionDecorators>
+ <bendpoints x="480" y="346"/>
+ <bendpoints x="538" y="346"/>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.ReceiverManual.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.structure
index b85bc13..3e93cdf 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.ReceiverManual.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Supervisor.structure
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of ReceiverManual" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Supervisor" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:ReceiverManual"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Supervisor"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="cls"/>
@@ -11,21 +11,21 @@
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:ReceiverManual"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Supervisor"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
<properties key="item-kind" value=""/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="339">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" y="270">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
<graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#Port:ReceiverManual$dataIn"/>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Supervisor$application"/>
</link>
<anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataIn"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" value="application"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.behavior
index b27df1a..9a53ec6 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.behavior
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.behavior
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.behavior" name="Behavior of Receiver" showGuides="true" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link" verticalGridUnit="0" version="0.9.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Tester" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@connections.0/@link //@children.0/@children.3/@link //@connections.1/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:Receiver"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Tester"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="sg"/>
@@ -11,18 +11,18 @@
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#StateGraph:Receiver$sg"/>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Tester$sg"/>
</link>
<children visible="true">
<graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="72" y="67">
<graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#StateGraph:Receiver$sg"/>
+ <businessObjects href="../MassiveMultiThreading.room#StateGraph:Tester$sg"/>
</link>
<anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
@@ -31,10 +31,10 @@
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="236" y="80">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="278" y="152">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="30" y="24">
<points x="-3" y="-3"/>
<points x="-3" y="3"/>
<points x="-11" y="3"/>
@@ -53,29 +53,29 @@
</graphicsAlgorithmChildren>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#SimpleState:Receiver$Idle"/>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Tester$Started"/>
</link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Idle"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Started"/>
</children>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="149" height="90" x="488" y="80">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="89" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="64" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="282" y="286">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="30" y="24">
<points x="-3" y="-3"/>
<points x="-3" y="3"/>
<points x="-11" y="3"/>
</graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
<points x="3" y="-3"/>
<points x="3" y="3"/>
<points x="11" y="3"/>
</graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
<points x="-2" y="-3"/>
<points x="-2" y="3"/>
<points x="2" y="3"/>
@@ -84,11 +84,11 @@
</graphicsAlgorithmChildren>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#SimpleState:Receiver$DataReceived"/>
+ <businessObjects href="../MassiveMultiThreading.room#SimpleState:Tester$Done"/>
</link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2" incomingConnections="//@connections.1 //@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="89" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="DataReceived"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Done"/>
</children>
</children>
</children>
@@ -96,10 +96,10 @@
<properties key="obj-type" value="trans"/>
<graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
<link>
- <businessObjects href="../cGenRef.room#InitialTransition:Receiver$initial"/>
+ <businessObjects href="../MassiveMultiThreading.room#InitialTransition:Tester$initial"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
@@ -113,38 +113,18 @@
<properties key="obj-type" value="trans"/>
<graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
<link>
- <businessObjects href="../cGenRef.room#TriggeredTransition:Receiver$tr0"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-47" y="9" font="//@fonts.0" value="tr0: &lt;sendData:dataI..."/>
- </connectionDecorators>
- <bendpoints x="449" y="170"/>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.3/@anchors.0" end="//@children.0/@children.3/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#TriggeredTransition:Receiver$tr1"/>
+ <businessObjects href="../MassiveMultiThreading.room#TriggeredTransition:Tester$tr0"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
</graphicsAlgorithm>
</connectionDecorators>
<connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;sendData:dataI..."/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;sendData:inpor..."/>
</connectionDecorators>
- <bendpoints x="602" y="285"/>
- <bendpoints x="640" y="285"/>
</connections>
<colors red="227" green="238" blue="249"/>
<colors red="255" green="255" blue="255"/>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SenderManual.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.structure
index d718340..f353b23 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SenderManual.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/MassiveMultiThreading.Tester.structure
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of SenderManual" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Tester" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.1/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:SenderManual"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Tester"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="cls"/>
@@ -11,21 +11,36 @@
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#ActorClass:SenderManual"/>
+ <businessObjects href="../MassiveMultiThreading.room#ActorClass:Tester"/>
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
<properties key="item-kind" value="C"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="392" y="500">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="243" y="500">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
<graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
</graphicsAlgorithm>
<link>
- <businessObjects href="../cGenRef.room#Port:SenderManual$dataOut"/>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Tester$outport"/>
</link>
<anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataOut"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="outport"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="608" y="500">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../MassiveMultiThreading.room#Port:Tester$inport"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="inport"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.behavior
deleted file mode 100644
index 60b87a0..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Broadcast.behavior
+++ /dev/null
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.behavior" name="Behavior of Broadcast" showGuides="true" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@children.1/@link //@children.1/@children.1/@link //@children.0/@children.3/@children.1/@link //@children.1/@children.2/@link //@children.0/@children.3/@children.2/@link //@children.1/@children.3/@link //@children.1/@children.4/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link //@connections.4/@link //@connections.5/@link" verticalGridUnit="0">
- <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
- <link>
- <businessObjects href="../cGenRef.room#ActorClass:Broadcast"/>
- </link>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="sg"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#StateGraph:Broadcast$sg"/>
- </link>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#StateGraph:Broadcast$sg"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="170" y="80">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="30" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#BaseState:Broadcast$Idle"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.4" incomingConnections="//@connections.3" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Idle"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="194" height="138" x="337" y="184">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="134" height="78" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="15" height="8" x="109" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="67" y="72">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="67" y="72">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="67" y="72">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#BaseState:Broadcast$Sending"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="134" height="78" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Sending"/>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="trp"/>
- <properties key="item-kind" value="entp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="42">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="11" height="11" x="25" y="25"/>
- <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0">
- <points x="27" y="33"/>
- <points x="33" y="27"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0">
- <points x="27" y="27"/>
- <points x="33" y="33"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#EntryPoint:Broadcast$Sending$tp0"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.4" referencedGraphicsAlgorithm="//@children.0/@children.3/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="22" font="//@fonts.0" verticalAlignment="ALIGNMENT_BOTTOM" value="tp0"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="trp"/>
- <properties key="item-kind" value="extp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="64" y="78">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="11" height="11" x="25" y="25"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="25" y="25">
- <points x="5"/>
- <points x="11" y="5"/>
- <points x="5" y="11"/>
- <points y="5"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#ExitPoint:Broadcast$Sending$tp1"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.3/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="22" font="//@fonts.0" verticalAlignment="ALIGNMENT_BOTTOM" value="tp1"/>
- </children>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="149" height="90" x="405" y="316">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="89" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="64" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="44" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#BaseState:Broadcast$ReceivedBoth"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.5" referencedGraphicsAlgorithm="//@children.0/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children>
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="89" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ReceivedBoth"/>
- </children>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="sg"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#StateGraph:Broadcast$Sending$sg"/>
- </link>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/Sending"/>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="trp"/>
- <properties key="item-kind" value="entp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="256">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
- <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0">
- <points x="33" y="47"/>
- <points x="47" y="33"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0">
- <points x="33" y="33"/>
- <points x="47" y="47"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#EntryPoint:Broadcast$Sending$tp0"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.1/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" verticalAlignment="ALIGNMENT_BOTTOM" value="tp0"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="trp"/>
- <properties key="item-kind" value="extp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="522">
- <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" x="30" y="30">
- <points x="10"/>
- <points x="20" y="10"/>
- <points x="10" y="20"/>
- <points y="10"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#ExitPoint:Broadcast$Sending$tp1"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2" referencedGraphicsAlgorithm="//@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" verticalAlignment="ALIGNMENT_BOTTOM" value="tp1"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="185" height="90" x="193" y="91">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="125" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="100" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#BaseState:Broadcast$Sending$WaitingForReceived"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.1/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="125" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="WaitingForReceived"/>
- </children>
- </children>
- <children xsi:type="pi:ContainerShape" visible="true" active="true">
- <properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="185" height="90" x="479" y="298">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="125" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
- <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="100" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="-3" y="-3"/>
- <points x="-3" y="3"/>
- <points x="-11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="3" y="-3"/>
- <points x="3" y="3"/>
- <points x="11" y="3"/>
- </graphicsAlgorithmChildren>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="62" y="24">
- <points x="-2" y="-3"/>
- <points x="-2" y="3"/>
- <points x="2" y="3"/>
- <points x="2" y="-3"/>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithmChildren>
- </graphicsAlgorithm>
- <link>
- <businessObjects href="../cGenRef.room#BaseState:Broadcast$Sending$ReceivedOne"/>
- </link>
- <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.2" incomingConnections="//@connections.1" referencedGraphicsAlgorithm="//@children.1/@children.4/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
- <children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="125" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ReceivedOne"/>
- </children>
- </children>
- </children>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.1/@children.1/@anchors.0" end="//@children.1/@children.3/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#ContinuationTransition:Broadcast$Sending$tr0"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="tr0: "/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.1/@children.3/@anchors.0" end="//@children.1/@children.4/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#TriggeredTransition:Broadcast$Sending$tr1"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="tr1: &lt;receivedData:d..."/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.1/@children.4/@anchors.0" end="//@children.1/@children.2/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#TriggeredTransition:Broadcast$Sending$tr3"/>
- </link>
- <connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="tr3: &lt;receivedData:d..."/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#InitialTransition:Broadcast$initial"/>
- </link>
- <connectionDecorators locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@children.1/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#TriggeredTransition:Broadcast$tr0"/>
- </link>
- <connectionDecorators locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="-49" y="-15" font="//@fonts.0" value="tr0: &lt;sendData:dataI..."/>
- </connectionDecorators>
- </connections>
- <connections xsi:type="pi:FreeFormConnection" active="true" start="//@children.0/@children.3/@children.2/@anchors.0" end="//@children.0/@children.4/@anchors.0">
- <properties key="obj-type" value="trans"/>
- <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
- <link>
- <businessObjects href="../cGenRef.room#ContinuationTransition:Broadcast$tr1"/>
- </link>
- <connectionDecorators locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
- <points x="-15" y="5"/>
- <points/>
- <points x="-15" y="-5"/>
- </graphicsAlgorithm>
- </connectionDecorators>
- <connectionDecorators active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" x="10" font="//@fonts.0" value="tr1: "/>
- </connectionDecorators>
- </connections>
- <colors red="227" green="238" blue="249"/>
- <colors red="255" green="255" blue="255"/>
- <colors/>
- <colors red="200" green="200" blue="200"/>
- <fonts name="Arial" size="8"/>
- <fonts name="Arial" size="9" bold="true"/>
-</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.structure
index 5329b29..a5b3872 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Receiver.structure
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of Receiver" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Receiver" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
<businessObjects href="../cGenRef.room#ActorClass:Receiver"/>
@@ -25,7 +25,7 @@
</link>
<anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataIn"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataIn"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.behavior b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.behavior
index bcc18d5..b6c23d6 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.behavior
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.behavior
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.behavior" name="Behavior of Sender" showGuides="true" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@connections.0/@link //@connections.1/@link //@children.0/@children.4/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="0" version="0.9.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@children.0/@children.4/@link //@connections.0/@link //@connections.1/@link //@connections.2/@link //@connections.3/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
<businessObjects href="../cGenRef.room#ActorClass:Sender"/>
@@ -31,7 +31,7 @@
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="144" height="90" x="224" y="80">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="144" height="90" x="194" y="120">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="84" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="59" y="3" cornerHeight="5" cornerWidth="5"/>
<graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="42" y="24">
@@ -62,10 +62,10 @@
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="state"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="236" y="297">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="120" height="90" x="629" y="120">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="60" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
<graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="35" y="3" cornerHeight="5" cornerWidth="5"/>
- <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="30" y="24">
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="30" y="24">
<points x="-3" y="-3"/>
<points x="-3" y="3"/>
<points x="-11" y="3"/>
@@ -86,14 +86,14 @@
<link>
<businessObjects href="../cGenRef.room#SimpleState:Sender$Done"/>
</link>
- <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2"/>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.2" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
<graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="Done"/>
</children>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="trp"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="271" y="205">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="50" height="50" x="456" y="138">
<graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="25" height="25" x="12" y="12"/>
</graphicsAlgorithm>
<link>
@@ -112,7 +112,7 @@
<businessObjects href="../cGenRef.room#InitialTransition:Sender$initial"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
@@ -129,15 +129,16 @@
<businessObjects href="../cGenRef.room#TriggeredTransition:Sender$tr0"/>
</link>
<connectionDecorators visible="true" locationRelative="true" location="1.0">
- <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
<points x="-15" y="5"/>
<points/>
<points x="-15" y="-5"/>
</graphicsAlgorithm>
</connectionDecorators>
<connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-76" y="-21" font="//@fonts.0" value="tr0: &lt;receivedData:d..."/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="-66" y="-29" font="//@fonts.0" value="tr0: &lt;receivedData:d..."/>
</connectionDecorators>
+ <bendpoints x="430" y="183"/>
</connections>
<connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.4/@anchors.0" end="//@children.0/@children.3/@anchors.0">
<properties key="obj-type" value="trans"/>
@@ -172,7 +173,7 @@
<connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
<graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr2: [counter&lt;10]"/>
</connectionDecorators>
- <bendpoints x="408" y="217"/>
+ <bendpoints x="421" y="252"/>
</connections>
<colors red="227" green="238" blue="249"/>
<colors red="255" green="255" blue="255"/>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.structure
index 8051490..81ea3d0 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.Sender.structure
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of Sender" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Sender" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
<businessObjects href="../cGenRef.room#ActorClass:Sender"/>
@@ -25,7 +25,7 @@
</link>
<anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataOut"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataOut"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SubSys.structure b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SubSys.structure
index 4946537..3120699 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SubSys.structure
+++ b/examples/org.eclipse.etrice.generator.c.reference/model/diagrams/cGenRef.SubSys.structure
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
-<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" diagramTypeId="room.structure" name="Structure of SubSys" showGuides="true" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.0/@children.1/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.1/@link //@connections.0/@link" verticalGridUnit="0" version="0.9.0">
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSys" pictogramLinks="//@children.0/@link //@link //@children.0/@children.0/@link //@children.0/@children.0/@children.1/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.1/@link //@connections.0/@link" verticalGridUnit="10" version="0.9.0">
<graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
<link>
<businessObjects href="../cGenRef.room#SubSystemClass:SubSys"/>
@@ -15,7 +15,7 @@
</link>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="ref"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="327" y="98">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="156" y="170">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50"/>
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65"/>
@@ -31,7 +31,7 @@
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
<properties key="item-kind" value="C"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="92" y="80">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="180" y="33">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
</graphicsAlgorithm>
<link>
@@ -39,13 +39,13 @@
</link>
<anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataOut"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" horizontalAlignment="ALIGNMENT_RIGHT" value="dataOut"/>
</children>
</children>
</children>
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="ref"/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="148" y="358">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="482" y="170">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50"/>
<graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65"/>
@@ -61,7 +61,7 @@
<children xsi:type="pi:ContainerShape" visible="true" active="true">
<properties key="obj-type" value="port"/>
<properties key="item-kind" value=""/>
- <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="79">
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" y="36">
<graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
</graphicsAlgorithm>
<link>
@@ -69,7 +69,7 @@
</link>
<anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
<children visible="true">
- <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="dataIn"/>
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="39" font="//@fonts.0" value="dataIn"/>
</children>
</children>
</children>
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.c
index 63831f3..9b94853 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.c
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.c
@@ -11,29 +11,6 @@
/*--------------------- port methods */
-void CommunicationProtocolPort_receivedData(const CommunicationProtocolPort* self) {
- ET_MSC_LOGGER_SYNC_ENTRY("CommunicationProtocolPort", "receivedData")
- etPort_sendMessage(self, CommunicationProtocol_OUT_receivedData, 0, NULL);
- ET_MSC_LOGGER_SYNC_EXIT
-}
-
-void CommunicationProtocolReplPort_receivedData_broadcast(const CommunicationProtocolReplPort* self) {
- int i;
- ET_MSC_LOGGER_SYNC_ENTRY("CommunicationProtocolReplPort", "receivedData")
- for (i=0; i<((etReplPort*)self)->size; ++i) {
- etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[i]), CommunicationProtocol_OUT_receivedData, 0, NULL);
- }
- ET_MSC_LOGGER_SYNC_EXIT
-}
-
-void CommunicationProtocolReplPort_receivedData(const CommunicationProtocolReplPort* self, int idx) {
- ET_MSC_LOGGER_SYNC_ENTRY("CommunicationProtocolReplPort", "receivedData")
- if (0<=idx && idx<((etReplPort*)self)->size) {
- etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[idx]), CommunicationProtocol_OUT_receivedData, 0, NULL);
- }
- ET_MSC_LOGGER_SYNC_EXIT
-}
-
// getReplication
etInt32 CommunicationProtocolReplPort_getReplication(const CommunicationProtocolReplPort* self) {
@@ -76,7 +53,7 @@ etInt32 CommunicationProtocolConjReplPort_getReplication(const CommunicationProt
/*--------------------- debug helpers */
/* message names as strings for debugging (generate MSC) */
-static const char* const CommunicationProtocol_messageStrings[] = {"MIN", "receivedData","sendData", "MAX"};
+static const char* const CommunicationProtocol_messageStrings[] = {"MIN", "sendData", "MAX"};
const char* CommunicationProtocol_getMessageString(int msg_id) {
if (msg_id<CommunicationProtocol_MSG_MIN || msg_id>CommunicationProtocol_MSG_MAX+1){
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.h
index 7fd2bf5..77f25a0 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/CommunicationProtocol.h
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/CommunicationProtocol.h
@@ -17,9 +17,8 @@
/* message IDs */
enum CommunicationProtocol_msg_ids {
CommunicationProtocol_MSG_MIN = 0,
- CommunicationProtocol_OUT_receivedData = 1,
- CommunicationProtocol_IN_sendData = 2,
- CommunicationProtocol_MSG_MAX = 3
+ CommunicationProtocol_IN_sendData = 1,
+ CommunicationProtocol_MSG_MAX = 2
};
/*--------------------- port structs and methods */
@@ -27,9 +26,6 @@ typedef etPort CommunicationProtocolPort;
typedef etReplPort CommunicationProtocolReplPort;
-void CommunicationProtocolPort_receivedData(const CommunicationProtocolPort* self);
-void CommunicationProtocolReplPort_receivedData_broadcast(const CommunicationProtocolReplPort* self);
-void CommunicationProtocolReplPort_receivedData(const CommunicationProtocolReplPort* self, int idx);
etInt32 CommunicationProtocolReplPort_getReplication(const CommunicationProtocolReplPort* self);
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.c
new file mode 100644
index 0000000..0686633
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.c
@@ -0,0 +1,185 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass Fork
+ *
+ */
+
+#include "Fork.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "platform/etMemory.h"
+
+#include "CommunicationProtocol.h"
+
+
+/* interface item IDs */
+enum interface_items {
+ IFITEM_broadcast = 1,
+ IFITEM_inport = 2
+};
+
+/* state IDs */
+enum state_ids {
+ NO_STATE = 0,
+ STATE_TOP = 1,
+ STATE_Fork = 2
+};
+
+/* transition chains */
+enum chain_ids {
+ CHAIN_TRANS_INITIAL_TO__Fork = 1,
+ CHAIN_TRANS_tr0_FROM_Fork_TO_Fork_BY_sendDatainport_tr0 = 2
+};
+
+/* triggers */
+enum triggers {
+ POLLING = 0,
+ TRIG_inport__sendData = IFITEM_inport + EVT_SHIFT*CommunicationProtocol_IN_sendData
+};
+
+
+static void setState(Fork* self, int new_state) {
+ self->state = (etInt16) new_state;
+}
+
+static int getState(Fork* self) {
+ return self->state;
+}
+
+/* Entry and Exit Codes */
+
+/* Action Codes */
+static void action_TRANS_tr0_FROM_Fork_TO_Fork_BY_sendDatainport_tr0(Fork* self, const InterfaceItemBase* ifitem) {
+ CommunicationProtocolConjReplPort_sendData_broadcast(&self->constData->broadcast) /* ORIG: broadcast.sendData() */;
+}
+
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ * @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
+ */
+static void exitTo(Fork* self, int current, int to, boolean handler) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_Fork:
+ self->history[STATE_TOP] = STATE_Fork;
+ current = STATE_TOP;
+ break;
+ }
+ }
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the ID of the final state
+ */
+static int executeTransitionChain(Fork* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__Fork:
+ {
+ return STATE_Fork;
+ }
+ case CHAIN_TRANS_tr0_FROM_Fork_TO_Fork_BY_sendDatainport_tr0:
+ {
+ action_TRANS_tr0_FROM_Fork_TO_Fork_BY_sendDatainport_tr0(self, ifitem);
+ return STATE_Fork;
+ }
+ }
+ return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @param handler - entry code is executed if not handler
+ * @return - the ID of the final leaf state
+ */
+static int enterHistory(Fork* self, int state, boolean handler, boolean skip_entry) {
+ while (TRUE) {
+ switch (state) {
+ case STATE_Fork:
+ // in leaf state: return state id
+ return STATE_Fork;
+ case STATE_TOP:
+ state = self->history[STATE_TOP];
+ break;
+ }
+ skip_entry = FALSE;
+ }
+ //return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)
+}
+
+static void Fork_executeInitTransition(Fork* self) {
+ int chain = CHAIN_TRANS_INITIAL_TO__Fork;
+ int next = executeTransitionChain(self, chain, NULL, NULL);
+ next = enterHistory(self, next, FALSE, FALSE);
+ setState(self, next);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void Fork_receiveEvent(Fork* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
+ int trigger = ifitem->localId + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+ boolean is_handler = FALSE;
+ boolean skip_entry = FALSE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState(self)) {
+ case STATE_Fork:
+ switch(trigger) {
+ case TRIG_inport__sendData:
+ {
+ chain = CHAIN_TRANS_tr0_FROM_Fork_TO_Fork_BY_sendDatainport_tr0;
+ catching_state = STATE_TOP;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(self, getState(self), catching_state, is_handler);
+ int next = executeTransitionChain(self, chain, ifitem, generic_data);
+ next = enterHistory(self, next, is_handler, skip_entry);
+ setState(self, next);
+ }
+}
+
+//******************************************
+// END of generated code for FSM
+//******************************************
+
+void Fork_init(Fork* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("Fork", "init")
+ self->state = STATE_TOP;
+ {
+ int i;
+ for (i=0; i<FORK_HISTORY_SIZE; ++i)
+ self->history[i] = NO_STATE;
+ }
+ Fork_executeInitTransition(self);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void Fork_receiveMessage(void* self, void* ifitem, const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("Fork", "_receiveMessage")
+
+ Fork_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- operations ---------------------*/
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.h
index 9050809..db87795 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.h
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Fork.h
@@ -1,12 +1,12 @@
/**
* @author generated by eTrice
*
- * Header File of ActorClass Sender
+ * Header File of ActorClass Fork
*
*/
-#ifndef _SENDER_H_
-#define _SENDER_H_
+#ifndef _FORK_H_
+#define _FORK_H_
#include "etDatatypes.h"
#include "messaging/etMessage.h"
@@ -14,48 +14,48 @@
#include "CommunicationProtocol.h"
-typedef struct Sender Sender;
+typedef struct Fork Fork;
/* const part of ActorClass (ROM) */
-typedef struct Sender_const {
+typedef struct Fork_const {
/* simple ports */
- const CommunicationProtocolConjPort dataOut;
+ const CommunicationProtocolPort inport;
/* data receive ports */
/* saps */
/* replicated ports */
+ const etReplPort broadcast;
/* services */
-} Sender_const;
+} Fork_const;
/* constant for state machine data */
-#define SENDER_HISTORY_SIZE 2
+#define FORK_HISTORY_SIZE 2
/* variable part of ActorClass (RAM) */
-struct Sender {
- const Sender_const* const constData;
+struct Fork {
+ const Fork_const* const constData;
/* data send ports */
/*--------------------- attributes ---------------------*/
- int32 counter;
/* state machine variables */
etInt16 state;
- etInt16 history[SENDER_HISTORY_SIZE];
+ etInt16 history[FORK_HISTORY_SIZE];
};
-void Sender_init(Sender* self);
+void Fork_init(Fork* self);
-void Sender_receiveMessage(void* self, void* ifitem, const etMessage* msg);
+void Fork_receiveMessage(void* self, void* ifitem, const etMessage* msg);
/*--------------------- operations ---------------------*/
-#endif /* _SENDER_H_ */
+#endif /* _FORK_H_ */
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.c
new file mode 100644
index 0000000..f3a8650
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.c
@@ -0,0 +1,226 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass Join
+ *
+ */
+
+#include "Join.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "platform/etMemory.h"
+
+#include "CommunicationProtocol.h"
+#include "SecurityProtocol.h"
+
+
+/* interface item IDs */
+enum interface_items {
+ IFITEM_inport = 1,
+ IFITEM_outport = 2,
+ IFITEM_security = 3
+};
+
+/* state IDs */
+enum state_ids {
+ NO_STATE = 0,
+ STATE_TOP = 1,
+ STATE_Count = 2,
+ STATE_Done = 3
+};
+
+/* transition chains */
+enum chain_ids {
+ CHAIN_TRANS_INITIAL_TO__Count = 1,
+ CHAIN_TRANS_tr0_FROM_Count_TO_cp0_BY_pongsecurity = 2,
+ CHAIN_TRANS_tr3_FROM_Count_TO_Count_BY_sendDatainport_tr3 = 3
+};
+
+/* triggers */
+enum triggers {
+ POLLING = 0,
+ TRIG_inport__sendData = IFITEM_inport + EVT_SHIFT*CommunicationProtocol_IN_sendData,
+ TRIG_security__pong = IFITEM_security + EVT_SHIFT*SecurityProtocol_OUT_pong
+};
+
+
+static void setState(Join* self, int new_state) {
+ self->state = (etInt16) new_state;
+}
+
+static int getState(Join* self) {
+ return self->state;
+}
+
+/* Entry and Exit Codes */
+
+/* Action Codes */
+static void action_TRANS_INITIAL_TO__Count(Join* self) {
+ self->counter /* ORIG: counter */=0;
+}
+static void action_TRANS_tr0_FROM_Count_TO_cp0_BY_pongsecurity(Join* self, const InterfaceItemBase* ifitem) {
+ self->counter /* ORIG: counter */++;
+ etLogger_logInfo("+++ Join: received pong +++");
+}
+static void action_TRANS_tr1_FROM_cp0_TO_Done(Join* self, const InterfaceItemBase* ifitem) {
+ CommunicationProtocolConjPort_sendData(&self->constData->outport) /* ORIG: outport.sendData() */;
+}
+static void action_TRANS_tr3_FROM_Count_TO_Count_BY_sendDatainport_tr3(Join* self, const InterfaceItemBase* ifitem) {
+ SecurityProtocolConjPort_ping(&self->constData->security) /* ORIG: security.ping() */;
+ etLogger_logInfo("+++ Join: sent ping +++");
+}
+
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ * @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
+ */
+static void exitTo(Join* self, int current, int to, boolean handler) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_Count:
+ self->history[STATE_TOP] = STATE_Count;
+ current = STATE_TOP;
+ break;
+ case STATE_Done:
+ self->history[STATE_TOP] = STATE_Done;
+ current = STATE_TOP;
+ break;
+ }
+ }
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the ID of the final state
+ */
+static int executeTransitionChain(Join* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__Count:
+ {
+ action_TRANS_INITIAL_TO__Count(self);
+ return STATE_Count;
+ }
+ case CHAIN_TRANS_tr0_FROM_Count_TO_cp0_BY_pongsecurity:
+ {
+ action_TRANS_tr0_FROM_Count_TO_cp0_BY_pongsecurity(self, ifitem);
+ if (self->counter /* ORIG: counter */<10) {
+ return STATE_Count;}
+ else {
+ action_TRANS_tr1_FROM_cp0_TO_Done(self, ifitem);
+ return STATE_Done;}
+ }
+ case CHAIN_TRANS_tr3_FROM_Count_TO_Count_BY_sendDatainport_tr3:
+ {
+ action_TRANS_tr3_FROM_Count_TO_Count_BY_sendDatainport_tr3(self, ifitem);
+ return STATE_Count;
+ }
+ }
+ return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @param handler - entry code is executed if not handler
+ * @return - the ID of the final leaf state
+ */
+static int enterHistory(Join* self, int state, boolean handler, boolean skip_entry) {
+ while (TRUE) {
+ switch (state) {
+ case STATE_Count:
+ // in leaf state: return state id
+ return STATE_Count;
+ case STATE_Done:
+ // in leaf state: return state id
+ return STATE_Done;
+ case STATE_TOP:
+ state = self->history[STATE_TOP];
+ break;
+ }
+ skip_entry = FALSE;
+ }
+ //return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)
+}
+
+static void Join_executeInitTransition(Join* self) {
+ int chain = CHAIN_TRANS_INITIAL_TO__Count;
+ int next = executeTransitionChain(self, chain, NULL, NULL);
+ next = enterHistory(self, next, FALSE, FALSE);
+ setState(self, next);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void Join_receiveEvent(Join* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
+ int trigger = ifitem->localId + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+ boolean is_handler = FALSE;
+ boolean skip_entry = FALSE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState(self)) {
+ case STATE_Count:
+ switch(trigger) {
+ case TRIG_security__pong:
+ {
+ chain = CHAIN_TRANS_tr0_FROM_Count_TO_cp0_BY_pongsecurity;
+ catching_state = STATE_TOP;
+ }
+ break;
+ case TRIG_inport__sendData:
+ {
+ chain = CHAIN_TRANS_tr3_FROM_Count_TO_Count_BY_sendDatainport_tr3;
+ catching_state = STATE_TOP;
+ }
+ break;
+ }
+ break;
+ case STATE_Done:
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(self, getState(self), catching_state, is_handler);
+ int next = executeTransitionChain(self, chain, ifitem, generic_data);
+ next = enterHistory(self, next, is_handler, skip_entry);
+ setState(self, next);
+ }
+}
+
+//******************************************
+// END of generated code for FSM
+//******************************************
+
+void Join_init(Join* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("Join", "init")
+ self->state = STATE_TOP;
+ {
+ int i;
+ for (i=0; i<JOIN_HISTORY_SIZE; ++i)
+ self->history[i] = NO_STATE;
+ }
+ Join_executeInitTransition(self);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void Join_receiveMessage(void* self, void* ifitem, const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("Join", "_receiveMessage")
+
+ Join_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- operations ---------------------*/
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.h
new file mode 100644
index 0000000..9ab937f
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Join.h
@@ -0,0 +1,64 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass Join
+ *
+ */
+
+#ifndef _JOIN_H_
+#define _JOIN_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+#include "CommunicationProtocol.h"
+#include "SecurityProtocol.h"
+
+
+typedef struct Join Join;
+
+/* const part of ActorClass (ROM) */
+typedef struct Join_const {
+ /* simple ports */
+ const CommunicationProtocolConjPort outport;
+ const SecurityProtocolConjPort security;
+
+ /* data receive ports */
+
+ /* saps */
+
+ /* replicated ports */
+ const etReplPort inport;
+
+ /* services */
+} Join_const;
+
+
+/* constant for state machine data */
+#define JOIN_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct Join {
+ const Join_const* const constData;
+
+ /* data send ports */
+
+ /*--------------------- attributes ---------------------*/
+ int32 counter;
+
+
+ /* state machine variables */
+ etInt16 state;
+ etInt16 history[JOIN_HISTORY_SIZE];
+};
+
+void Join_init(Join* self);
+
+void Join_receiveMessage(void* self, void* ifitem, const etMessage* msg);
+
+
+/*--------------------- operations ---------------------*/
+
+
+#endif /* _JOIN_H_ */
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.c
index df15b3c..f957539 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.c
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.c
@@ -1,11 +1,11 @@
/**
* @author generated by eTrice
*
- * Source File of ActorClass Receiver
+ * Source File of ActorClass Redirect
*
*/
-#include "Receiver.h"
+#include "Redirect.h"
#include "modelbase/etActor.h"
#include "debugging/etLogger.h"
@@ -18,47 +18,44 @@
/* interface item IDs */
enum interface_items {
- IFITEM_dataIn = 1
+ IFITEM_inport = 1,
+ IFITEM_outport = 2
};
/* state IDs */
enum state_ids {
NO_STATE = 0,
STATE_TOP = 1,
- STATE_Idle = 2,
- STATE_DataReceived = 3
+ STATE_Redirect = 2
};
/* transition chains */
enum chain_ids {
- CHAIN_TRANS_INITIAL_TO__Idle = 1,
- CHAIN_TRANS_tr0_FROM_Idle_TO_DataReceived_BY_sendDatadataIn = 2,
- CHAIN_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn_tr1 = 3
+ CHAIN_TRANS_INITIAL_TO__Redirect = 1,
+ CHAIN_TRANS_tr0_FROM_Redirect_TO_Redirect_BY_sendDatainport_tr0 = 2
};
/* triggers */
enum triggers {
POLLING = 0,
- TRIG_dataIn__sendData = IFITEM_dataIn + EVT_SHIFT*CommunicationProtocol_IN_sendData
+ TRIG_inport__sendData = IFITEM_inport + EVT_SHIFT*CommunicationProtocol_IN_sendData
};
-static void setState(Receiver* self, int new_state) {
+static void setState(Redirect* self, int new_state) {
self->state = (etInt16) new_state;
}
-static int getState(Receiver* self) {
+static int getState(Redirect* self) {
return self->state;
}
/* Entry and Exit Codes */
/* Action Codes */
-static void action_TRANS_tr0_FROM_Idle_TO_DataReceived_BY_sendDatadataIn(Receiver* self, const InterfaceItemBase* ifitem) {
- CommunicationProtocolPort_receivedData(&self->constData->dataIn) /* ORIG: dataIn.receivedData() */;
-}
-static void action_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn_tr1(Receiver* self, const InterfaceItemBase* ifitem) {
- CommunicationProtocolPort_receivedData(&self->constData->dataIn) /* ORIG: dataIn.receivedData() */;
+static void action_TRANS_tr0_FROM_Redirect_TO_Redirect_BY_sendDatainport_tr0(Redirect* self, const InterfaceItemBase* ifitem) {
+ CommunicationProtocolConjPort_sendData(&self->constData->outport) /* ORIG: outport.sendData() */;
+ etLogger_logInfo("+++ Redirect: sendData +++");
}
/**
@@ -68,15 +65,11 @@ static void action_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn
* @param to - the final parent state
* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
*/
-static void exitTo(Receiver* self, int current, int to, boolean handler) {
+static void exitTo(Redirect* self, int current, int to, boolean handler) {
while (current!=to) {
switch (current) {
- case STATE_Idle:
- self->history[STATE_TOP] = STATE_Idle;
- current = STATE_TOP;
- break;
- case STATE_DataReceived:
- self->history[STATE_TOP] = STATE_DataReceived;
+ case STATE_Redirect:
+ self->history[STATE_TOP] = STATE_Redirect;
current = STATE_TOP;
break;
}
@@ -90,21 +83,16 @@ static void exitTo(Receiver* self, int current, int to, boolean handler) {
* @param generic_data - the generic data pointer
* @return the ID of the final state
*/
-static int executeTransitionChain(Receiver* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
+static int executeTransitionChain(Redirect* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
switch (chain) {
- case CHAIN_TRANS_INITIAL_TO__Idle:
+ case CHAIN_TRANS_INITIAL_TO__Redirect:
{
- return STATE_Idle;
+ return STATE_Redirect;
}
- case CHAIN_TRANS_tr0_FROM_Idle_TO_DataReceived_BY_sendDatadataIn:
+ case CHAIN_TRANS_tr0_FROM_Redirect_TO_Redirect_BY_sendDatainport_tr0:
{
- action_TRANS_tr0_FROM_Idle_TO_DataReceived_BY_sendDatadataIn(self, ifitem);
- return STATE_DataReceived;
- }
- case CHAIN_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn_tr1:
- {
- action_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn_tr1(self, ifitem);
- return STATE_DataReceived;
+ action_TRANS_tr0_FROM_Redirect_TO_Redirect_BY_sendDatainport_tr0(self, ifitem);
+ return STATE_Redirect;
}
}
return NO_STATE;
@@ -116,15 +104,12 @@ static int executeTransitionChain(Receiver* self, int chain, const InterfaceItem
* @param handler - entry code is executed if not handler
* @return - the ID of the final leaf state
*/
-static int enterHistory(Receiver* self, int state, boolean handler, boolean skip_entry) {
+static int enterHistory(Redirect* self, int state, boolean handler, boolean skip_entry) {
while (TRUE) {
switch (state) {
- case STATE_Idle:
- // in leaf state: return state id
- return STATE_Idle;
- case STATE_DataReceived:
+ case STATE_Redirect:
// in leaf state: return state id
- return STATE_DataReceived;
+ return STATE_Redirect;
case STATE_TOP:
state = self->history[STATE_TOP];
break;
@@ -134,15 +119,15 @@ static int enterHistory(Receiver* self, int state, boolean handler, boolean skip
//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)
}
-static void Receiver_executeInitTransition(Receiver* self) {
- int chain = CHAIN_TRANS_INITIAL_TO__Idle;
+static void Redirect_executeInitTransition(Redirect* self) {
+ int chain = CHAIN_TRANS_INITIAL_TO__Redirect;
int next = executeTransitionChain(self, chain, NULL, NULL);
next = enterHistory(self, next, FALSE, FALSE);
setState(self, next);
}
/* receiveEvent contains the main implementation of the FSM */
-static void Receiver_receiveEvent(Receiver* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
+static void Redirect_receiveEvent(Redirect* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
int trigger = ifitem->localId + EVT_SHIFT*evt;
int chain = NOT_CAUGHT;
int catching_state = NO_STATE;
@@ -151,21 +136,11 @@ static void Receiver_receiveEvent(Receiver* self, InterfaceItemBase* ifitem, int
if (!handleSystemEvent(ifitem, evt, generic_data)) {
switch (getState(self)) {
- case STATE_Idle:
- switch(trigger) {
- case TRIG_dataIn__sendData:
- {
- chain = CHAIN_TRANS_tr0_FROM_Idle_TO_DataReceived_BY_sendDatadataIn;
- catching_state = STATE_TOP;
- }
- break;
- }
- break;
- case STATE_DataReceived:
+ case STATE_Redirect:
switch(trigger) {
- case TRIG_dataIn__sendData:
+ case TRIG_inport__sendData:
{
- chain = CHAIN_TRANS_tr1_FROM_DataReceived_TO_DataReceived_BY_sendDatadataIn_tr1;
+ chain = CHAIN_TRANS_tr0_FROM_Redirect_TO_Redirect_BY_sendDatainport_tr0;
catching_state = STATE_TOP;
}
break;
@@ -185,23 +160,23 @@ static void Receiver_receiveEvent(Receiver* self, InterfaceItemBase* ifitem, int
// END of generated code for FSM
//******************************************
-void Receiver_init(Receiver* self){
- ET_MSC_LOGGER_SYNC_ENTRY("Receiver", "init")
+void Redirect_init(Redirect* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("Redirect", "init")
self->state = STATE_TOP;
{
int i;
- for (i=0; i<RECEIVER_HISTORY_SIZE; ++i)
+ for (i=0; i<REDIRECT_HISTORY_SIZE; ++i)
self->history[i] = NO_STATE;
}
- Receiver_executeInitTransition(self);
+ Redirect_executeInitTransition(self);
ET_MSC_LOGGER_SYNC_EXIT
}
-void Receiver_receiveMessage(void* self, void* ifitem, const etMessage* msg){
- ET_MSC_LOGGER_SYNC_ENTRY("Receiver", "_receiveMessage")
+void Redirect_receiveMessage(void* self, void* ifitem, const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("Redirect", "_receiveMessage")
- Receiver_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+ Redirect_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
ET_MSC_LOGGER_SYNC_EXIT
}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.h
index 6806a7d..3c81933 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Receiver.h
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Redirect.h
@@ -1,26 +1,26 @@
/**
* @author generated by eTrice
*
- * Header File of ActorClass Receiver
+ * Header File of ActorClass Redirect
*
*/
-#ifndef _RECEIVER_H_
-#define _RECEIVER_H_
+#ifndef _REDIRECT_H_
+#define _REDIRECT_H_
#include "etDatatypes.h"
#include "messaging/etMessage.h"
-#include "DataClass1.h"
#include "CommunicationProtocol.h"
-typedef struct Receiver Receiver;
+typedef struct Redirect Redirect;
/* const part of ActorClass (ROM) */
-typedef struct Receiver_const {
+typedef struct Redirect_const {
/* simple ports */
- const CommunicationProtocolPort dataIn;
+ const CommunicationProtocolPort inport;
+ const CommunicationProtocolConjPort outport;
/* data receive ports */
@@ -29,34 +29,33 @@ typedef struct Receiver_const {
/* replicated ports */
/* services */
-} Receiver_const;
+} Redirect_const;
/* constant for state machine data */
-#define RECEIVER_HISTORY_SIZE 2
+#define REDIRECT_HISTORY_SIZE 2
/* variable part of ActorClass (RAM) */
-struct Receiver {
- const Receiver_const* const constData;
+struct Redirect {
+ const Redirect_const* const constData;
/* data send ports */
/*--------------------- attributes ---------------------*/
- DataClass1 attr1;
/* state machine variables */
etInt16 state;
- etInt16 history[RECEIVER_HISTORY_SIZE];
+ etInt16 history[REDIRECT_HISTORY_SIZE];
};
-void Receiver_init(Receiver* self);
+void Redirect_init(Redirect* self);
-void Receiver_receiveMessage(void* self, void* ifitem, const etMessage* msg);
+void Redirect_receiveMessage(void* self, void* ifitem, const etMessage* msg);
/*--------------------- operations ---------------------*/
-#endif /* _RECEIVER_H_ */
+#endif /* _REDIRECT_H_ */
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.c
new file mode 100644
index 0000000..c1d8713
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.c
@@ -0,0 +1,89 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass SecurityProtocol
+ *
+ */
+
+#include "SecurityProtocol.h"
+#include "debugging/etMSCLogger.h"
+
+
+/*--------------------- port methods */
+
+void SecurityProtocolPort_pong(const SecurityProtocolPort* self) {
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolPort", "pong")
+ etPort_sendMessage(self, SecurityProtocol_OUT_pong, 0, NULL);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void SecurityProtocolReplPort_pong_broadcast(const SecurityProtocolReplPort* self) {
+ int i;
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolReplPort", "pong")
+ for (i=0; i<((etReplPort*)self)->size; ++i) {
+ etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[i]), SecurityProtocol_OUT_pong, 0, NULL);
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void SecurityProtocolReplPort_pong(const SecurityProtocolReplPort* self, int idx) {
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolReplPort", "pong")
+ if (0<=idx && idx<((etReplPort*)self)->size) {
+ etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[idx]), SecurityProtocol_OUT_pong, 0, NULL);
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+// getReplication
+etInt32 SecurityProtocolReplPort_getReplication(const SecurityProtocolReplPort* self) {
+ return ((etReplPort*)self)->size;
+}
+
+
+
+void SecurityProtocolConjPort_ping(const SecurityProtocolConjPort* self) {
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolConjPort", "ping")
+ etPort_sendMessage(self, SecurityProtocol_IN_ping, 0, NULL);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void SecurityProtocolConjReplPort_ping_broadcast(const SecurityProtocolConjReplPort* self) {
+ int i;
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolConjReplPort", "ping")
+ for (i=0; i<((etReplPort*)self)->size; ++i) {
+ etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[i]), SecurityProtocol_IN_ping, 0, NULL);
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+void SecurityProtocolConjReplPort_ping(const SecurityProtocolConjReplPort* self, int idx) {
+ ET_MSC_LOGGER_SYNC_ENTRY("SecurityProtocolConjReplPort", "ping")
+ if (0<=idx && idx<((etReplPort*)self)->size) {
+ etPort_sendMessage(((etPort*)&((etReplPort*)self)->ports[idx]), SecurityProtocol_IN_ping, 0, NULL);
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+// getReplication
+etInt32 SecurityProtocolConjReplPort_getReplication(const SecurityProtocolConjReplPort* self) {
+ return ((etReplPort*)self)->size;
+}
+
+
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const SecurityProtocol_messageStrings[] = {"MIN", "pong","ping", "MAX"};
+
+const char* SecurityProtocol_getMessageString(int msg_id) {
+ if (msg_id<SecurityProtocol_MSG_MIN || msg_id>SecurityProtocol_MSG_MAX+1){
+ /* id out of range */
+ return "Message ID out of range";
+ }
+ else{
+ return SecurityProtocol_messageStrings[msg_id];
+ }
+}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.h
new file mode 100644
index 0000000..829f7f6
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/SecurityProtocol.h
@@ -0,0 +1,54 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass SecurityProtocol
+ *
+ */
+
+#ifndef _SECURITYPROTOCOL_H_
+#define _SECURITYPROTOCOL_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+
+
+
+/* message IDs */
+enum SecurityProtocol_msg_ids {
+ SecurityProtocol_MSG_MIN = 0,
+ SecurityProtocol_OUT_pong = 1,
+ SecurityProtocol_IN_ping = 2,
+ SecurityProtocol_MSG_MAX = 3
+};
+
+/*--------------------- port structs and methods */
+typedef etPort SecurityProtocolPort;
+typedef etReplPort SecurityProtocolReplPort;
+
+
+void SecurityProtocolPort_pong(const SecurityProtocolPort* self);
+void SecurityProtocolReplPort_pong_broadcast(const SecurityProtocolReplPort* self);
+void SecurityProtocolReplPort_pong(const SecurityProtocolReplPort* self, int idx);
+
+
+etInt32 SecurityProtocolReplPort_getReplication(const SecurityProtocolReplPort* self);
+typedef etPort SecurityProtocolConjPort;
+typedef etReplPort SecurityProtocolConjReplPort;
+
+
+void SecurityProtocolConjPort_ping(const SecurityProtocolConjPort* self);
+void SecurityProtocolConjReplPort_ping_broadcast(const SecurityProtocolConjReplPort* self);
+void SecurityProtocolConjReplPort_ping(const SecurityProtocolConjReplPort* self, int idx);
+
+
+etInt32 SecurityProtocolConjReplPort_getReplication(const SecurityProtocolConjReplPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* SecurityProtocol_getMessageString(int msg_id);
+
+
+#endif /* _SECURITYPROTOCOL_H_ */
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.c
new file mode 100644
index 0000000..bfe78a3
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.c
@@ -0,0 +1,184 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ActorClass Supervisor
+ *
+ */
+
+#include "Supervisor.h"
+
+#include "modelbase/etActor.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+#include "etUnit/etUnit.h"
+#include "platform/etMemory.h"
+
+#include "SecurityProtocol.h"
+
+
+/* interface item IDs */
+enum interface_items {
+ IFITEM_application = 1
+};
+
+/* state IDs */
+enum state_ids {
+ NO_STATE = 0,
+ STATE_TOP = 1,
+ STATE_PingPongActive = 2
+};
+
+/* transition chains */
+enum chain_ids {
+ CHAIN_TRANS_INITIAL_TO__PingPongActive = 1,
+ CHAIN_TRANS_tr0_FROM_PingPongActive_TO_PingPongActive_BY_pingapplication_tr0 = 2
+};
+
+/* triggers */
+enum triggers {
+ POLLING = 0,
+ TRIG_application__ping = IFITEM_application + EVT_SHIFT*SecurityProtocol_IN_ping
+};
+
+
+static void setState(Supervisor* self, int new_state) {
+ self->state = (etInt16) new_state;
+}
+
+static int getState(Supervisor* self) {
+ return self->state;
+}
+
+/* Entry and Exit Codes */
+
+/* Action Codes */
+static void action_TRANS_tr0_FROM_PingPongActive_TO_PingPongActive_BY_pingapplication_tr0(Supervisor* self, const InterfaceItemBase* ifitem) {
+ SecurityProtocolPort_pong(&self->constData->application) /* ORIG: application.pong() */;
+}
+
+/**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ * @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
+ */
+static void exitTo(Supervisor* self, int current, int to, boolean handler) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_PingPongActive:
+ self->history[STATE_TOP] = STATE_PingPongActive;
+ current = STATE_TOP;
+ break;
+ }
+ }
+}
+
+/**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the ID of the final state
+ */
+static int executeTransitionChain(Supervisor* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__PingPongActive:
+ {
+ return STATE_PingPongActive;
+ }
+ case CHAIN_TRANS_tr0_FROM_PingPongActive_TO_PingPongActive_BY_pingapplication_tr0:
+ {
+ action_TRANS_tr0_FROM_PingPongActive_TO_PingPongActive_BY_pingapplication_tr0(self, ifitem);
+ return STATE_PingPongActive;
+ }
+ }
+ return NO_STATE;
+}
+
+/**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @param handler - entry code is executed if not handler
+ * @return - the ID of the final leaf state
+ */
+static int enterHistory(Supervisor* self, int state, boolean handler, boolean skip_entry) {
+ while (TRUE) {
+ switch (state) {
+ case STATE_PingPongActive:
+ // in leaf state: return state id
+ return STATE_PingPongActive;
+ case STATE_TOP:
+ state = self->history[STATE_TOP];
+ break;
+ }
+ skip_entry = FALSE;
+ }
+ //return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)
+}
+
+static void Supervisor_executeInitTransition(Supervisor* self) {
+ int chain = CHAIN_TRANS_INITIAL_TO__PingPongActive;
+ int next = executeTransitionChain(self, chain, NULL, NULL);
+ next = enterHistory(self, next, FALSE, FALSE);
+ setState(self, next);
+}
+
+/* receiveEvent contains the main implementation of the FSM */
+static void Supervisor_receiveEvent(Supervisor* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
+ int trigger = ifitem->localId + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+ boolean is_handler = FALSE;
+ boolean skip_entry = FALSE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState(self)) {
+ case STATE_PingPongActive:
+ switch(trigger) {
+ case TRIG_application__ping:
+ {
+ chain = CHAIN_TRANS_tr0_FROM_PingPongActive_TO_PingPongActive_BY_pingapplication_tr0;
+ catching_state = STATE_TOP;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(self, getState(self), catching_state, is_handler);
+ int next = executeTransitionChain(self, chain, ifitem, generic_data);
+ next = enterHistory(self, next, is_handler, skip_entry);
+ setState(self, next);
+ }
+}
+
+//******************************************
+// END of generated code for FSM
+//******************************************
+
+void Supervisor_init(Supervisor* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("Supervisor", "init")
+ self->state = STATE_TOP;
+ {
+ int i;
+ for (i=0; i<SUPERVISOR_HISTORY_SIZE; ++i)
+ self->history[i] = NO_STATE;
+ }
+ Supervisor_executeInitTransition(self);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+void Supervisor_receiveMessage(void* self, void* ifitem, const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("Supervisor", "_receiveMessage")
+
+ Supervisor_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+
+/*--------------------- operations ---------------------*/
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.h
new file mode 100644
index 0000000..345e19a
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Supervisor.h
@@ -0,0 +1,60 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass Supervisor
+ *
+ */
+
+#ifndef _SUPERVISOR_H_
+#define _SUPERVISOR_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+#include "SecurityProtocol.h"
+
+
+typedef struct Supervisor Supervisor;
+
+/* const part of ActorClass (ROM) */
+typedef struct Supervisor_const {
+ /* simple ports */
+ const SecurityProtocolPort application;
+
+ /* data receive ports */
+
+ /* saps */
+
+ /* replicated ports */
+
+ /* services */
+} Supervisor_const;
+
+
+/* constant for state machine data */
+#define SUPERVISOR_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct Supervisor {
+ const Supervisor_const* const constData;
+
+ /* data send ports */
+
+ /*--------------------- attributes ---------------------*/
+
+
+ /* state machine variables */
+ etInt16 state;
+ etInt16 history[SUPERVISOR_HISTORY_SIZE];
+};
+
+void Supervisor_init(Supervisor* self);
+
+void Supervisor_receiveMessage(void* self, void* ifitem, const etMessage* msg);
+
+
+/*--------------------- operations ---------------------*/
+
+
+#endif /* _SUPERVISOR_H_ */
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.c
index b04db93..a54f8b5 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/Sender.c
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.c
@@ -1,11 +1,11 @@
/**
* @author generated by eTrice
*
- * Source File of ActorClass Sender
+ * Source File of ActorClass Tester
*
*/
-#include "Sender.h"
+#include "Tester.h"
#include "modelbase/etActor.h"
#include "debugging/etLogger.h"
@@ -18,53 +18,48 @@
/* interface item IDs */
enum interface_items {
- IFITEM_dataOut = 1
+ IFITEM_outport = 1,
+ IFITEM_inport = 2
};
/* state IDs */
enum state_ids {
NO_STATE = 0,
STATE_TOP = 1,
- STATE_SendingData = 2,
+ STATE_Started = 2,
STATE_Done = 3
};
/* transition chains */
enum chain_ids {
- CHAIN_TRANS_INITIAL_TO__SendingData = 1,
- CHAIN_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut = 2
+ CHAIN_TRANS_INITIAL_TO__Started = 1,
+ CHAIN_TRANS_tr0_FROM_Started_TO_Done_BY_sendDatainport = 2
};
/* triggers */
enum triggers {
POLLING = 0,
- TRIG_dataOut__receivedData = IFITEM_dataOut + EVT_SHIFT*CommunicationProtocol_OUT_receivedData
+ TRIG_inport__sendData = IFITEM_inport + EVT_SHIFT*CommunicationProtocol_IN_sendData
};
-static void setState(Sender* self, int new_state) {
+static void setState(Tester* self, int new_state) {
self->state = (etInt16) new_state;
}
-static int getState(Sender* self) {
+static int getState(Tester* self) {
return self->state;
}
/* Entry and Exit Codes */
-static void entry_SendingData(Sender* self) {
- CommunicationProtocolConjPort_sendData(&self->constData->dataOut) /* ORIG: dataOut.sendData() */;
+static void entry_Started(Tester* self) {
+ CommunicationProtocolConjPort_sendData(&self->constData->outport) /* ORIG: outport.sendData() */;
}
-static void entry_Done(Sender* self) {
- etLogger_logInfo("+++ Sender Done +++");
+static void entry_Done(Tester* self) {
+ etLogger_logInfo("+++ Test Done +++");
}
/* Action Codes */
-static void action_TRANS_INITIAL_TO__SendingData(Sender* self) {
- self->counter /* ORIG: counter */=0;
-}
-static void action_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut(Sender* self, const InterfaceItemBase* ifitem) {
- self->counter /* ORIG: counter */++;
-}
/**
* calls exit codes while exiting from the current state to one of its
@@ -73,11 +68,11 @@ static void action_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut(Send
* @param to - the final parent state
* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)
*/
-static void exitTo(Sender* self, int current, int to, boolean handler) {
+static void exitTo(Tester* self, int current, int to, boolean handler) {
while (current!=to) {
switch (current) {
- case STATE_SendingData:
- self->history[STATE_TOP] = STATE_SendingData;
+ case STATE_Started:
+ self->history[STATE_TOP] = STATE_Started;
current = STATE_TOP;
break;
case STATE_Done:
@@ -95,20 +90,15 @@ static void exitTo(Sender* self, int current, int to, boolean handler) {
* @param generic_data - the generic data pointer
* @return the ID of the final state
*/
-static int executeTransitionChain(Sender* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
+static int executeTransitionChain(Tester* self, int chain, const InterfaceItemBase* ifitem, void* generic_data) {
switch (chain) {
- case CHAIN_TRANS_INITIAL_TO__SendingData:
+ case CHAIN_TRANS_INITIAL_TO__Started:
{
- action_TRANS_INITIAL_TO__SendingData(self);
- return STATE_SendingData;
+ return STATE_Started;
}
- case CHAIN_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut:
+ case CHAIN_TRANS_tr0_FROM_Started_TO_Done_BY_sendDatainport:
{
- action_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut(self, ifitem);
- if (self->counter /* ORIG: counter */<10) {
- return STATE_SendingData;}
- else {
- return STATE_Done;}
+ return STATE_Done;
}
}
return NO_STATE;
@@ -120,13 +110,13 @@ static int executeTransitionChain(Sender* self, int chain, const InterfaceItemBa
* @param handler - entry code is executed if not handler
* @return - the ID of the final leaf state
*/
-static int enterHistory(Sender* self, int state, boolean handler, boolean skip_entry) {
+static int enterHistory(Tester* self, int state, boolean handler, boolean skip_entry) {
while (TRUE) {
switch (state) {
- case STATE_SendingData:
- if (!(skip_entry || handler)) entry_SendingData(self);
+ case STATE_Started:
+ if (!(skip_entry || handler)) entry_Started(self);
// in leaf state: return state id
- return STATE_SendingData;
+ return STATE_Started;
case STATE_Done:
if (!(skip_entry || handler)) entry_Done(self);
// in leaf state: return state id
@@ -140,15 +130,15 @@ static int enterHistory(Sender* self, int state, boolean handler, boolean skip_e
//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)
}
-static void Sender_executeInitTransition(Sender* self) {
- int chain = CHAIN_TRANS_INITIAL_TO__SendingData;
+static void Tester_executeInitTransition(Tester* self) {
+ int chain = CHAIN_TRANS_INITIAL_TO__Started;
int next = executeTransitionChain(self, chain, NULL, NULL);
next = enterHistory(self, next, FALSE, FALSE);
setState(self, next);
}
/* receiveEvent contains the main implementation of the FSM */
-static void Sender_receiveEvent(Sender* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
+static void Tester_receiveEvent(Tester* self, InterfaceItemBase* ifitem, int evt, void* generic_data) {
int trigger = ifitem->localId + EVT_SHIFT*evt;
int chain = NOT_CAUGHT;
int catching_state = NO_STATE;
@@ -157,11 +147,11 @@ static void Sender_receiveEvent(Sender* self, InterfaceItemBase* ifitem, int evt
if (!handleSystemEvent(ifitem, evt, generic_data)) {
switch (getState(self)) {
- case STATE_SendingData:
+ case STATE_Started:
switch(trigger) {
- case TRIG_dataOut__receivedData:
+ case TRIG_inport__sendData:
{
- chain = CHAIN_TRANS_tr0_FROM_SendingData_TO_cp0_BY_receivedDatadataOut;
+ chain = CHAIN_TRANS_tr0_FROM_Started_TO_Done_BY_sendDatainport;
catching_state = STATE_TOP;
}
break;
@@ -183,23 +173,23 @@ static void Sender_receiveEvent(Sender* self, InterfaceItemBase* ifitem, int evt
// END of generated code for FSM
//******************************************
-void Sender_init(Sender* self){
- ET_MSC_LOGGER_SYNC_ENTRY("Sender", "init")
+void Tester_init(Tester* self){
+ ET_MSC_LOGGER_SYNC_ENTRY("Tester", "init")
self->state = STATE_TOP;
{
int i;
- for (i=0; i<SENDER_HISTORY_SIZE; ++i)
+ for (i=0; i<TESTER_HISTORY_SIZE; ++i)
self->history[i] = NO_STATE;
}
- Sender_executeInitTransition(self);
+ Tester_executeInitTransition(self);
ET_MSC_LOGGER_SYNC_EXIT
}
-void Sender_receiveMessage(void* self, void* ifitem, const etMessage* msg){
- ET_MSC_LOGGER_SYNC_ENTRY("Sender", "_receiveMessage")
+void Tester_receiveMessage(void* self, void* ifitem, const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("Tester", "_receiveMessage")
- Sender_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
+ Tester_receiveEvent(self, (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage))));
ET_MSC_LOGGER_SYNC_EXIT
}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.h
new file mode 100644
index 0000000..562d910
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/Tester.h
@@ -0,0 +1,61 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ActorClass Tester
+ *
+ */
+
+#ifndef _TESTER_H_
+#define _TESTER_H_
+
+#include "etDatatypes.h"
+#include "messaging/etMessage.h"
+
+#include "CommunicationProtocol.h"
+
+
+typedef struct Tester Tester;
+
+/* const part of ActorClass (ROM) */
+typedef struct Tester_const {
+ /* simple ports */
+ const CommunicationProtocolConjPort outport;
+ const CommunicationProtocolPort inport;
+
+ /* data receive ports */
+
+ /* saps */
+
+ /* replicated ports */
+
+ /* services */
+} Tester_const;
+
+
+/* constant for state machine data */
+#define TESTER_HISTORY_SIZE 2
+
+/* variable part of ActorClass (RAM) */
+struct Tester {
+ const Tester_const* const constData;
+
+ /* data send ports */
+
+ /*--------------------- attributes ---------------------*/
+
+
+ /* state machine variables */
+ etInt16 state;
+ etInt16 history[TESTER_HISTORY_SIZE];
+};
+
+void Tester_init(Tester* self);
+
+void Tester_receiveMessage(void* self, void* ifitem, const etMessage* msg);
+
+
+/*--------------------- operations ---------------------*/
+
+
+#endif /* _TESTER_H_ */
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.c
index 53879ec..f1cf76f 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.c
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.c
@@ -34,7 +34,7 @@ static void node1_sys1_initMessageServices(void) {
/* filling all message service threads with data */
msgService_PhysicalThread1.thread.stacksize = 1024;
- msgService_PhysicalThread1.thread.priority = 5;
+ msgService_PhysicalThread1.thread.priority = 1;
msgService_PhysicalThread1.thread.threadName = "PhysicalThread1";
msgService_PhysicalThread1.thread.threadFunction = (etThreadFunction) etMessageService_execute;
msgService_PhysicalThread1.thread.threadFunctionData = &msgService_PhysicalThread1;
@@ -46,9 +46,17 @@ static void node1_sys1_initMessageServices(void) {
msgService_PhysicalThread2.thread.threadFunction = (etThreadFunction) etMessageService_execute;
msgService_PhysicalThread2.thread.threadFunctionData = &msgService_PhysicalThread2;
+
+ msgService_PhysicalThread3.thread.stacksize = 1024;
+ msgService_PhysicalThread3.thread.priority = 10;
+ msgService_PhysicalThread3.thread.threadName = "PhysicalThread3";
+ msgService_PhysicalThread3.thread.threadFunction = (etThreadFunction) etMessageService_execute;
+ msgService_PhysicalThread3.thread.threadFunctionData = &msgService_PhysicalThread3;
+
/* initialization of all message services */
- etMessageService_init(&msgService_PhysicalThread1, msgBuffer_PhysicalThread1, 5, 64, MsgDispatcher_PhysicalThread1_receiveMessage);
- etMessageService_init(&msgService_PhysicalThread2, msgBuffer_PhysicalThread2, 3, 64, MsgDispatcher_PhysicalThread2_receiveMessage);
+ etMessageService_init(&msgService_PhysicalThread1, msgBuffer_PhysicalThread1, 50, 64, MsgDispatcher_PhysicalThread1_receiveMessage, MsgDispatcher_PhysicalThread1_execute, EXECMODE_BLOCKED);
+ etMessageService_init(&msgService_PhysicalThread2, msgBuffer_PhysicalThread2, 50, 64, MsgDispatcher_PhysicalThread2_receiveMessage, MsgDispatcher_PhysicalThread2_execute, EXECMODE_BLOCKED);
+ etMessageService_init(&msgService_PhysicalThread3, msgBuffer_PhysicalThread3, 50, 64, MsgDispatcher_PhysicalThread3_receiveMessage, MsgDispatcher_PhysicalThread3_execute, EXECMODE_BLOCKED);
ET_MSC_LOGGER_SYNC_EXIT
}
@@ -58,6 +66,7 @@ static void node1_sys1_startMessageServices(void) {
etMessageService_start(&msgService_PhysicalThread1);
etMessageService_start(&msgService_PhysicalThread2);
+ etMessageService_start(&msgService_PhysicalThread3);
ET_MSC_LOGGER_SYNC_EXIT
}
@@ -67,6 +76,7 @@ static void node1_sys1_stopMessageServices(void) {
etMessageService_stop(&msgService_PhysicalThread1);
etMessageService_stop(&msgService_PhysicalThread2);
+ etMessageService_stop(&msgService_PhysicalThread3);
ET_MSC_LOGGER_SYNC_EXIT
}
@@ -76,6 +86,7 @@ static void node1_sys1_destroyMessageServices(void) {
etMessageService_destroy(&msgService_PhysicalThread1);
etMessageService_destroy(&msgService_PhysicalThread2);
+ etMessageService_destroy(&msgService_PhysicalThread3);
ET_MSC_LOGGER_SYNC_EXIT
}
@@ -150,8 +161,20 @@ void node1_sys1_constructActorInstances(void){
void node1_sys1_initActorInstances(void){
ET_MSC_LOGGER_SYNC_ENTRY("node1_sys1", "initActorInstances")
- Sender_init(&_LS_sys1_Sender);
- Receiver_init(&_LS_sys1_Receiver);
+ Tester_init(&_LS_sys1_tester);
+ Fork_init(&_LS_sys1_fork);
+ Redirect_init(&_LS_sys1_redirect1);
+ Redirect_init(&_LS_sys1_redirect2);
+ Redirect_init(&_LS_sys1_redirect3);
+ Redirect_init(&_LS_sys1_redirect4);
+ Redirect_init(&_LS_sys1_redirect5);
+ Redirect_init(&_LS_sys1_redirect6);
+ Redirect_init(&_LS_sys1_redirect7);
+ Redirect_init(&_LS_sys1_redirect8);
+ Redirect_init(&_LS_sys1_redirect9);
+ Redirect_init(&_LS_sys1_redirect10);
+ Join_init(&_LS_sys1_join);
+ Supervisor_init(&_LS_sys1_supervisor);
ET_MSC_LOGGER_SYNC_EXIT
}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.h
index 1cd6dd4..1cd6dd4 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1.h
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1.h
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Disp.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Disp.h
new file mode 100644
index 0000000..689a3a5
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Disp.h
@@ -0,0 +1,235 @@
+/**
+ * @author generated by eTrice
+ *
+ * Dispatcher File of Node node1 with SubSystem sys1
+ * - one generated message dispatcher (receiveMessage) for each MessageService (Thread)
+ * - one generated execute dispatcher (execute) for each MessageService (Thread)
+ */
+
+#include "messaging/etMessageReceiver.h"
+#include "debugging/etLogger.h"
+#include "debugging/etMSCLogger.h"
+
+
+
+/**
+ * generated dispatch function all messages for the tread "PhysicalThread1"
+ */
+static void MsgDispatcher_PhysicalThread1_receiveMessage(const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_PhysicalThread1", "receiveMessage")
+ switch(msg->address){
+
+ /* interface items of /LS/sys1/tester */
+ case 102:
+ Tester_receiveMessage((void*)&_LS_sys1_tester,(etPort*)&_LS_sys1_tester_const.outport, msg);
+ break;
+ case 103:
+ Tester_receiveMessage((void*)&_LS_sys1_tester,(etPort*)&_LS_sys1_tester_const.inport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect3 */
+ case 123:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect3,(etPort*)&_LS_sys1_redirect3_const.inport, msg);
+ break;
+ case 124:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect3,(etPort*)&_LS_sys1_redirect3_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect4 */
+ case 126:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect4,(etPort*)&_LS_sys1_redirect4_const.inport, msg);
+ break;
+ case 127:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect4,(etPort*)&_LS_sys1_redirect4_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect5 */
+ case 129:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect5,(etPort*)&_LS_sys1_redirect5_const.inport, msg);
+ break;
+ case 130:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect5,(etPort*)&_LS_sys1_redirect5_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect6 */
+ case 132:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect6,(etPort*)&_LS_sys1_redirect6_const.inport, msg);
+ break;
+ case 133:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect6,(etPort*)&_LS_sys1_redirect6_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect7 */
+ case 135:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect7,(etPort*)&_LS_sys1_redirect7_const.inport, msg);
+ break;
+ case 136:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect7,(etPort*)&_LS_sys1_redirect7_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect8 */
+ case 138:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect8,(etPort*)&_LS_sys1_redirect8_const.inport, msg);
+ break;
+ case 139:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect8,(etPort*)&_LS_sys1_redirect8_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect9 */
+ case 141:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect9,(etPort*)&_LS_sys1_redirect9_const.inport, msg);
+ break;
+ case 142:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect9,(etPort*)&_LS_sys1_redirect9_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect10 */
+ case 144:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect10,(etPort*)&_LS_sys1_redirect10_const.inport, msg);
+ break;
+ case 145:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect10,(etPort*)&_LS_sys1_redirect10_const.outport, msg);
+ break;
+
+ default:
+ etLogger_logErrorF("MessageService_PhysicalThread1_receiveMessage: address %d does not exist ", msg->address);
+ break;
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+/**
+ * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "PhysicalThread1"
+ */
+static void MsgDispatcher_PhysicalThread1_execute(void){
+ /* nothing to execute -> empty function generated to satisfy interface of message service */
+}
+
+
+
+/**
+ * generated dispatch function all messages for the tread "PhysicalThread2"
+ */
+static void MsgDispatcher_PhysicalThread2_receiveMessage(const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_PhysicalThread2", "receiveMessage")
+ switch(msg->address){
+
+ /* interface items of /LS/sys1/fork */
+ case 105:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[0], msg);
+ break;
+ case 106:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[1], msg);
+ break;
+ case 107:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[2], msg);
+ break;
+ case 108:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[3], msg);
+ break;
+ case 109:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[4], msg);
+ break;
+ case 110:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[5], msg);
+ break;
+ case 111:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[6], msg);
+ break;
+ case 112:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[7], msg);
+ break;
+ case 113:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[8], msg);
+ break;
+ case 114:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.broadcast.ports[9], msg);
+ break;
+ case 115:
+ Fork_receiveMessage((void*)&_LS_sys1_fork,(etPort*)&_LS_sys1_fork_const.inport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect1 */
+ case 117:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect1,(etPort*)&_LS_sys1_redirect1_const.inport, msg);
+ break;
+ case 118:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect1,(etPort*)&_LS_sys1_redirect1_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/redirect2 */
+ case 120:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect2,(etPort*)&_LS_sys1_redirect2_const.inport, msg);
+ break;
+ case 121:
+ Redirect_receiveMessage((void*)&_LS_sys1_redirect2,(etPort*)&_LS_sys1_redirect2_const.outport, msg);
+ break;
+ /* interface items of /LS/sys1/join */
+ case 147:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[0], msg);
+ break;
+ case 148:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[1], msg);
+ break;
+ case 149:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[2], msg);
+ break;
+ case 150:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[3], msg);
+ break;
+ case 151:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[4], msg);
+ break;
+ case 152:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[5], msg);
+ break;
+ case 153:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[6], msg);
+ break;
+ case 154:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[7], msg);
+ break;
+ case 155:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[8], msg);
+ break;
+ case 156:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.inport.ports[9], msg);
+ break;
+ case 157:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.outport, msg);
+ break;
+ case 158:
+ Join_receiveMessage((void*)&_LS_sys1_join,(etPort*)&_LS_sys1_join_const.security, msg);
+ break;
+
+ default:
+ etLogger_logErrorF("MessageService_PhysicalThread2_receiveMessage: address %d does not exist ", msg->address);
+ break;
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+/**
+ * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "PhysicalThread2"
+ */
+static void MsgDispatcher_PhysicalThread2_execute(void){
+ /* nothing to execute -> empty function generated to satisfy interface of message service */
+}
+
+
+
+/**
+ * generated dispatch function all messages for the tread "PhysicalThread3"
+ */
+static void MsgDispatcher_PhysicalThread3_receiveMessage(const etMessage* msg){
+ ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_PhysicalThread3", "receiveMessage")
+ switch(msg->address){
+
+ /* interface items of /LS/sys1/supervisor */
+ case 160:
+ Supervisor_receiveMessage((void*)&_LS_sys1_supervisor,(etPort*)&_LS_sys1_supervisor_const.application, msg);
+ break;
+
+ default:
+ etLogger_logErrorF("MessageService_PhysicalThread3_receiveMessage: address %d does not exist ", msg->address);
+ break;
+ }
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+/**
+ * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "PhysicalThread3"
+ */
+static void MsgDispatcher_PhysicalThread3_execute(void){
+ /* nothing to execute -> empty function generated to satisfy interface of message service */
+}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Inst.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Inst.h
new file mode 100644
index 0000000..4be4713
--- /dev/null
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Inst.h
@@ -0,0 +1,333 @@
+/**
+ * @author generated by eTrice
+ *
+ * Instance File of Node node1 with SubSystem sys1
+ * - instantiation of all actor instances and port instances
+ * - configuration of data and connection of ports
+ */
+
+#include "messaging/etMessageService.h"
+#include "platform/etMemory.h"
+
+/* include all used ActorClasses */
+#include "Join.h"
+#include "Redirect.h"
+#include "Tester.h"
+#include "Supervisor.h"
+#include "Fork.h"
+
+/* include all used ProtcolClasses */
+#include "SecurityProtocol.h"
+#include "CommunicationProtocol.h"
+
+/* instantiation of message services and message buffers */
+/* PhysicalThread1 */
+static uint8 msgBuffer_PhysicalThread1[50 * 64]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
+static etMessageService msgService_PhysicalThread1;
+/* PhysicalThread2 */
+static uint8 msgBuffer_PhysicalThread2[50 * 64]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
+static etMessageService msgService_PhysicalThread2;
+/* PhysicalThread3 */
+static uint8 msgBuffer_PhysicalThread3[50 * 64]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
+static etMessageService msgService_PhysicalThread3;
+
+/* declarations of all ActorClass instances (const and variable structs) */
+
+/* forward declaration of variable actor structs */
+static Tester _LS_sys1_tester;
+static Fork _LS_sys1_fork;
+static Redirect _LS_sys1_redirect1;
+static Redirect _LS_sys1_redirect2;
+static Redirect _LS_sys1_redirect3;
+static Redirect _LS_sys1_redirect4;
+static Redirect _LS_sys1_redirect5;
+static Redirect _LS_sys1_redirect6;
+static Redirect _LS_sys1_redirect7;
+static Redirect _LS_sys1_redirect8;
+static Redirect _LS_sys1_redirect9;
+static Redirect _LS_sys1_redirect10;
+static Join _LS_sys1_join;
+static Supervisor _LS_sys1_supervisor;
+
+/* forward declaration of variable port structs */
+
+
+/* instance _LS_sys1_tester */
+static const Tester_const _LS_sys1_tester_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 115, 1} /* Port outport */,
+ {0, &msgService_PhysicalThread2, 157, 2} /* Port inport */
+
+ /* data receive ports */
+};
+static Tester _LS_sys1_tester = {
+ &_LS_sys1_tester_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_fork */
+static const etReplSubPort _LS_sys1_fork_repl_sub_ports[10] = {
+ /* Replicated Sub Ports: {varData, msgService, peerAddress, localId, index} */
+ {0,&msgService_PhysicalThread2, 117, 1, 0}, /* Repl Sub Port broadcast idx +0*/
+ {0,&msgService_PhysicalThread2, 120, 1, 1}, /* Repl Sub Port broadcast idx +1*/
+ {0,&msgService_PhysicalThread1, 123, 1, 2}, /* Repl Sub Port broadcast idx +2*/
+ {0,&msgService_PhysicalThread1, 126, 1, 3}, /* Repl Sub Port broadcast idx +3*/
+ {0,&msgService_PhysicalThread1, 129, 1, 4}, /* Repl Sub Port broadcast idx +4*/
+ {0,&msgService_PhysicalThread1, 132, 1, 5}, /* Repl Sub Port broadcast idx +5*/
+ {0,&msgService_PhysicalThread1, 135, 1, 6}, /* Repl Sub Port broadcast idx +6*/
+ {0,&msgService_PhysicalThread1, 138, 1, 7}, /* Repl Sub Port broadcast idx +7*/
+ {0,&msgService_PhysicalThread1, 141, 1, 8}, /* Repl Sub Port broadcast idx +8*/
+ {0,&msgService_PhysicalThread1, 144, 1, 9} /* Repl Sub Port broadcast idx +9*/
+};
+static const Fork_const _LS_sys1_fork_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread1, 102, 2} /* Port inport */,
+ {10, _LS_sys1_fork_repl_sub_ports+0}
+
+ /* data receive ports */
+};
+static Fork _LS_sys1_fork = {
+ &_LS_sys1_fork_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect1 */
+static const Redirect_const _LS_sys1_redirect1_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 105, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 147, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect1 = {
+ &_LS_sys1_redirect1_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect2 */
+static const Redirect_const _LS_sys1_redirect2_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 106, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 148, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect2 = {
+ &_LS_sys1_redirect2_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect3 */
+static const Redirect_const _LS_sys1_redirect3_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 107, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 149, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect3 = {
+ &_LS_sys1_redirect3_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect4 */
+static const Redirect_const _LS_sys1_redirect4_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 108, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 150, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect4 = {
+ &_LS_sys1_redirect4_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect5 */
+static const Redirect_const _LS_sys1_redirect5_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 109, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 151, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect5 = {
+ &_LS_sys1_redirect5_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect6 */
+static const Redirect_const _LS_sys1_redirect6_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 110, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 152, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect6 = {
+ &_LS_sys1_redirect6_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect7 */
+static const Redirect_const _LS_sys1_redirect7_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 111, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 153, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect7 = {
+ &_LS_sys1_redirect7_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect8 */
+static const Redirect_const _LS_sys1_redirect8_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 112, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 154, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect8 = {
+ &_LS_sys1_redirect8_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect9 */
+static const Redirect_const _LS_sys1_redirect9_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 113, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 155, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect9 = {
+ &_LS_sys1_redirect9_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_redirect10 */
+static const Redirect_const _LS_sys1_redirect10_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 114, 1} /* Port inport */,
+ {0, &msgService_PhysicalThread2, 156, 2} /* Port outport */
+
+ /* data receive ports */
+};
+static Redirect _LS_sys1_redirect10 = {
+ &_LS_sys1_redirect10_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_join */
+static const etReplSubPort _LS_sys1_join_repl_sub_ports[10] = {
+ /* Replicated Sub Ports: {varData, msgService, peerAddress, localId, index} */
+ {0,&msgService_PhysicalThread2, 118, 1, 0}, /* Repl Sub Port inport idx +0*/
+ {0,&msgService_PhysicalThread2, 121, 1, 1}, /* Repl Sub Port inport idx +1*/
+ {0,&msgService_PhysicalThread1, 124, 1, 2}, /* Repl Sub Port inport idx +2*/
+ {0,&msgService_PhysicalThread1, 127, 1, 3}, /* Repl Sub Port inport idx +3*/
+ {0,&msgService_PhysicalThread1, 130, 1, 4}, /* Repl Sub Port inport idx +4*/
+ {0,&msgService_PhysicalThread1, 133, 1, 5}, /* Repl Sub Port inport idx +5*/
+ {0,&msgService_PhysicalThread1, 136, 1, 6}, /* Repl Sub Port inport idx +6*/
+ {0,&msgService_PhysicalThread1, 139, 1, 7}, /* Repl Sub Port inport idx +7*/
+ {0,&msgService_PhysicalThread1, 142, 1, 8}, /* Repl Sub Port inport idx +8*/
+ {0,&msgService_PhysicalThread1, 145, 1, 9} /* Repl Sub Port inport idx +9*/
+};
+static const Join_const _LS_sys1_join_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread1, 103, 2} /* Port outport */,
+ {0, &msgService_PhysicalThread3, 160, 3} /* Port security */,
+ {10, _LS_sys1_join_repl_sub_ports+0}
+
+ /* data receive ports */
+};
+static Join _LS_sys1_join = {
+ &_LS_sys1_join_const,
+
+ /* data send ports */
+
+ /* attributes */
+ 0 /* counter */
+
+ /* state and history are initialized in init fuction */
+};
+
+/* instance _LS_sys1_supervisor */
+static const Supervisor_const _LS_sys1_supervisor_const = {
+ /* Ports: {varData, msgService, peerAddress, localId} */
+ {0, &msgService_PhysicalThread2, 158, 1} /* Port application */
+
+ /* data receive ports */
+};
+static Supervisor _LS_sys1_supervisor = {
+ &_LS_sys1_supervisor_const,
+
+ /* data send ports */
+
+ /* attributes */
+
+ /* state and history are initialized in init fuction */
+};
+
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Runner.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Runner.c
index c321f75..c321f75 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Runner.c
+++ b/examples/org.eclipse.etrice.generator.c.reference/src-gen/MassiveMultiThreading/node1_sys1_Runner.c
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.c
deleted file mode 100644
index 5ff2a95..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Source File of DataClass DataClass1
- *
- */
-
-#include "DataClass1.h"
-
-#include <string.h>
-
-/*--------------------- begin user code ---------------------*/
-// usercode3
-/*--------------------- end user code ---------------------*/
-
-
-/*--------------------- operations ---------------------*/
-int32 DataClass1_MultiplyWithAttr1(DataClass1* self, int32 value) {
- return self->Attr1 /* ORIG: Attr1 */*value;
-}
-float32 DataClass1_MultiplyWithAttr3(DataClass1* self, float32 value) {
- return self->Attr3 /* ORIG: Attr3 */*value;
-}
-
-// deep copy
-void DataClass1_deepCopy(DataClass1* source, DataClass1* target) {
- memcpy(target, source, sizeof(DataClass1));
-}
-
-
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.h
deleted file mode 100644
index 4f3176f..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass1.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Header File of DataClass DataClass1
- *
- */
-
-#ifndef _DATACLASS1_H_
-#define _DATACLASS1_H_
-
-#include "etDatatypes.h"
-
-#include "DataClass2.h"
-
-/*--------------------- begin user code ---------------------*/
-// usercode1
-/*--------------------- end user code ---------------------*/
-
-typedef struct {
- /*--------------------- attributes ---------------------*/
- int32 Attr1;
- DataClass2 ComplexAttr;
- float32 Attr3;
-} DataClass1;
-
-
-
-/*--------------------- operations ---------------------*/
-int32 DataClass1_MultiplyWithAttr1(DataClass1* self, int32 value);
-float32 DataClass1_MultiplyWithAttr3(DataClass1* self, float32 value);
-
-/* deep copy */
-void DataClass1_deepCopy(DataClass1* source, DataClass1* target);
-
-/*--------------------- begin user code ---------------------*/
-// usercode2
-/*--------------------- end user code ---------------------*/
-
-#endif /* _DATACLASS1_H_ */
-
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.c b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.c
deleted file mode 100644
index ab4bbb2..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Source File of DataClass DataClass2
- *
- */
-
-#include "DataClass2.h"
-
-#include <string.h>
-
-
-
-/*--------------------- operations ---------------------*/
-void DataClass2_Operation1(DataClass2* self) {
- /*nothing to do*/
-}
-
-// deep copy
-void DataClass2_deepCopy(DataClass2* source, DataClass2* target) {
- memcpy(target, source, sizeof(DataClass2));
-}
-
-
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.h
deleted file mode 100644
index ecfba3a..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/DataClass2.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Header File of DataClass DataClass2
- *
- */
-
-#ifndef _DATACLASS2_H_
-#define _DATACLASS2_H_
-
-#include "etDatatypes.h"
-
-
-
-typedef struct {
- /*--------------------- attributes ---------------------*/
- int32 Attr1;
- float32 Attr2;
- int32 Attr3;
-} DataClass2;
-
-
-
-/*--------------------- operations ---------------------*/
-void DataClass2_Operation1(DataClass2* self);
-
-/* deep copy */
-void DataClass2_deepCopy(DataClass2* source, DataClass2* target);
-
-
-#endif /* _DATACLASS2_H_ */
-
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Disp.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Disp.h
deleted file mode 100644
index 6df3a8d..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Disp.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Dispatcher File of Node node1 with SubSystem sys1
- * - one generated dispatcher for each MessageService (Thread)
- */
-
-#include "messaging/etMessageReceiver.h"
-#include "debugging/etLogger.h"
-#include "debugging/etMSCLogger.h"
-
-static void MsgDispatcher_PhysicalThread1_receiveMessage(const etMessage* msg){
- ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_PhysicalThread1", "receiveMessage")
- switch(msg->address){
-
- /* interface items of /LS/sys1/Receiver */
- case 104:
- Receiver_receiveMessage((void*)&_LS_sys1_Receiver,(etPort*)&_LS_sys1_Receiver_const.dataIn, msg);
- break;
-
- default:
- etLogger_logErrorF("MessageService_PhysicalThread1_receiveMessage: address %d does not exist ", msg->address);
- break;
- }
- ET_MSC_LOGGER_SYNC_EXIT
-}
-
-static void MsgDispatcher_PhysicalThread2_receiveMessage(const etMessage* msg){
- ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_PhysicalThread2", "receiveMessage")
- switch(msg->address){
-
- /* interface items of /LS/sys1/Sender */
- case 102:
- Sender_receiveMessage((void*)&_LS_sys1_Sender,(etPort*)&_LS_sys1_Sender_const.dataOut, msg);
- break;
-
- default:
- etLogger_logErrorF("MessageService_PhysicalThread2_receiveMessage: address %d does not exist ", msg->address);
- break;
- }
- ET_MSC_LOGGER_SYNC_EXIT
-}
diff --git a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Inst.h b/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Inst.h
deleted file mode 100644
index b966af7..0000000
--- a/examples/org.eclipse.etrice.generator.c.reference/src-gen/cGenRef/node1_sys1_Inst.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * @author generated by eTrice
- *
- * Instance File of Node node1 with SubSystem sys1
- * - instantiation of all actor instances and port instances
- * - configuration of data and connection of ports
- */
-
-#include "messaging/etMessageService.h"
-#include "platform/etMemory.h"
-
-/* include all used ActorClasses */
-#include "Receiver.h"
-#include "Sender.h"
-
-/* include all used ProtcolClasses */
-#include "CommunicationProtocol.h"
-
-/* instantiation of message services and message buffers */
-/* PhysicalThread1 */
-static uint8 msgBuffer_PhysicalThread1[5 * 64]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
-static etMessageService msgService_PhysicalThread1;
-/* PhysicalThread2 */
-static uint8 msgBuffer_PhysicalThread2[3 * 64]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
-static etMessageService msgService_PhysicalThread2;
-
-/* declarations of all ActorClass instances (const and variable structs) */
-
-/* forward declaration of variable actor structs */
-static Sender _LS_sys1_Sender;
-static Receiver _LS_sys1_Receiver;
-
-/* forward declaration of variable port structs */
-
-
-/* instance _LS_sys1_Sender */
-static const Sender_const _LS_sys1_Sender_const = {
- /* Ports: {varData, msgService, peerAddress, localId} */
- {0, &msgService_PhysicalThread1, 104, 1} /* Port dataOut */
-
- /* data receive ports */
-};
-static Sender _LS_sys1_Sender = {
- &_LS_sys1_Sender_const,
-
- /* data send ports */
-
- /* attributes */
- 0 /* counter */
-
- /* state and history are initialized in init fuction */
-};
-
-/* instance _LS_sys1_Receiver */
-static const Receiver_const _LS_sys1_Receiver_const = {
- /* Ports: {varData, msgService, peerAddress, localId} */
- {0, &msgService_PhysicalThread2, 102, 1} /* Port dataIn */
-
- /* data receive ports */
-};
-static Receiver _LS_sys1_Receiver = {
- &_LS_sys1_Receiver_const,
-
- /* data send ports */
-
- /* attributes */
- {
- 0 /* Attr1 */,
- {
- 0 /* Attr1 */,
- 0 /* Attr2 */,
- 0 /* Attr3 */
- } /* ComplexAttr */,
- 0 /* Attr3 */
- } /* attr1 */
-
- /* state and history are initialized in init fuction */
-};
-
diff --git a/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq b/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq
index 096df8f..a1a052f 100644
--- a/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq
+++ b/examples/org.eclipse.etrice.generator.c.reference/tmp/msc.seq
@@ -1,1075 +1,2337 @@
-main ==> node1_sys1 init
-node1_sys1 ==> node1_sys1 constructActorInstances
+main ==> node1_sys1 init(thread=5824)
+node1_sys1 ==> node1_sys1 constructActorInstances(thread=5824)
node1_sys1 <== node1_sys1
-node1_sys1 ==> node1_sys1 initMessageServices
-node1_sys1 ==> etMessageService init
-etMessageService ==> etMessageQueue init
+node1_sys1 ==> node1_sys1 initMessageServices(thread=5824)
+node1_sys1 ==> etMessageService init(thread=5824)
+etMessageService ==> etMessageQueue init(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue init
+etMessageService ==> etMessageQueue init(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService initMessagePool
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageService initMessagePool(thread=5824)
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
etMessageService <== etMessageService
-etMessageService ==> etMutex construct
+etMessageService ==> etMutex construct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMutex construct
+etMessageService ==> etMutex construct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etSema construct
+etMessageService ==> etSema construct(thread=5824)
etMessageService <== etSema
node1_sys1 <== etMessageService
-node1_sys1 ==> etMessageService init
-etMessageService ==> etMessageQueue init
+node1_sys1 ==> etMessageService init(thread=5824)
+etMessageService ==> etMessageQueue init(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue init(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService initMessagePool(thread=5824)
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue init
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService initMessagePool
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService <== etMessageService
+etMessageService ==> etMutex construct(thread=5824)
+etMessageService <== etMutex
+etMessageService ==> etMutex construct(thread=5824)
+etMessageService <== etMutex
+etMessageService ==> etSema construct(thread=5824)
+etMessageService <== etSema
+node1_sys1 <== etMessageService
+node1_sys1 ==> etMessageService init(thread=5824)
+etMessageService ==> etMessageQueue init(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue init(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService initMessagePool(thread=5824)
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
etMessageService <== etMessageService
-etMessageService ==> etMutex construct
+etMessageService ==> etMutex construct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMutex construct
+etMessageService ==> etMutex construct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etSema construct
+etMessageService ==> etSema construct(thread=5824)
etMessageService <== etSema
node1_sys1 <== etMessageService
node1_sys1 <== node1_sys1
-node1_sys1 ==> node1_sys1 initActorInstances
-node1_sys1 ==> Sender init
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+node1_sys1 ==> node1_sys1 initActorInstances(thread=5824)
+node1_sys1 ==> Tester init(thread=5824)
+Tester ==> CommunicationProtocolConjPort sendData(thread=5824)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=5824)
+etPort ==> etMessageService getMessageBuffer(thread=5824)
+etMessageService ==> etMutex enter(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=5824)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=5824)
+etMessageService ==> etMutex enter(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=5824)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=5824)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=5824)
etMessageService <== etMutex
etPort <== etMessageService
CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-node1_sys1 <== Sender
-node1_sys1 ==> Receiver init
-node1_sys1 <== Receiver
+Tester <== CommunicationProtocolConjPort
+node1_sys1 <== Tester
+node1_sys1 ==> Fork init(thread=5824)
+node1_sys1 <== Fork
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Redirect init(thread=5824)
+node1_sys1 <== Redirect
+node1_sys1 ==> Join init(thread=5824)
+node1_sys1 <== Join
+node1_sys1 ==> Supervisor init(thread=5824)
+node1_sys1 <== Supervisor
node1_sys1 <== node1_sys1
main <== node1_sys1
-main ==> node1_sys1 start
-node1_sys1 ==> node1_sys1 startMessageServices
-node1_sys1 ==> etMessageService start
-etMessageService ==> etThread construct
+main ==> node1_sys1 start(thread=5824)
+node1_sys1 ==> node1_sys1 startMessageServices(thread=5824)
+node1_sys1 ==> etMessageService start(thread=5824)
+etMessageService ==> etThread construct(thread=5824)
+etMessageService <== etThread
+node1_sys1 <== etMessageService
+node1_sys1 ==> etMessageService start(thread=5824)
+etMessageService ==> etThread construct(thread=5824)
+etMessageService <== etThread
+node1_sys1 <== etMessageService
+node1_sys1 ==> etMessageService start(thread=5824)
+etMessageService ==> etThread construct(thread=5824)
etMessageService <== etThread
node1_sys1 <== etMessageService
-node1_sys1 ==> etMessageService start
-etMessageService ==> etThread construct
-etThread ==> etThread execute
-etThread ==> etMessageService execute
-etMessageService ==> etMessageService deliverAllMessages
-etMessageService ==> etMessageQueue isNotEmpty
+node1_sys1 <== node1_sys1
+main <== node1_sys1
+main ==> node1_sys1 run(thread=5824)
+node1_sys1 ==> etThread sleep(thread=5824)
+etThread ==> etThread execute(thread=8628)
+etThread ==> etMessageService execute(thread=8628)
+etMessageService ==> etMessageService deliverAllMessages(thread=8628)
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=8628)
+etSema ==> etThread execute(thread=8672)
+etThread ==> etMessageService execute(thread=8672)
+etMessageService ==> etMessageService deliverAllMessages(thread=8672)
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etSema waitForWakeup(thread=8672)
+etSema ==> etThread execute(thread=7740)
+etThread ==> etMessageService execute(thread=7740)
+etMessageService ==> etMessageService deliverAllMessages(thread=7740)
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Fork _receiveMessage(thread=7740)
+Fork ==> CommunicationProtocolConjReplPort sendData(thread=7740)
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService <== etThread
-etMessageService ==> etMutex leave
-node1_sys1 <== etMessageService
-node1_sys1 <== node1_sys1
-main <== node1_sys1
-main ==> node1_sys1 run
-node1_sys1 ==> etThread sleep
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMutex ==> etThread execute
-etMessageService ==> etSema wakeup
-etThread ==> etMessageService execute
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageService deliverAllMessages
-etMessageService ==> etMutex leave
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
etPort <== etMessageService
-etMessageService ==> etMessageService popMessage
-CommunicationProtocolPort <== etPort
-etMessageService ==> etMutex enter
-Receiver <== CommunicationProtocolPort
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService ==> etMessageQueue pop
-etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex leave
-etMessageService ==> etMutex enter
+etMessageService ==> etSema wakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue push
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-etMessageService ==> etMutex leave
-Sender ==> CommunicationProtocolConjPort sendData
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-CommunicationProtocolConjPort ==> etPort sendMessage
-etMessageService <== etMessageService
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMessageQueue isNotEmpty
-etMessageService ==> etMutex enter
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etSema waitForWakeup
-etMessageService ==> etMessageQueue pop
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
etPort <== etMessageService
-etMessageService ==> etSema waitForWakeup
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etSema wakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+CommunicationProtocolConjReplPort <== etPort
+CommunicationProtocolConjReplPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjReplPort <== etPort
+Fork <== CommunicationProtocolConjReplPort
+MsgDispatcher_PhysicalThread2 <== Fork
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Redirect _receiveMessage(thread=7740)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=7740)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Redirect
etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Redirect _receiveMessage(thread=7740)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=7740)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue isNotEmpty
etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-CommunicationProtocolPort <== etPort
-etMessageService ==> etMessageService popMessage
-Receiver <== CommunicationProtocolPort
-etMessageService ==> etMutex enter
-MsgDispatcher_PhysicalThread1 <== Receiver
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageQueue pop
-etMessageService ==> etMessageService returnMessageBuffer
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex enter
-etMessageService ==> etMutex leave
+etMessageService ==> etSema waitForWakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-etMessageService ==> etMutex leave
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8628)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
-Sender ==> CommunicationProtocolConjPort sendData
etMessageService <== etMessageService
-CommunicationProtocolConjPort ==> etPort sendMessage
-etMessageService ==> etMessageQueue isNotEmpty
-etPort ==> etMessageService getMessageBuffer
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex enter
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=8628)
etMessageService <== etSema
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService ==> etMessageQueue isNotEmpty
-etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
-etMessageService ==> etMutex enter
+etMessageService ==> etSema waitForWakeup(thread=8628)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
-etMessageService ==> etMutex leave
+etMessageService ==> etSema wakeup(thread=8672)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-etMessageService ==> etSema waitForWakeup
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etPort <== etMessageService
+CommunicationProtocolConjPort <== etPort
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Redirect _receiveMessage(thread=8672)
+Redirect ==> CommunicationProtocolConjPort sendData(thread=8672)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=8672)
+etPort ==> etMessageService getMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8672)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etPort <== etMessageService
CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
+Redirect <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread1 <== Redirect
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8672)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=8672)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=8672)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> SecurityProtocolConjPort ping(thread=7740)
+SecurityProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
+SecurityProtocolConjPort <== etPort
+Join <== SecurityProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema waitForWakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema waitForWakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-Sender ==> CommunicationProtocolConjPort sendData
-CommunicationProtocolConjPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolConjPort <== etPort
-Sender <== CommunicationProtocolConjPort
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread3 receiveMessage(thread=8628)
+MsgDispatcher_PhysicalThread3 ==> Supervisor _receiveMessage(thread=8628)
+Supervisor ==> SecurityProtocolPort pong(thread=8628)
+SecurityProtocolPort ==> etPort sendMessage(thread=8628)
+etPort ==> etMessageService getMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+etPort ==> etMessageService pushMessage(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=8628)
+etMessageService <== etMessageQueue
+etMessageService ==> etSema wakeup(thread=8628)
+etMessageService <== etSema
+etMessageService ==> etMutex leave(thread=8628)
+etMessageService <== etMutex
+etPort <== etMessageService
+SecurityProtocolPort <== etPort
+Supervisor <== SecurityProtocolPort
+MsgDispatcher_PhysicalThread3 <== Supervisor
+etMessageService <== MsgDispatcher_PhysicalThread3
+etMessageService ==> etMessageService returnMessageBuffer(thread=8628)
+etMessageService ==> etMutex enter(thread=8628)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8628)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema waitForWakeup(thread=8628)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8628)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etSema waitForWakeup(thread=8628)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage
-MsgDispatcher_PhysicalThread1 ==> Receiver _receiveMessage
-Receiver ==> CommunicationProtocolPort receivedData
-CommunicationProtocolPort ==> etPort sendMessage
-etPort ==> etMessageService getMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue push(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
+etMessageService <== etMutex
+etMessageService <== etMessageService
+etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage(thread=7740)
+MsgDispatcher_PhysicalThread2 ==> Join _receiveMessage(thread=7740)
+Join ==> CommunicationProtocolConjPort sendData(thread=7740)
+CommunicationProtocolConjPort ==> etPort sendMessage(thread=7740)
+etPort ==> etMessageService getMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
+etMessageService <== etMutex
+etMessageService ==> etMessageQueue pop(thread=7740)
+etMessageService <== etMessageQueue
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-etPort ==> etMessageService pushMessage
-etMessageService ==> etMutex enter
+etPort ==> etMessageService pushMessage(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema wakeup
+etMessageService ==> etSema wakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etPort <== etMessageService
-CommunicationProtocolPort <== etPort
-Receiver <== CommunicationProtocolPort
-MsgDispatcher_PhysicalThread1 <== Receiver
-etMessageService <== MsgDispatcher_PhysicalThread1
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+CommunicationProtocolConjPort <== etPort
+Join <== CommunicationProtocolConjPort
+MsgDispatcher_PhysicalThread2 <== Join
+etMessageService <== MsgDispatcher_PhysicalThread2
+etMessageService ==> etMessageService returnMessageBuffer(thread=7740)
+etMessageService ==> etMutex enter(thread=7740)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=7740)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema waitForWakeup(thread=7740)
etMessageService <== etSema
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=7740)
etMessageService <== etMessageQueue
-etMessageService ==> etMessageService popMessage
-etMessageService ==> etMutex enter
+etMessageService ==> etSema waitForWakeup(thread=7740)
+etMessageService <== etSema
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
+etMessageService <== etMessageQueue
+etMessageService ==> etMessageService popMessage(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue pop
+etMessageService ==> etMessageQueue pop(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> MsgDispatcher_PhysicalThread2 receiveMessage
-MsgDispatcher_PhysicalThread2 ==> Sender _receiveMessage
-MsgDispatcher_PhysicalThread2 <== Sender
-etMessageService <== MsgDispatcher_PhysicalThread2
-etMessageService ==> etMessageService returnMessageBuffer
-etMessageService ==> etMutex enter
+etMessageService ==> MsgDispatcher_PhysicalThread1 receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 ==> Tester _receiveMessage(thread=8672)
+MsgDispatcher_PhysicalThread1 <== Tester
+etMessageService <== MsgDispatcher_PhysicalThread1
+etMessageService ==> etMessageService returnMessageBuffer(thread=8672)
+etMessageService ==> etMutex enter(thread=8672)
etMessageService <== etMutex
-etMessageService ==> etMessageQueue push
+etMessageService ==> etMessageQueue push(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etMutex leave
+etMessageService ==> etMutex leave(thread=8672)
etMessageService <== etMutex
etMessageService <== etMessageService
-etMessageService ==> etMessageQueue isNotEmpty
+etMessageService ==> etMessageQueue isNotEmpty(thread=8672)
etMessageService <== etMessageQueue
-etMessageService ==> etSema waitForWakeup
+etMessageService ==> etSema waitForWakeup(thread=8672)
node1_sys1 <== etThread
main <== node1_sys1
-main ==> node1_sys1 stop
-node1_sys1 ==> node1_sys1 stopMessageServices
-node1_sys1 ==> etMessageService stop
-etMessageService ==> etThread destruct
+main ==> node1_sys1 stop(thread=5824)
+node1_sys1 ==> node1_sys1 stopMessageServices(thread=5824)
+node1_sys1 ==> etMessageService stop(thread=5824)
+etMessageService ==> etThread destruct(thread=5824)
+etMessageService <== etThread
+node1_sys1 <== etMessageService
+node1_sys1 ==> etMessageService stop(thread=5824)
+etMessageService ==> etThread destruct(thread=5824)
etMessageService <== etThread
node1_sys1 <== etMessageService
-node1_sys1 ==> etMessageService stop
-etMessageService ==> etThread destruct
+node1_sys1 ==> etMessageService stop(thread=5824)
+etMessageService ==> etThread destruct(thread=5824)
etMessageService <== etThread
node1_sys1 <== etMessageService
node1_sys1 <== node1_sys1
main <== node1_sys1
-main ==> node1_sys1 destroy
-node1_sys1 ==> node1_sys1 destroyMessageServices
-node1_sys1 ==> etMessageService destroy
-etMessageService ==> etMutex destruct
+main ==> node1_sys1 destroy(thread=5824)
+node1_sys1 ==> node1_sys1 destroyMessageServices(thread=5824)
+node1_sys1 ==> etMessageService destroy(thread=5824)
+etMessageService ==> etMutex destruct(thread=5824)
+etMessageService <== etMutex
+etMessageService ==> etMutex destruct(thread=5824)
+etMessageService <== etMutex
+etMessageService ==> etSema destruct(thread=5824)
+etMessageService <== etSema
+node1_sys1 <== etMessageService
+node1_sys1 ==> etMessageService destroy(thread=5824)
+etMessageService ==> etMutex destruct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMutex destruct
+etMessageService ==> etMutex destruct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etSema destruct
+etMessageService ==> etSema destruct(thread=5824)
etMessageService <== etSema
node1_sys1 <== etMessageService
-node1_sys1 ==> etMessageService destroy
-etMessageService ==> etMutex destruct
+node1_sys1 ==> etMessageService destroy(thread=5824)
+etMessageService ==> etMutex destruct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etMutex destruct
+etMessageService ==> etMutex destruct(thread=5824)
etMessageService <== etMutex
-etMessageService ==> etSema destruct
+etMessageService ==> etSema destruct(thread=5824)
etMessageService <== etSema
node1_sys1 <== etMessageService
node1_sys1 <== node1_sys1
diff --git a/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java b/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java
index 3618f52..2695387 100644
--- a/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java
+++ b/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java
@@ -199,4 +199,5 @@ public class ETMapUtil {
return result.toString();
}
+
}
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
index 9bd9411..f859b24 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
@@ -166,7 +166,7 @@ class NodeGen {
«ENDFOR»
/* initialization of all message services */
«FOR thread: nr.type.threads»
- etMessageService_init(&msgService_«thread.name», msgBuffer_«thread.name», «thread.msgpoolsize», «thread.msgblocksize», MsgDispatcher_«thread.name»_receiveMessage);
+ etMessageService_init(&msgService_«thread.name», msgBuffer_«thread.name», «thread.msgpoolsize», «thread.msgblocksize», MsgDispatcher_«thread.name»_receiveMessage, MsgDispatcher_«thread.name»_execute, EXECMODE_«thread.execmode.toString.toUpperCase»);
«ENDFOR»
ET_MSC_LOGGER_SYNC_EXIT
@@ -518,12 +518,15 @@ class NodeGen {
def private generateDispatcherFile(Root root, SubSystemInstance ssi) {
val nr = ETMapUtil::getNodeRef(ssi)
+
+
'''
/**
* @author generated by eTrice
*
* Dispatcher File of Node «nr.name» with SubSystem «ssi.name»
- * - one generated dispatcher for each MessageService (Thread)
+ * - one generated message dispatcher (receiveMessage) for each MessageService (Thread)
+ * - one generated execute dispatcher (execute) for each MessageService (Thread)
*/
#include "messaging/etMessageReceiver.h"
@@ -531,7 +534,15 @@ class NodeGen {
#include "debugging/etMSCLogger.h"
«FOR thread: nr.type.threads SEPARATOR "\n"»
+ «var instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getPhysicalThread(ai)==thread)»
+
+ «val dispatchedInstances = instancesOnThread.filter(ai|ai.actorClass.commType == ActorCommunicationType::EVENT_DRIVEN || ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS)»
+
+ /**
+ * generated dispatch function all messages for the tread "«thread.name»"
+ */
static void MsgDispatcher_«thread.name»_receiveMessage(const etMessage* msg){
+ «IF dispatchedInstances.size > 0»
ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_«thread.name»", "receiveMessage")
switch(msg->address){
@@ -581,6 +592,25 @@ class NodeGen {
break;
}
ET_MSC_LOGGER_SYNC_EXIT
+ «ELSE»
+ /* nothing to dispatch -> empty function generated to satisfy interface of message service */
+ «ENDIF»
+ }
+
+ «val executedInstances = instancesOnThread.filter(ai|ai.actorClass.commType == ActorCommunicationType::DATA_DRIVEN || ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS)»
+ /**
+ * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "«thread.name»"
+ */
+ static void MsgDispatcher_«thread.name»_execute(void){
+ «IF executedInstances.size > 0»
+ ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_«thread.name»", "execute")
+ «FOR ai : executedInstances»
+ «ai.actorClass.name»_execute((void*)&«ai.path.pathName»);
+ «ENDFOR»
+ ET_MSC_LOGGER_SYNC_EXIT
+ «ELSE»
+ /* nothing to execute -> empty function generated to satisfy interface of message service */
+ «ENDIF»
}
«ENDFOR»
'''
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
index 49c9b62..7518e9e 100644
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
+++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
@@ -11,6 +11,7 @@ import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.etrice.core.etmap.util.ETMapUtil;
+import org.eclipse.etrice.core.etphys.eTPhys.ExecMode;
import org.eclipse.etrice.core.etphys.eTPhys.NodeClass;
import org.eclipse.etrice.core.etphys.eTPhys.NodeRef;
import org.eclipse.etrice.core.etphys.eTPhys.PhysicalThread;
@@ -429,7 +430,15 @@ public class NodeGen {
_builder.append(", MsgDispatcher_");
String _name_15 = thread_1.getName();
_builder.append(_name_15, " ");
- _builder.append("_receiveMessage);");
+ _builder.append("_receiveMessage, MsgDispatcher_");
+ String _name_16 = thread_1.getName();
+ _builder.append(_name_16, " ");
+ _builder.append("_execute, EXECMODE_");
+ ExecMode _execmode = thread_1.getExecmode();
+ String _string = _execmode.toString();
+ String _upperCase = _string.toUpperCase();
+ _builder.append(_upperCase, " ");
+ _builder.append(");");
_builder.newLineIfNotEmpty();
}
}
@@ -458,8 +467,8 @@ public class NodeGen {
for(final PhysicalThread thread_2 : _threads_2) {
_builder.append("\t");
_builder.append("etMessageService_start(&msgService_");
- String _name_16 = thread_2.getName();
- _builder.append(_name_16, " ");
+ String _name_17 = thread_2.getName();
+ _builder.append(_name_17, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -489,8 +498,8 @@ public class NodeGen {
for(final PhysicalThread thread_3 : _threads_3) {
_builder.append("\t");
_builder.append("etMessageService_stop(&msgService_");
- String _name_17 = thread_3.getName();
- _builder.append(_name_17, " ");
+ String _name_18 = thread_3.getName();
+ _builder.append(_name_18, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -520,8 +529,8 @@ public class NodeGen {
for(final PhysicalThread thread_4 : _threads_4) {
_builder.append("\t");
_builder.append("etMessageService_destroy(&msgService_");
- String _name_18 = thread_4.getName();
- _builder.append(_name_18, " ");
+ String _name_19 = thread_4.getName();
+ _builder.append(_name_19, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -691,11 +700,11 @@ public class NodeGen {
if (_not) {
_builder.append("\t");
ActorClass _actorClass_1 = ai.getActorClass();
- String _name_19 = _actorClass_1.getName();
+ String _name_20 = _actorClass_1.getName();
ActorClass _actorClass_2 = ai.getActorClass();
- String _name_20 = _actorClass_2.getName();
- String _destructorName = this.languageExt.destructorName(_name_20);
- String _memberInUse = this.languageExt.memberInUse(_name_19, _destructorName);
+ String _name_21 = _actorClass_2.getName();
+ String _destructorName = this.languageExt.destructorName(_name_21);
+ String _memberInUse = this.languageExt.memberInUse(_name_20, _destructorName);
_builder.append(_memberInUse, " ");
_builder.append("(&");
String _path = ai.getPath();
@@ -779,11 +788,11 @@ public class NodeGen {
if (_not_1) {
_builder.append("\t");
ActorClass _actorClass_4 = ai_1.getActorClass();
- String _name_21 = _actorClass_4.getName();
+ String _name_22 = _actorClass_4.getName();
ActorClass _actorClass_5 = ai_1.getActorClass();
- String _name_22 = _actorClass_5.getName();
- String _constructorName = this.languageExt.constructorName(_name_22);
- String _memberInUse_1 = this.languageExt.memberInUse(_name_21, _constructorName);
+ String _name_23 = _actorClass_5.getName();
+ String _constructorName = this.languageExt.constructorName(_name_23);
+ String _memberInUse_1 = this.languageExt.memberInUse(_name_22, _constructorName);
_builder.append(_memberInUse_1, " ");
_builder.append("(&");
String _path_1 = ai_1.getPath();
@@ -819,8 +828,8 @@ public class NodeGen {
for(final ActorInstance ai_2 : _allContainedInstances_2) {
_builder.append("\t");
ActorClass _actorClass_6 = ai_2.getActorClass();
- String _name_23 = _actorClass_6.getName();
- _builder.append(_name_23, " ");
+ String _name_24 = _actorClass_6.getName();
+ _builder.append(_name_24, " ");
_builder.append("_init(&");
String _path_2 = ai_2.getPath();
String _pathName_2 = this._roomExtensions.getPathName(_path_2);
@@ -1593,7 +1602,10 @@ public class NodeGen {
_builder.append(_name_1, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
- _builder.append("* - one generated dispatcher for each MessageService (Thread)");
+ _builder.append("* - one generated message dispatcher (receiveMessage) for each MessageService (Thread)");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* - one generated execute dispatcher (execute) for each MessageService (Thread)");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
@@ -1616,333 +1628,481 @@ public class NodeGen {
} else {
_builder.appendImmediate("\n", "");
}
- _builder.append("static void MsgDispatcher_");
- String _name_2 = thread.getName();
- _builder.append(_name_2, "");
- _builder.append("_receiveMessage(const etMessage* msg){");
+ EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
+ final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() {
+ public Boolean apply(final ActorInstance ai) {
+ PhysicalThread _physicalThread = ETMapUtil.getPhysicalThread(ai);
+ boolean _equals = Objects.equal(_physicalThread, thread);
+ return Boolean.valueOf(_equals);
+ }
+ };
+ Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function);
_builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
- String _name_3 = thread.getName();
- _builder.append(_name_3, " ");
- _builder.append("\", \"receiveMessage\")");
+ _builder.newLine();
+ final Function1<ActorInstance,Boolean> _function_1 = new Function1<ActorInstance,Boolean>() {
+ public Boolean apply(final ActorInstance ai) {
+ boolean _or = false;
+ ActorClass _actorClass = ai.getActorClass();
+ ActorCommunicationType _commType = _actorClass.getCommType();
+ boolean _equals = Objects.equal(_commType, ActorCommunicationType.EVENT_DRIVEN);
+ if (_equals) {
+ _or = true;
+ } else {
+ ActorClass _actorClass_1 = ai.getActorClass();
+ ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
+ boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.ASYNCHRONOUS);
+ _or = (_equals || _equals_1);
+ }
+ return Boolean.valueOf(_or);
+ }
+ };
+ final Iterable<ActorInstance> dispatchedInstances = IterableExtensions.<ActorInstance>filter(instancesOnThread, _function_1);
_builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("switch(msg->address){");
_builder.newLine();
- _builder.append("\t");
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* generated dispatch function all messages for the tread \"");
+ String _name_2 = thread.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("*/");
_builder.newLine();
+ _builder.append("static void MsgDispatcher_");
+ String _name_3 = thread.getName();
+ _builder.append(_name_3, "");
+ _builder.append("_receiveMessage(const etMessage* msg){");
+ _builder.newLineIfNotEmpty();
{
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() {
- public Boolean apply(final ActorInstance ai) {
- PhysicalThread _physicalThread = ETMapUtil.getPhysicalThread(ai);
- boolean _equals = Objects.equal(_physicalThread, thread);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<ActorInstance> _filter = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function);
- for(final ActorInstance ai : _filter) {
- _builder.append("\t\t");
- _builder.append("/* interface items of ");
- String _path = ai.getPath();
- _builder.append(_path, " ");
- _builder.append(" */");
+ int _size = IterableExtensions.size(dispatchedInstances);
+ boolean _greaterThan = (_size > 0);
+ if (_greaterThan) {
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
+ String _name_4 = thread.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("\", \"receiveMessage\")");
_builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("switch(msg->address){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
{
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai.getOrderedIfItemInstances();
- final Function1<InterfaceItemInstance,Boolean> _function_1 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- ProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = _protocol.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
+ EList<ActorInstance> _allContainedInstances_1 = ssi.getAllContainedInstances();
+ final Function1<ActorInstance,Boolean> _function_2 = new Function1<ActorInstance,Boolean>() {
+ public Boolean apply(final ActorInstance ai) {
+ PhysicalThread _physicalThread = ETMapUtil.getPhysicalThread(ai);
+ boolean _equals = Objects.equal(_physicalThread, thread);
return Boolean.valueOf(_equals);
}
};
- Iterable<InterfaceItemInstance> _filter_1 = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function_1);
- for(final InterfaceItemInstance pi : _filter_1) {
+ Iterable<ActorInstance> _filter = IterableExtensions.<ActorInstance>filter(_allContainedInstances_1, _function_2);
+ for(final ActorInstance ai : _filter) {
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("/* interface items of ");
+ String _path = ai.getPath();
+ _builder.append(_path, " ");
+ _builder.append(" */");
+ _builder.newLineIfNotEmpty();
{
- boolean _isReplicated = pi.isReplicated();
- if (_isReplicated) {
+ EList<InterfaceItemInstance> _orderedIfItemInstances = ai.getOrderedIfItemInstances();
+ final Function1<InterfaceItemInstance,Boolean> _function_3 = new Function1<InterfaceItemInstance,Boolean>() {
+ public Boolean apply(final InterfaceItemInstance p) {
+ ProtocolClass _protocol = p.getProtocol();
+ CommunicationType _commType = _protocol.getCommType();
+ boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
+ return Boolean.valueOf(_equals);
+ }
+ };
+ Iterable<InterfaceItemInstance> _filter_1 = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function_3);
+ for(final InterfaceItemInstance pi : _filter_1) {
{
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- for(final InterfaceItemInstance peer : _peers) {
- _builder.append("\t\t");
+ boolean _isReplicated = pi.isReplicated();
+ if (_isReplicated) {
+ {
+ EList<InterfaceItemInstance> _peers = pi.getPeers();
+ for(final InterfaceItemInstance peer : _peers) {
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ int _objId = pi.getObjId();
+ EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
+ int _indexOf = _peers_1.indexOf(peer);
+ int _plus = (_objId + _indexOf);
+ _builder.append(_plus, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ {
+ ProtocolClass _protocol = pi.getProtocol();
+ boolean _isConjugated = this._roomExtensions.isConjugated(pi);
+ boolean _handlesReceive = this._roomExtensions.handlesReceive(_protocol, _isConjugated);
+ if (_handlesReceive) {
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("switch (msg->evtID){");
+ _builder.newLine();
+ {
+ ProtocolClass _protocol_1 = pi.getProtocol();
+ boolean _isConjugated_1 = this._roomExtensions.isConjugated(pi);
+ List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(_protocol_1, _isConjugated_1);
+ for(final MessageHandler h : _receiveHandlers) {
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ ProtocolClass _protocol_2 = pi.getProtocol();
+ String _name_5 = _protocol_2.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("_");
+ Message _msg = h.getMsg();
+ String _codeName = this._roomExtensions.getCodeName(_msg);
+ _builder.append(_codeName, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ ProtocolClass _protocol_3 = pi.getProtocol();
+ boolean _isConjugated_2 = this._roomExtensions.isConjugated(pi);
+ String _portClassName = this._roomExtensions.getPortClassName(_protocol_3, _isConjugated_2);
+ _builder.append(_portClassName, " ");
+ _builder.append("_");
+ Message _msg_1 = h.getMsg();
+ String _name_6 = _msg_1.getName();
+ _builder.append(_name_6, " ");
+ _builder.append("_receiveHandler((etPort *)&");
+ String _path_1 = ai.getPath();
+ String _pathName = this._roomExtensions.getPathName(_path_1);
+ _builder.append(_pathName, " ");
+ _builder.append("_const.");
+ String _name_7 = pi.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
+ int _indexOf_1 = _peers_2.indexOf(peer);
+ _builder.append(_indexOf_1, " ");
+ _builder.append("],msg,(void*)&");
+ String _path_2 = ai.getPath();
+ String _pathName_1 = this._roomExtensions.getPathName(_path_2);
+ _builder.append(_pathName_1, " ");
+ _builder.append(",");
+ ActorClass _actorClass = ai.getActorClass();
+ String _name_8 = _actorClass.getName();
+ _builder.append(_name_8, " ");
+ _builder.append("_receiveMessage);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("default: ");
+ ActorClass _actorClass_1 = ai.getActorClass();
+ String _name_9 = _actorClass_1.getName();
+ _builder.append(_name_9, " ");
+ _builder.append("_receiveMessage((void*)&");
+ String _path_3 = ai.getPath();
+ String _pathName_2 = this._roomExtensions.getPathName(_path_3);
+ _builder.append(_pathName_2, " ");
+ _builder.append(",(etPort*)&");
+ String _path_4 = ai.getPath();
+ String _pathName_3 = this._roomExtensions.getPathName(_path_4);
+ _builder.append(_pathName_3, " ");
+ _builder.append("_const.");
+ String _name_10 = pi.getName();
+ _builder.append(_name_10, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
+ int _indexOf_2 = _peers_3.indexOf(peer);
+ _builder.append(_indexOf_2, " ");
+ _builder.append("], msg);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}\t\t\t\t\t\t\t\t\t\t");
+ _builder.newLine();
+ } else {
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ ActorClass _actorClass_2 = ai.getActorClass();
+ String _name_11 = _actorClass_2.getName();
+ _builder.append(_name_11, " ");
+ _builder.append("_receiveMessage((void*)&");
+ String _path_5 = ai.getPath();
+ String _pathName_4 = this._roomExtensions.getPathName(_path_5);
+ _builder.append(_pathName_4, " ");
+ _builder.append(",(etPort*)&");
+ String _path_6 = ai.getPath();
+ String _pathName_5 = this._roomExtensions.getPathName(_path_6);
+ _builder.append(_pathName_5, " ");
+ _builder.append("_const.");
+ String _name_12 = pi.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_4 = pi.getPeers();
+ int _indexOf_3 = _peers_4.indexOf(peer);
+ _builder.append(_indexOf_3, " ");
+ _builder.append("], msg);");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("\t");
_builder.append("case ");
- int _objId = pi.getObjId();
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- int _indexOf = _peers_1.indexOf(peer);
- int _plus = (_objId + _indexOf);
- _builder.append(_plus, " ");
+ int _objId_1 = pi.getObjId();
+ _builder.append(_objId_1, " ");
_builder.append(":");
_builder.newLineIfNotEmpty();
{
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this._roomExtensions.isConjugated(pi);
- boolean _handlesReceive = this._roomExtensions.handlesReceive(_protocol, _isConjugated);
- if (_handlesReceive) {
- _builder.append("\t\t");
+ ProtocolClass _protocol_4 = pi.getProtocol();
+ boolean _isConjugated_3 = this._roomExtensions.isConjugated(pi);
+ boolean _handlesReceive_1 = this._roomExtensions.handlesReceive(_protocol_4, _isConjugated_3);
+ if (_handlesReceive_1) {
+ _builder.append("\t");
_builder.append("\t");
_builder.append("switch (msg->evtID){");
_builder.newLine();
{
- ProtocolClass _protocol_1 = pi.getProtocol();
- boolean _isConjugated_1 = this._roomExtensions.isConjugated(pi);
- List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(_protocol_1, _isConjugated_1);
- for(final MessageHandler h : _receiveHandlers) {
- _builder.append("\t\t");
+ ProtocolClass _protocol_5 = pi.getProtocol();
+ boolean _isConjugated_4 = this._roomExtensions.isConjugated(pi);
+ List<MessageHandler> _receiveHandlers_1 = this._roomExtensions.getReceiveHandlers(_protocol_5, _isConjugated_4);
+ for(final MessageHandler h_1 : _receiveHandlers_1) {
_builder.append("\t");
_builder.append("\t");
_builder.append("case ");
- ProtocolClass _protocol_2 = pi.getProtocol();
- String _name_4 = _protocol_2.getName();
- _builder.append(_name_4, " ");
+ ProtocolClass _protocol_6 = pi.getProtocol();
+ String _name_13 = _protocol_6.getName();
+ _builder.append(_name_13, " ");
_builder.append("_");
- Message _msg = h.getMsg();
- String _codeName = this._roomExtensions.getCodeName(_msg);
- _builder.append(_codeName, " ");
+ Message _msg_2 = h_1.getMsg();
+ String _codeName_1 = this._roomExtensions.getCodeName(_msg_2);
+ _builder.append(_codeName_1, " ");
_builder.append(":");
_builder.newLineIfNotEmpty();
- _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
- ProtocolClass _protocol_3 = pi.getProtocol();
- boolean _isConjugated_2 = this._roomExtensions.isConjugated(pi);
- String _portClassName = this._roomExtensions.getPortClassName(_protocol_3, _isConjugated_2);
- _builder.append(_portClassName, " ");
+ ProtocolClass _protocol_7 = pi.getProtocol();
+ boolean _isConjugated_5 = this._roomExtensions.isConjugated(pi);
+ String _portClassName_1 = this._roomExtensions.getPortClassName(_protocol_7, _isConjugated_5);
+ _builder.append(_portClassName_1, " ");
_builder.append("_");
- Message _msg_1 = h.getMsg();
- String _name_5 = _msg_1.getName();
- _builder.append(_name_5, " ");
+ Message _msg_3 = h_1.getMsg();
+ String _name_14 = _msg_3.getName();
+ _builder.append(_name_14, " ");
_builder.append("_receiveHandler((etPort *)&");
- String _path_1 = ai.getPath();
- String _pathName = this._roomExtensions.getPathName(_path_1);
- _builder.append(_pathName, " ");
+ String _path_7 = ai.getPath();
+ String _pathName_6 = this._roomExtensions.getPathName(_path_7);
+ _builder.append(_pathName_6, " ");
_builder.append("_const.");
- String _name_6 = pi.getName();
- _builder.append(_name_6, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- int _indexOf_1 = _peers_2.indexOf(peer);
- _builder.append(_indexOf_1, " ");
- _builder.append("],msg,(void*)&");
- String _path_2 = ai.getPath();
- String _pathName_1 = this._roomExtensions.getPathName(_path_2);
- _builder.append(_pathName_1, " ");
+ String _name_15 = pi.getName();
+ _builder.append(_name_15, " ");
+ _builder.append(",msg,(void*)&");
+ String _path_8 = ai.getPath();
+ String _pathName_7 = this._roomExtensions.getPathName(_path_8);
+ _builder.append(_pathName_7, " ");
_builder.append(",");
- ActorClass _actorClass = ai.getActorClass();
- String _name_7 = _actorClass.getName();
- _builder.append(_name_7, " ");
+ ActorClass _actorClass_3 = ai.getActorClass();
+ String _name_16 = _actorClass_3.getName();
+ _builder.append(_name_16, " ");
_builder.append("_receiveMessage);");
_builder.newLineIfNotEmpty();
- _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("break;");
_builder.newLine();
}
}
- _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("default: ");
- ActorClass _actorClass_1 = ai.getActorClass();
- String _name_8 = _actorClass_1.getName();
- _builder.append(_name_8, " ");
+ ActorClass _actorClass_4 = ai.getActorClass();
+ String _name_17 = _actorClass_4.getName();
+ _builder.append(_name_17, " ");
_builder.append("_receiveMessage((void*)&");
- String _path_3 = ai.getPath();
- String _pathName_2 = this._roomExtensions.getPathName(_path_3);
- _builder.append(_pathName_2, " ");
+ String _path_9 = ai.getPath();
+ String _pathName_8 = this._roomExtensions.getPathName(_path_9);
+ _builder.append(_pathName_8, " ");
_builder.append(",(etPort*)&");
- String _path_4 = ai.getPath();
- String _pathName_3 = this._roomExtensions.getPathName(_path_4);
- _builder.append(_pathName_3, " ");
+ String _path_10 = ai.getPath();
+ String _pathName_9 = this._roomExtensions.getPathName(_path_10);
+ _builder.append(_pathName_9, " ");
_builder.append("_const.");
- String _name_9 = pi.getName();
- _builder.append(_name_9, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
- int _indexOf_2 = _peers_3.indexOf(peer);
- _builder.append(_indexOf_2, " ");
- _builder.append("], msg);");
+ String _name_18 = pi.getName();
+ _builder.append(_name_18, " ");
+ _builder.append(", msg);");
_builder.newLineIfNotEmpty();
- _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("break;");
_builder.newLine();
- _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
- _builder.append("}\t\t\t\t\t\t\t\t\t\t");
+ _builder.append("}");
_builder.newLine();
} else {
- _builder.append("\t\t");
_builder.append("\t");
- ActorClass _actorClass_2 = ai.getActorClass();
- String _name_10 = _actorClass_2.getName();
- _builder.append(_name_10, " ");
+ _builder.append("\t");
+ ActorClass _actorClass_5 = ai.getActorClass();
+ String _name_19 = _actorClass_5.getName();
+ _builder.append(_name_19, " ");
_builder.append("_receiveMessage((void*)&");
- String _path_5 = ai.getPath();
- String _pathName_4 = this._roomExtensions.getPathName(_path_5);
- _builder.append(_pathName_4, " ");
+ String _path_11 = ai.getPath();
+ String _pathName_10 = this._roomExtensions.getPathName(_path_11);
+ _builder.append(_pathName_10, " ");
_builder.append(",(etPort*)&");
- String _path_6 = ai.getPath();
- String _pathName_5 = this._roomExtensions.getPathName(_path_6);
- _builder.append(_pathName_5, " ");
- _builder.append("_const.");
- String _name_11 = pi.getName();
- _builder.append(_name_11, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_4 = pi.getPeers();
- int _indexOf_3 = _peers_4.indexOf(peer);
- _builder.append(_indexOf_3, " ");
- _builder.append("], msg);");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- } else {
- _builder.append("\t\t");
- _builder.append("case ");
- int _objId_1 = pi.getObjId();
- _builder.append(_objId_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- {
- ProtocolClass _protocol_4 = pi.getProtocol();
- boolean _isConjugated_3 = this._roomExtensions.isConjugated(pi);
- boolean _handlesReceive_1 = this._roomExtensions.handlesReceive(_protocol_4, _isConjugated_3);
- if (_handlesReceive_1) {
- _builder.append("\t\t");
- _builder.append("switch (msg->evtID){");
- _builder.newLine();
- {
- ProtocolClass _protocol_5 = pi.getProtocol();
- boolean _isConjugated_4 = this._roomExtensions.isConjugated(pi);
- List<MessageHandler> _receiveHandlers_1 = this._roomExtensions.getReceiveHandlers(_protocol_5, _isConjugated_4);
- for(final MessageHandler h_1 : _receiveHandlers_1) {
- _builder.append("\t\t");
- _builder.append("case ");
- ProtocolClass _protocol_6 = pi.getProtocol();
- String _name_12 = _protocol_6.getName();
- _builder.append(_name_12, " ");
- _builder.append("_");
- Message _msg_2 = h_1.getMsg();
- String _codeName_1 = this._roomExtensions.getCodeName(_msg_2);
- _builder.append(_codeName_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- ProtocolClass _protocol_7 = pi.getProtocol();
- boolean _isConjugated_5 = this._roomExtensions.isConjugated(pi);
- String _portClassName_1 = this._roomExtensions.getPortClassName(_protocol_7, _isConjugated_5);
- _builder.append(_portClassName_1, " ");
- _builder.append("_");
- Message _msg_3 = h_1.getMsg();
- String _name_13 = _msg_3.getName();
- _builder.append(_name_13, " ");
- _builder.append("_receiveHandler((etPort *)&");
- String _path_7 = ai.getPath();
- String _pathName_6 = this._roomExtensions.getPathName(_path_7);
- _builder.append(_pathName_6, " ");
+ String _path_12 = ai.getPath();
+ String _pathName_11 = this._roomExtensions.getPathName(_path_12);
+ _builder.append(_pathName_11, " ");
_builder.append("_const.");
- String _name_14 = pi.getName();
- _builder.append(_name_14, " ");
- _builder.append(",msg,(void*)&");
- String _path_8 = ai.getPath();
- String _pathName_7 = this._roomExtensions.getPathName(_path_8);
- _builder.append(_pathName_7, " ");
- _builder.append(",");
- ActorClass _actorClass_3 = ai.getActorClass();
- String _name_15 = _actorClass_3.getName();
- _builder.append(_name_15, " ");
- _builder.append("_receiveMessage);");
+ String _name_20 = pi.getName();
+ _builder.append(_name_20, " ");
+ _builder.append(", msg);");
_builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
}
}
- _builder.append("\t\t");
- _builder.append("default: ");
- ActorClass _actorClass_4 = ai.getActorClass();
- String _name_16 = _actorClass_4.getName();
- _builder.append(_name_16, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_9 = ai.getPath();
- String _pathName_8 = this._roomExtensions.getPathName(_path_9);
- _builder.append(_pathName_8, " ");
- _builder.append(",(etPort*)&");
- String _path_10 = ai.getPath();
- String _pathName_9 = this._roomExtensions.getPathName(_path_10);
- _builder.append(_pathName_9, " ");
- _builder.append("_const.");
- String _name_17 = pi.getName();
- _builder.append(_name_17, " ");
- _builder.append(", msg);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
_builder.append("break;");
_builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- } else {
- _builder.append("\t\t");
- ActorClass _actorClass_5 = ai.getActorClass();
- String _name_18 = _actorClass_5.getName();
- _builder.append(_name_18, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_11 = ai.getPath();
- String _pathName_10 = this._roomExtensions.getPathName(_path_11);
- _builder.append(_pathName_10, " ");
- _builder.append(",(etPort*)&");
- String _path_12 = ai.getPath();
- String _pathName_11 = this._roomExtensions.getPathName(_path_12);
- _builder.append(_pathName_11, " ");
- _builder.append("_const.");
- String _name_19 = pi.getName();
- _builder.append(_name_19, " ");
- _builder.append(", msg);");
- _builder.newLineIfNotEmpty();
}
}
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
}
}
}
}
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("default:");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t\t");
+ _builder.append("etLogger_logErrorF(\"MessageService_");
+ String _name_21 = thread.getName();
+ _builder.append(_name_21, " ");
+ _builder.append("_receiveMessage: address %d does not exist \", msg->address);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
+ _builder.newLine();
+ } else {
+ _builder.append("\t");
+ _builder.append("/* nothing to dispatch -> empty function generated to satisfy interface of message service */");
+ _builder.newLine();
}
}
- _builder.append("\t\t");
+ _builder.append("}");
_builder.newLine();
- _builder.append("\t\t");
- _builder.append("default:");
_builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("etLogger_logErrorF(\"MessageService_");
- String _name_20 = thread.getName();
- _builder.append(_name_20, " ");
- _builder.append("_receiveMessage: address %d does not exist \", msg->address);");
+ final Function1<ActorInstance,Boolean> _function_4 = new Function1<ActorInstance,Boolean>() {
+ public Boolean apply(final ActorInstance ai) {
+ boolean _or = false;
+ ActorClass _actorClass = ai.getActorClass();
+ ActorCommunicationType _commType = _actorClass.getCommType();
+ boolean _equals = Objects.equal(_commType, ActorCommunicationType.DATA_DRIVEN);
+ if (_equals) {
+ _or = true;
+ } else {
+ ActorClass _actorClass_1 = ai.getActorClass();
+ ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
+ boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.ASYNCHRONOUS);
+ _or = (_equals || _equals_1);
+ }
+ return Boolean.valueOf(_or);
+ }
+ };
+ final Iterable<ActorInstance> executedInstances = IterableExtensions.<ActorInstance>filter(instancesOnThread, _function_4);
_builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("break;");
+ _builder.append("/**");
_builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
+ _builder.append(" ");
+ _builder.append("* generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread \"");
+ String _name_22 = thread.getName();
+ _builder.append(_name_22, " ");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("*/");
_builder.newLine();
+ _builder.append("static void MsgDispatcher_");
+ String _name_23 = thread.getName();
+ _builder.append(_name_23, "");
+ _builder.append("_execute(void){");
+ _builder.newLineIfNotEmpty();
+ {
+ int _size_1 = IterableExtensions.size(executedInstances);
+ boolean _greaterThan_1 = (_size_1 > 0);
+ if (_greaterThan_1) {
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
+ String _name_24 = thread.getName();
+ _builder.append(_name_24, " ");
+ _builder.append("\", \"execute\")");
+ _builder.newLineIfNotEmpty();
+ {
+ for(final ActorInstance ai_1 : executedInstances) {
+ _builder.append("\t");
+ ActorClass _actorClass_6 = ai_1.getActorClass();
+ String _name_25 = _actorClass_6.getName();
+ _builder.append(_name_25, " ");
+ _builder.append("_execute((void*)&");
+ String _path_13 = ai_1.getPath();
+ String _pathName_12 = this._roomExtensions.getPathName(_path_13);
+ _builder.append(_pathName_12, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
+ _builder.newLine();
+ } else {
+ _builder.append("\t");
+ _builder.append("/* nothing to execute -> empty function generated to satisfy interface of message service */");
+ _builder.newLine();
+ }
+ }
_builder.append("}");
_builder.newLine();
}
diff --git a/runtime/org.eclipse.etrice.runtime.c/.cproject b/runtime/org.eclipse.etrice.runtime.c/.cproject
index 6daae33..8700d49 100644
--- a/runtime/org.eclipse.etrice.runtime.c/.cproject
+++ b/runtime/org.eclipse.etrice.runtime.c/.cproject
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.lib.debug.505530637">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.lib.debug.505530637" moduleId="org.eclipse.cdt.core.settings" name="Debug">
@@ -49,19 +51,9 @@
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.278235928" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base"/>
</toolChain>
</folderInfo>
- <folderInfo id="cdt.managedbuild.config.gnu.mingw.lib.debug.505530637.91518658" name="/" resourcePath="src/platforms/ST_CoretexM3_Euros_GCCELF_SK_FM3_176PMC_Ethernet">
- <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.lib.debug.2014762902" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.lib.debug" unusedChildren="">
- <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.lib.debug.554229249" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.lib.debug.806687472"/>
- <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.lib.debug.2115657260" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.lib.debug.1896612237"/>
- <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.lib.debug.263513205" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.lib.debug.1813889263"/>
- <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.lib.debug.1485555154" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.lib.debug.1185604346"/>
- <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.333821521" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base.597146923"/>
- <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.102741495" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.278235928"/>
- </toolChain>
- </folderInfo>
<sourceEntries>
<entry excluding="test|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
- <entry excluding="platforms/ST_CoretexM3_Euros_GCCELF_SK_FM3_176PMC_Ethernet|platforms/ST_MSP430_G2553_CCS5_LaunchPad|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry excluding="platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_G2553_CCS5_LaunchPad|platforms/ST_CoretexM3_Euros_GCCELF_SK_FM3_176PMC_Ethernet" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
@@ -107,7 +99,7 @@
</folderInfo>
<sourceEntries>
<entry excluding="test|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
- <entry excluding="platforms/ST_MSP430_G2553_CCS5_LaunchPad|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry excluding="platforms/ST_MSP430_F5438_CCS5_EXP430F5438|platforms/MSP430|platforms/ST_MSP430_F5438_CCS5_HWElevator|platforms/ST_MSP430_G2553_CCS5_LaunchPad" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/base/etMemory_FreeList.h b/runtime/org.eclipse.etrice.runtime.c/src/common/base/etMemory_FreeList.h
index fcf19d3..3f46272 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/base/etMemory_FreeList.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/base/etMemory_FreeList.h
@@ -20,10 +20,11 @@
*
* \param heap pointer to the heap to be managed
* \param size the size in bytes of the heap
- * \nslots the number of slots to be used (should be greater or equal the number of different object sizes)
+ * \param nslots the number of slots to be used (should be greater or equal the number of different object sizes)
*
* \return the pointer to the initialized etMemory struct
*/
+
etMemory* etMemory_FreeList_init(void* heap, etUInt32 size, etUInt16 nslots);
etUInt32 etMemory_FreeList_freeHeapMem(void* heap);
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/base/etQueue.c b/runtime/org.eclipse.etrice.runtime.c/src/common/base/etQueue.c
index 8496cdb..418bf58 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/base/etQueue.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/base/etQueue.c
@@ -26,7 +26,6 @@ void etQueue_init(etQueue* self){
void etQueue_push(etQueue* self, etQueueObj* obj){
- // TODO: optimize queue for concurrent push / pop
ET_MSC_LOGGER_SYNC_ENTRY("etQueue", "push")
if (self->first == NULL) {
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.c
index d9dd15e..547eec0 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/debugging/etMSCLogger.c
@@ -13,6 +13,7 @@
#include "debugging/etMSCLogger.h"
#include "debugging/etLogger.h"
+#include "platform/etPlatform.h"
static etFileHandle etMSCLogger_fileHandle = NULL;
static char* etMSCLogger_objectName = "";
@@ -42,7 +43,7 @@ char* etMSCLogger_getObjectName(void){
void etMSCLogger_syncCall(char* sourceName, char* messageName, char* targetName){
if (etMSCLogger_fileHandle != NULL) {
- etLogger_fprintf(etMSCLogger_fileHandle, "%s ==> %s %s\n", sourceName, targetName, messageName);
+ etLogger_fprintf(etMSCLogger_fileHandle, "%s ==> %s %s(thread=%ld)\n", sourceName, targetName, messageName, etThread_self_id());
}
}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageReceiver.h b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageReceiver.h
index a1bd92c..a569a08 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageReceiver.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageReceiver.h
@@ -19,5 +19,6 @@
typedef void (*etActorReceiveMessage)(void* self, void* ifitem, const etMessage* msg);
typedef void (*etDispatcherReceiveMessage)(const etMessage* msg);
+typedef void (*etDispatcherExecute)(void);
#endif /* _ETMESSAGERECEIVER_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c
index de713f5..3d119ea 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.c
@@ -23,7 +23,7 @@
* initialize message service with all needed data and initialize message queue and message pool
*
*/
-void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher){
+void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher, etDispatcherExecute executeFct, enum etMessageService_execmode execmode){
ET_MSC_LOGGER_SYNC_ENTRY("etMessageService", "init")
/* copy init data to self */
@@ -31,6 +31,8 @@ void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 max
self->messageBuffer.maxBlocks = maxBlocks;
self->messageBuffer.blockSize = blockSize;
self->msgDispatcher = msgDispatcher;
+ self->executeFct = executeFct;
+ self->execmode = execmode;
/* copy init queue and pool */
etMessageQueue_init( &(self->messagePool) ); /* the pool is also a queue*/
@@ -110,6 +112,12 @@ etMessage* etMessageService_getMessageBuffer(etMessageService* self, etUInt16 si
ET_MSC_LOGGER_SYNC_EXIT
return msg;
}
+ else {
+ etLogger_logErrorF("etMessageService_getMessageBuffer: message pool empty: %d", etMessageService_getMessagePoolLowWaterMark(self));
+ }
+ }
+ else {
+ etLogger_logErrorF("etMessageService_getMessageBuffer: message too big: %d, blockSize: %d", size, self->messageBuffer.blockSize);
}
etMutex_leave(&self->poolMutex);
ET_MSC_LOGGER_SYNC_EXIT
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.h b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.h
index f91cb3f..7bfeaa2 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etMessageService.h
@@ -20,26 +20,31 @@
#include "platform/etPlatform.h"
+enum etMessageService_execmode {
+ EXECMODE_POLLED, EXECMODE_BLOCKED, EXECMODE_MIXED
+};
+
typedef struct etBuffer{
- etUInt8 *buffer;
- etUInt16 maxBlocks;
- etUInt16 blockSize;
+ etUInt8 *buffer; /** buffer points to the actual memory position for the message pool */
+ etUInt16 maxBlocks; /** number of blocks for the message pool */
+ etUInt16 blockSize; /** size of blocks for the message pool */
} etBuffer;
typedef struct etMessageService {
- etMessageQueue messageQueue;
- etMessageQueue messagePool;
- etBuffer messageBuffer;
- etDispatcherReceiveMessage msgDispatcher;
- etThread thread;
- etMutex poolMutex;
- etMutex queueMutex;
- etSema executionSemaphore; /* sempahore for waiting and waking up the execution */
+ etMessageQueue messageQueue; /** message queue that holds all used messages */
+ etMessageQueue messagePool; /** message pool that holds all free messages */
+ etBuffer messageBuffer; /** information about the message buffer that holds information about the actual memory position and size for the message pool */
+ etDispatcherReceiveMessage msgDispatcher; /** function pointer to the generated message dispatcher function */
+ etDispatcherExecute executeFct; /** function pointer to the generated message execute function */
+ etThread thread; /** thread for the execution of the message service */
+ etMutex poolMutex; /** mutex for synchronizing the access to the message pool */
+ etMutex queueMutex; /** mutex for synchronizing the access to the message queue */
+ etSema executionSemaphore; /** sempahore for waiting and waking up the execution */
+ enum etMessageService_execmode execmode; /** execution mode*/
} etMessageService;
-
/* lifecycle functions to startup, execute and shutdown the message service */
-void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher);
+void etMessageService_init(etMessageService* self, etUInt8* buffer, etUInt16 maxBlocks, etUInt16 blockSize, etDispatcherReceiveMessage msgDispatcher, etDispatcherExecute executeFct, enum etMessageService_execmode execmode);
void etMessageService_start(etMessageService* self);
void etMessageService_execute(etMessageService* self);
void etMessageService_stop(etMessageService* self);
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.c b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.c
new file mode 100644
index 0000000..8fb1516
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.c
@@ -0,0 +1,31 @@
+/**
+ * @author generated by eTrice
+ *
+ * Source File of ProtocolClass etSystemProtocol
+ *
+ */
+
+#include "etSystemProtocol.h"
+#include "debugging/etMSCLogger.h"
+
+
+void etSystemProtocolConjPort_poll(const etSystemProtocolConjPort* self) {
+ ET_MSC_LOGGER_SYNC_ENTRY("etSystemProtocolConjPort", "poll")
+ etPort_sendMessage(self, etSystemProtocol_IN_poll, 0, NULL);
+ ET_MSC_LOGGER_SYNC_EXIT
+}
+
+/*--------------------- debug helpers */
+
+/* message names as strings for debugging (generate MSC) */
+static const char* const etSystemProtocol_messageStrings[] = {"MIN", "poll", "MAX"};
+
+const char* etSystemProtocol_getMessageString(int msg_id) {
+ if (msg_id<etSystemProtocol_MSG_MIN || msg_id>etSystemProtocol_MSG_MAX+1){
+ /* id out of range */
+ return "Message ID out of range";
+ }
+ else{
+ return etSystemProtocol_messageStrings[msg_id];
+ }
+}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.h b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.h
new file mode 100644
index 0000000..f3f803f
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etSystemProtocol.h
@@ -0,0 +1,34 @@
+/**
+ * @author generated by eTrice
+ *
+ * Header File of ProtocolClass etSystemProtocol
+ *
+ */
+
+#ifndef _ETSYSTEMPROTOCOL_H_
+#define _ETSYSTEMPROTOCOL_H_
+
+#include "etDatatypes.h"
+#include "modelbase/etPort.h"
+
+/* message IDs */
+enum etSystemProtocol_msg_ids {
+ etSystemProtocol_MSG_MIN = 0,
+ etSystemProtocol_IN_poll = 1,
+ etSystemProtocol_MSG_MAX = 2
+};
+
+/*--------------------- port structs and methods */
+typedef etPort etSystemProtocolConjPort;
+
+
+void etSystemProtocolConjPort_poll(const etSystemProtocolConjPort* self);
+
+/*--------------------- debug helpers */
+
+/* get message string for message id */
+const char* etSystemProtocol_getMessageString(int msg_id);
+
+
+#endif /* _ETSYSTEMPROTOCOL_H_ */
+
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.c b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.c
new file mode 100644
index 0000000..ad288e9
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.c
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#include "etWakeupService.h"
+#include "etMessage.h"
+#include "etMessageService.h"
+
+
+/**
+ * static instance of the execute Message
+ */
+
+/**
+ * calls cyclically all receiveMessage functions (at the right time) to deliver the poll message
+ * */
+void etWakeupService_execute(etWakeupService* self) {
+ int i;
+ for (i=0; i<self->targetListLength; i++){
+ /** send message call the receiveMessage function to deliver the execute message */
+ etSystemProtocolConjPort_poll( &(self->targetList[i].messageServicePort) );
+ }
+}
+
+
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.h b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.h
new file mode 100644
index 0000000..c8a5421
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/messaging/etWakeupService.h
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef _ETWAKEUPSERVICE_H_
+#define _ETWAKEUPSERVICE_H_
+
+#include "etDatatypes.h"
+#include "etSystemProtocol.h"
+
+/**
+ * time definition composed by the number of seconds and the number of nano seconds
+ */
+typedef struct etTime {
+ etInt32 seconds;
+ etInt32 nseconds;
+} etTime;
+
+
+typedef struct etWakeupTarget {
+ etSystemProtocolConjPort messageServicePort; /** port to send the poll message to the message service */
+ etTime wakeupTime; /** time for the cyclic wake up call */
+} etWakeupTarget;
+
+
+typedef struct etWakeupService {
+ etWakeupTarget* targetList; /** array with targets to be called */
+ etInt16 targetListLength; /** number of targets to be called */
+} etWakeupService;
+
+void etWakeupService_execute(etWakeupService* self);
+
+
+#endif /* _ETWAKEUPSERVICE_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/modelbase/etRTSystemServicesProtocol.h b/runtime/org.eclipse.etrice.runtime.c/src/common/modelbase/etRTSystemServicesProtocol.h
new file mode 100644
index 0000000..c192f45
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/modelbase/etRTSystemServicesProtocol.h
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef ETRTSYSTEMSERVICESPROTOCOL_H_
+#define ETRTSYSTEMSERVICESPROTOCOL_H_
+
+
+
+#endif /* ETRTSYSTEMSERVICESPROTOCOL_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etPlatform.h b/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etPlatform.h
index 66d56c8..b332e21 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etPlatform.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/platform/etPlatform.h
@@ -15,35 +15,54 @@
#include "etDatatypes.h"
-/*
+/**
* etPlatform.h defines a generic interface for platform specific implementations
*
* */
-/* platform specific functions */
-
-/******************thread********************/
+/*
+ * typedefs
+ */
typedef int32 etStacksize;
typedef int32 etPriority;
typedef charPtr etThreadname;
typedef void (*etThreadFunction)(void *);
+/**
+ * etThread holds all data needed to handle a thread instance
+ * the struct has to be filled before calling etThread_construct except for osData and osId
+ **/
typedef struct etThread{
- etOSThreadData osData; /* OS specific thread data (e.g. handle or id) */
- etStacksize stacksize;
- etPriority priority;
- etThreadname threadName;
- etThreadFunction threadFunction;
- void* threadFunctionData;
+ etOSThreadData osData; /**< OS specific thread data (e.g. handle or id) -> is filled in by etThread_construct **/
+ etOSThreadId osId; /**< integer thread id (used e.g. for debugging) -> is filled in by etThread_construct **/
+ etStacksize stacksize; /**< configuration of stacksize -> has to be filled in by caller of etThread_construct **/
+ etPriority priority; /**< configuration of priority -> has to be filled in by caller of etThread_construct **/
+ etThreadname threadName; /**< configuration of threadName -> has to be filled in by caller of etThread_construct **/
+ etThreadFunction threadFunction; /**< call back function to be called by thread -> has to be filled in by caller of etThread_construct **/
+ void* threadFunctionData; /**< data for call back function to be called by thread -> has to be filled in by caller of etThread_construct **/
} etThread;
-
+/**
+ * create and start a new thread
+ * \param self pointer to thread instance
+ */
+// TODO: add return values for error handling
void etThread_construct(etThread* self);
+
+/**
+ * stop and destroy a new thread
+ * \param self pointer to thread instance
+ */
void etThread_destruct(etThread* self);
-/******************thread helpers********************/
+/**
+ * pausing the execution of the thread for <b>millis</b> milliseconds
+ * \param millis sleeping time in milliseconds
+ */
void etThread_sleep(etInt32 millis);
+etOSThreadData etThread_self(void);
+etOSThreadId etThread_self_id(void);
/*****************mutex**********************/
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.c b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.c
new file mode 100644
index 0000000..a92a36c
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.c
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+
+#include "runtime/etRuntime.h"
+
+
+
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.h b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.h
new file mode 100644
index 0000000..229e2e5
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etRuntime.h
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef _ETRUNTIME_H_
+#define _ETRUNTIME_H_
+
+
+
+#endif /* _ETRUNTIME_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.c b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.c
new file mode 100644
index 0000000..8e488b0
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.c
@@ -0,0 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+
+#include "runtime/etThreadList.h"
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.h b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.h
new file mode 100644
index 0000000..7b20103
--- /dev/null
+++ b/runtime/org.eclipse.etrice.runtime.c/src/common/runtime/etThreadList.h
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2013 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Thomas Schuetz (initial contribution)
+ *
+ *******************************************************************************/
+
+#ifndef _etThreadController_H_
+#define _etThreadController_H_
+
+#include "platform/etPlatform.h"
+
+/**
+ * etThreadController holds a complete list of all threads
+ *
+ **/
+typedef struct etThreadController{
+ etThread* threadList; /**< list of all thread data (as array) **/
+ int32 size; /**< size of the list **/
+}etThreadController;
+
+int32 etThreadController_getNumberOfThreads(etThreadController* self);
+void etThreadController_startAll(etThreadController* self);
+void etThreadController_stopAll(etThreadController* self);
+void etThreadController_getCurrentThreadId(void);
+
+#endif /* _etThreadController_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
index 7586d5d..d6a33fd 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h
@@ -50,6 +50,11 @@ typedef double float64;
/* string datatypes */
typedef char* charPtr;
+
+#ifndef NULL
+ #define NULL 0
+#endif
+
/* boolean datatypes and values */
typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/
#ifndef __MINGW32__
@@ -88,7 +93,7 @@ typedef bool etBool;
typedef FILE* etFileHandle;
-typedef int8 etAddressId;
+typedef int16 etAddressId;
/*
* typedefs for threading
@@ -98,6 +103,7 @@ typedef int8 etAddressId;
typedef CRITICAL_SECTION etOSMutexData;
typedef HANDLE etOSThreadData;
+ typedef DWORD etOSThreadId;
typedef HANDLE etOSSemaData;
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c
index efe9f27..1e1a97b 100644
--- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c
+++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etPlatform.c
@@ -63,6 +63,14 @@ void etThread_sleep(etInt32 millis){
ET_MSC_LOGGER_SYNC_EXIT
}
+etOSThreadData etThread_self(void){
+ return GetCurrentThread();
+}
+
+etOSThreadId etThread_self_id(void){
+ return GetCurrentThreadId();
+}
+
/*****************mutex**********************/
void etMutex_construct(etMutex* self){
ET_MSC_LOGGER_SYNC_ENTRY("etMutex", "construct")