diff options
author | Henrik Rentz-Reichert | 2013-09-17 07:44:21 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2013-09-17 08:35:53 +0000 |
commit | 2e8f485fd4ce200456b8445ae55fbab61ebfe09b (patch) | |
tree | a0e705ecd3a85cd1b353c146ac5d8e7c53789ded /examples | |
parent | 16e5714577bb356c2055da5f6d2f7c37777d723b (diff) | |
download | org.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.tar.gz org.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.tar.xz org.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.zip |
[core.genmodel, generator.java] bug 417395: [generator.java] make SAPs available in optional actors
https://bugs.eclipse.org/417395
added also example and short documentation
Diffstat (limited to 'examples')
31 files changed, 2739 insertions, 0 deletions
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath b/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath new file mode 100644 index 000000000..80d796d3b --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src-gen"/> + <classpathentry kind="src" path="/org.eclipse.etrice.runtime.java"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.etrice.modellib.java"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore b/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore new file mode 100644 index 000000000..9aaf2fa20 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore @@ -0,0 +1,3 @@ +bin +src-gen-info +*.obj diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.project b/examples/org.eclipse.etrice.examples.dynamicactors9/.project new file mode 100644 index 000000000..c0c255813 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.project @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.etrice.examples.dynamicactors9</name> + <comment></comment> + <projects> + <project>org.eclipse.etrice.runtime.java</project> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.xtext.ui.shared.xtextBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.xtext.ui.shared.xtextNature</nature> + </natures> +</projectDescription> diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties b/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties new file mode 100644 index 000000000..83655578d --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties @@ -0,0 +1,2 @@ +source.. = src/,\ +src-gen/ diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch b/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch new file mode 100644 index 000000000..f358fe28e --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.etrice.generator.launch.java.launchConfigurationType"> +<booleanAttribute key="Debug" value="false"/> +<booleanAttribute key="GenDocumentation" value="false"/> +<booleanAttribute key="GenInstanceDiagram" value="false"/> +<stringAttribute key="GenModelPath" value="${workspace_loc:/PingPong}"/> +<booleanAttribute key="Lib" value="false"/> +<booleanAttribute key="MSC" value="true"/> +<listAttribute key="ModelFiles"> +<listEntry value="${workspace_loc:/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap}"/> +</listAttribute> +<booleanAttribute key="Persist" value="false"/> +<booleanAttribute key="SaveGenModel" value="false"/> +<booleanAttribute key="Verbose" value="false"/> +<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/> +<listAttribute key="org.eclipse.debug.ui.favoriteGroups"> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> +</listAttribute> +</launchConfiguration> diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap new file mode 100644 index 000000000..eb58cb56a --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap @@ -0,0 +1,9 @@ +MappingModel org.eclipse.etrice.examples.dynamicactors9 { + import org.eclipse.etrice.examples.dynamicactors9.* from "DynAct9.room" + import org.eclipse.etrice.examples.dynamicactors9.* from "DynAct9.etphys" + Mapping LogSys1 -> PhysSys1 { + SubSystemMapping subSysRef1 -> nodeRef1 { + ThreadMapping defaultThread -> PhysicalThread1 + } + } +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys new file mode 100644 index 000000000..a5dcb7749 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys @@ -0,0 +1,25 @@ +PhysicalModel org.eclipse.etrice.examples.dynamicactors9 { + + PhysicalSystem PhysSys1 { + NodeRef nodeRef1 : NodeClass1 + } + + NodeClass NodeClass1 { + runtime = RuntimeClass1 + priomin = -10 + priomax = 10 + + DefaultThread PhysicalThread1 { + execmode = mixed + interval = 100ms + prio = 0 + stacksize = 1024 + msgblocksize = 32 + msgpoolsize = 10 + } + } + + RuntimeClass RuntimeClass1 { + model = multiThreaded + } +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room new file mode 100644 index 000000000..ef67cf8e9 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room @@ -0,0 +1,121 @@ +RoomModel org.eclipse.etrice.examples.dynamicactors9 { + + import room.basic.service.timing.* from "../../org.eclipse.etrice.modellib.java/model/TimingService.room" + + LogicalSystem LogSys1 { + SubSystemRef subSysRef1: SubSysClass1 + } + + SubSystemClass SubSysClass1 { + ActorRef actorRef1: PingPongTop + ActorRef timingService: ATimingService + LayerConnection ref actorRef1 satisfied_by timingService.timer + LogicalThread defaultThread + } + + ActorClass PingPongTop { + Structure { + ActorRef container: Container + } + Behavior { } + } + + ActorClass Container { + Structure { + optional ActorRef pp: PingPong + } + Behavior { + StateMachine { + Transition init: initial -> Running { } + State Running { + entry { + "pp.createOptionalActor(\"PingPong\", getThread());" + } + } + } + } + } + + ActorClass PingPong { + Structure { + ActorRef receiver: Receiver + ActorRef sender: Sender + Binding receiver.sender and sender.receiver + } + Behavior { } + } + ActorClass Sender { + Interface { + conjugated Port receiver: PingPongProtocol + } + Structure { + external Port receiver + } + Behavior { + StateMachine { + Transition init: initial -> SendingPing { } + Transition tr0: SendingPing -> ReceivedPong { + triggers { + <pong: receiver> + } + } + State SendingPing { + entry { + "receiver.ping();" + } + } + State ReceivedPong { + entry { + "System.out.println(\"Done, enter \'quit\' to exit\");" + } + } + } + } + } + + ActorClass Receiver { + Interface { + Port sender: PingPongProtocol + } + Structure { + external Port sender + SAP timing: PTimer + } + Behavior { + StateMachine { + Transition init: initial -> WaitingForPing { } + Transition tr0: WaitingForPing -> WaitingForAWhile { + triggers { + <ping: sender> + } + } + Transition tr1: WaitingForAWhile -> SentPong { + triggers { + <timeout: timing> + } + } + State WaitingForPing + State WaitingForAWhile { + entry { + "timing.startTimeout(1000);" + } + } + State SentPong { + entry { + "sender.pong();" + } + } + } + } + } + + ProtocolClass PingPongProtocol { + incoming { + Message ping() + } + outgoing { + Message pong() + } + } + +}
\ No newline at end of file diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure new file mode 100644 index 000000000..143c09c31 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure @@ -0,0 +1,142 @@ +<?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 Container" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:Container"/> + </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="../DynAct9.room#ActorClass:Container"/> + </link> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:Container$pp"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="pp
(PingPong)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="*"/> + </children> + </children> + </children> + <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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure new file mode 100644 index 000000000..2d3f498c9 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure @@ -0,0 +1,142 @@ +<?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 LogSys1" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#LogicalSystem:LogSys1"/> + </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="../DynAct9.room#LogicalSystem:LogSys1"/> + </link> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#SubSystemRef:LogSys1$subSysRef1"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="subSysRef1
(SubSysClass1)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value=""/> + </children> + </children> + </children> + <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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure new file mode 100644 index 000000000..f5f796280 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure @@ -0,0 +1,297 @@ +<?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 PingPong" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.0/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:PingPong"/> + </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="../DynAct9.room#ActorClass:PingPong"/> + </link> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="482" y="215"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:PingPong$receiver"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="receiver
(Receiver)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/> + </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" y="37"> + <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="../DynAct9.room#Port:Receiver$sender"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" 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="6" font="//@fonts.0" value="sender"/> + </children> + </children> + </children> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="135" y="215"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:PingPong$sender"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="sender
(Sender)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/> + </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="180" y="38"> + <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="../DynAct9.room#Port:Sender$receiver"/> + </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" value="receiver"/> + </children> + </children> + </children> + </children> + <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@children.2/@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="../DynAct9.room#Binding:PingPong$sender!receiver-receiver!sender"/> + </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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure new file mode 100644 index 000000000..41a6ffd9f --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure @@ -0,0 +1,142 @@ +<?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 PingPongTop" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:PingPongTop"/> + </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="../DynAct9.room#ActorClass:PingPongTop"/> + </link> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:PingPongTop$container"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="container
(Container)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/> + </children> + </children> + </children> + <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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure new file mode 100644 index 000000000..279dbd7b8 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure @@ -0,0 +1,36 @@ +<?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 Receiver" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:Receiver"/> + </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="../DynAct9.room#ActorClass:Receiver"/> + </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" y="234"> + <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="../DynAct9.room#Port:Receiver$sender"/> + </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" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" value="sender"/> + </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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior new file mode 100644 index 000000000..95f468f89 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior @@ -0,0 +1,135 @@ +<?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 Sender" 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" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:Sender"/> + </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="../DynAct9.room#StateGraph:Sender$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"> + <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="../DynAct9.room#StateGraph:Sender$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="129" height="90" x="202" y="120"> + <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="69" 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="44" y="3" cornerHeight="5" cornerWidth="5"/> + <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="34" 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="34" 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="34" 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="../DynAct9.room#SimpleState:Sender$SendingPing"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0" 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="69" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="SendingPing"/> + </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="139" height="90" x="463" y="120"> + <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="79" 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="54" y="3" cornerHeight="5" cornerWidth="5"/> + <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="39" 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="39" 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="39" 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="../DynAct9.room#SimpleState:Sender$ReceivedPong"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1" 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="79" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ReceivedPong"/> + </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="../DynAct9.room#InitialTransition:Sender$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.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="../DynAct9.room#TriggeredTransition:Sender$tr0"/> + </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="tr0: <pong:receiver>"/> + </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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure new file mode 100644 index 000000000..4a0555040 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure @@ -0,0 +1,36 @@ +<?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 Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#ActorClass:Sender"/> + </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="../DynAct9.room#ActorClass:Sender"/> + </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="800" y="243"> + <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="../DynAct9.room#Port:Sender$receiver"/> + </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" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_RIGHT" value="receiver"/> + </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.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure new file mode 100644 index 000000000..b23c2f5ac --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure @@ -0,0 +1,290 @@ +<?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 SubSysClass1" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.10.0"> + <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/> + <link> + <businessObjects href="../DynAct9.room#SubSystemClass:SubSysClass1"/> + </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="../DynAct9.room#SubSystemClass:SubSysClass1"/> + </link> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="216" y="133"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:SubSysClass1$actorRef1"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="actorRef1
(PingPongTop)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/> + </children> + </children> + <children xsi:type="pi:ContainerShape" visible="true" active="true"> + <properties key="obj-type" value="ref"/> + <properties key="actorref_version" value="2"/> + <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="216" y="334"> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27"> + <properties key="actorref_graphic_element" value="replborder"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30"> + <properties key="actorref_graphic_element" value="mainborder"/> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <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"> + <properties key="actorref_graphic_element" value="substructure"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="15"/> + <points x="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="30"/> + <points x="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="45"/> + <points x="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="60"/> + <points x="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points y="75"/> + <points x="75"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="10" y="80"/> + <points x="90"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="25" y="80"/> + <points x="105"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="40" y="80"/> + <points x="120"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="55" y="80"/> + <points x="135"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="70" y="80"/> + <points x="150"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="85" y="80"/> + <points x="165"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="100" y="80"/> + <points x="180"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="115" y="80"/> + <points x="180" y="15"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="130" y="80"/> + <points x="180" y="30"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="145" y="80"/> + <points x="180" y="45"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="160" y="80"/> + <points x="180" y="60"/> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4"> + <properties key="actorref_graphic_element" value="hatched_line"/> + <points x="175" y="80"/> + <points x="180" y="75"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithmChildren> + <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30"> + <properties key="actorref_graphic_element" value="sizeframe"/> + </graphicsAlgorithmChildren> + </graphicsAlgorithm> + <link> + <businessObjects href="../DynAct9.room#ActorRef:SubSysClass1$timingService"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1"> + <properties key="actorref_graphic_element" value="layerconn_anchor"/> + </anchors> + <children visible="true"> + <properties key="actorref_graphic_element" value="name_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService
(ATimingService)"/> + </children> + <children> + <properties key="actorref_graphic_element" value="size_shape"/> + <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/> + </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="84"> + <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/> + </graphicsAlgorithm> + <link> + <businessObjects href="platform:/resource/org.eclipse.etrice.examples.dynamicactors9/model/../../org.eclipse.etrice.modellib.java/model/TimingService.room#SPP:ATimingService$timer"/> + </link> + <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.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="timer"/> + </children> + </children> + </children> + </children> + <connections xsi:type="pi:ManhattanConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0"> + <properties key="obj-type" value="conn"/> + <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/> + <link> + <businessObjects href="../DynAct9.room#LayerConnection:SubSysClass1$actorRef1-timingService!timer"/> + </link> + <connectionDecorators visible="true" locationRelative="true" location="1.0"> + <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"> + <points x="-15" y="10"/> + <points/> + <points x="-15" y="-10"/> + </graphicsAlgorithm> + </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"/> +</pi:Diagram> diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch b/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch new file mode 100644 index 000000000..f68a8a092 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors9.Node_nodeRef1_subSysRef1Runner"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.dynamicactors9"/> +</launchConfiguration> diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java new file mode 100644 index 000000000..db38760c2 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java @@ -0,0 +1,204 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Address; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + +import room.basic.service.timing.*; + +import room.basic.service.timing.PTimer.*; +import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*; + +import org.eclipse.etrice.examples.dynamicactors9.PingPongInterface; + + + +public class Container extends ActorClassBase { + + + //--------------------- ports + + //--------------------- saps + + //--------------------- services + + //--------------------- optional actors + protected PingPongInterface pp = null; + + //--------------------- interface item IDs + + /*--------------------- attributes ---------------------*/ + /*--------------------- operations ---------------------*/ + + //--------------------- construction + public Container(IRTObject parent, String name) { + super(parent, name); + setClassName("Container"); + + // initialize attributes + + // own ports + + // own saps + + // own service implementations + + // sub actors + pp = new PingPongInterface(this, "pp"); + + } + + /* --------------------- attribute setters and getters */ + + + //--------------------- port getters + + //--------------------- lifecycle functions + public void stop(){ + stopUser(); + super.stop(); + } + + public void destroy() { + DebuggingService.getInstance().addMessageActorDestroy(this); + super.destroy(); + } + + /* state IDs */ + public static final int STATE_Running = 2; + public static final int STATE_MAX = 3; + + /* transition chains */ + public static final int CHAIN_TRANS_INITIAL_TO__Running = 1; + + /* triggers */ + public static final int POLLING = 0; + + // state names + protected static final String stateStrings[] = { + "<no state>", + "<top>", + "Running" + }; + + // history + protected int history[] = {NO_STATE, NO_STATE, NO_STATE}; + + private void setState(int new_state) { + DebuggingService.getInstance().addActorState(this,stateStrings[new_state]); + this.state = new_state; + } + + /* Entry and Exit Codes */ + protected void entry_Running() { + pp.createOptionalActor("PingPong", getThread()); + } + + /* Action Codes */ + + /** + * 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 + */ + private void exitTo(int current, int to) { + while (current!=to) { + switch (current) { + case STATE_Running: + this.history[STATE_TOP] = STATE_Running; + current = STATE_TOP; + break; + default: + /* should not occur */ + 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 either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa + */ + private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) { + switch (chain) { + case CHAIN_TRANS_INITIAL_TO__Running: + { + return STATE_Running; + } + default: + /* should not occur */ + break; + } + 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 + * @return - the ID of the final leaf state + */ + private int enterHistory(int state) { + boolean skip_entry = false; + if (state >= STATE_MAX) { + state = (state - STATE_MAX); + skip_entry = true; + } + while (true) { + switch (state) { + case STATE_Running: + if (!(skip_entry)) entry_Running(); + /* in leaf state: return state id */ + return STATE_Running; + case STATE_TOP: + state = this.history[STATE_TOP]; + break; + default: + /* should not occur */ + break; + } + skip_entry = false; + } + /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */ + } + + public void executeInitTransition() { + int chain = CHAIN_TRANS_INITIAL_TO__Running; + int next = executeTransitionChain(chain, null, null); + next = enterHistory(next); + setState(next); + } + + /* receiveEvent contains the main implementation of the FSM */ + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) { + int trigger = ifitem.getLocalId() + EVT_SHIFT*evt; + int chain = NOT_CAUGHT; + int catching_state = NO_STATE; + + if (!handleSystemEvent(ifitem, evt, generic_data)) { + switch (getState()) { + case STATE_Running: + break; + default: + /* should not occur */ + break; + } + } + if (chain != NOT_CAUGHT) { + exitTo(getState(), catching_state); + { + int next = executeTransitionChain(chain, ifitem, generic_data); + next = enterHistory(next); + setState(next); + } + } + } +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java new file mode 100644 index 000000000..168f9faa7 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java @@ -0,0 +1,95 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.config.IVariableService; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageService; +import org.eclipse.etrice.runtime.java.messaging.MessageService; +import org.eclipse.etrice.runtime.java.messaging.MessageServiceController; +import org.eclipse.etrice.runtime.java.messaging.RTServices; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase; +import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker; + +import room.basic.service.timing.*; + + +public class Node_nodeRef1_subSysRef1 extends SubSystemClassBase { + + public static final int THREAD_PHYSICALTHREAD1 = 0; + + + public Node_nodeRef1_subSysRef1(IRTObject parent, String name) { + super(parent, name); + } + + @Override + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){ + } + + @Override + public void instantiateMessageServices() { + + IMessageService msgService; + msgService = new MessageService(this, MessageService.ExecMode.MIXED, 100000000, 0, THREAD_PHYSICALTHREAD1, "MessageService_PhysicalThread1" /*, thread_prio */); + RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(msgService); + } + + @Override + public void instantiateActors() { + + // thread mappings + addPathToThread("/LogSys1/subSysRef1/actorRef1", THREAD_PHYSICALTHREAD1); + addPathToThread("/LogSys1/subSysRef1/actorRef1/container", THREAD_PHYSICALTHREAD1); + addPathToThread("/LogSys1/subSysRef1/timingService", THREAD_PHYSICALTHREAD1); + + // port to peer port mappings + addPathToPeers("/LogSys1/subSysRef1/actorRef1/container/pp/room_basic_service_timing_PTimer", "/LogSys1/subSysRef1/timingService/timer"); + + // sub actors + DebuggingService.getInstance().addMessageActorCreate(this, "actorRef1"); + new PingPongTop(this, "actorRef1"); + DebuggingService.getInstance().addMessageActorCreate(this, "timingService"); + new ATimingService(this, "timingService"); + + // wire optional actor interfaces with services + { + OptionalActorInterfaceBase oai = (OptionalActorInterfaceBase) getObject("/LogSys1/subSysRef1/actorRef1/container/pp"); + new InterfaceItemBroker(oai, "room_basic_service_timing_PTimer", 0); + } + + // apply instance attribute configurations + } + + @Override + public void init(){ + DebuggingService.getInstance().addVisibleComment("begin sub system initialization"); + super.init(); + DebuggingService.getInstance().addVisibleComment("done sub system initialization"); + } + + @Override + public void stop(){ + super.stop(); + } + + @Override + public void destroy() { + DebuggingService.getInstance().addVisibleComment("begin sub system destruction"); + super.destroy(); + DebuggingService.getInstance().addVisibleComment("done sub system destruction"); + } + + public IOptionalActorFactory getFactory(String optionalActorClass, String actorClass) { + if (optionalActorClass.equals("PingPong")) { + if ("PingPong".equals(actorClass)) { + return new PingPongFactory(); + } + } + + return null; + } +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java new file mode 100644 index 000000000..0e69efc03 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java @@ -0,0 +1,26 @@ +/** + * @author generated by eTrice + * + * this class contains the main function running component subSysRef1 + * it instantiates subSysRef1 and starts and ends the lifecycle + */ + +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.modelbase.RTSystem; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase; + +class Node_nodeRef1_subSysRef1Runner extends SubSystemRunnerBase { + + /** + * main function + * creates the main component and starts and stops the lifecycle + */ + public static void main(String[] args) { + // instantiate the main component + RTSystem sys = new RTSystem("LogSys1"); + Node_nodeRef1_subSysRef1 main_component = new Node_nodeRef1_subSysRef1(sys, "subSysRef1"); + + run(main_component, args); + } +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java new file mode 100644 index 000000000..247e2d505 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java @@ -0,0 +1,79 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Address; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + +import room.basic.service.timing.*; + +import room.basic.service.timing.PTimer.*; +import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*; + + + + +public class PingPong extends ActorClassBase { + + + //--------------------- ports + + //--------------------- saps + + //--------------------- services + + //--------------------- optional actors + + //--------------------- interface item IDs + + /*--------------------- attributes ---------------------*/ + /*--------------------- operations ---------------------*/ + + //--------------------- construction + public PingPong(IRTObject parent, String name) { + super(parent, name); + setClassName("PingPong"); + + // initialize attributes + + // own ports + + // own saps + + // own service implementations + + // sub actors + DebuggingService.getInstance().addMessageActorCreate(this, "receiver"); + new Receiver(this, "receiver"); + DebuggingService.getInstance().addMessageActorCreate(this, "sender"); + new Sender(this, "sender"); + + } + + /* --------------------- attribute setters and getters */ + + + //--------------------- port getters + + //--------------------- lifecycle functions + public void stop(){ + stopUser(); + super.stop(); + } + + public void destroy() { + DebuggingService.getInstance().addMessageActorDestroy(this); + super.destroy(); + } + + //--------------------- no state machine + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) { + handleSystemEvent(ifitem, evt, data); + } + + public void executeInitTransition() {} +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java new file mode 100644 index 000000000..d44c783e2 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java @@ -0,0 +1,26 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.examples.dynamicactors9.PingPong; +import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase; +import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory; +import org.eclipse.etrice.runtime.java.modelbase.PathToPeers; + +public class PingPongFactory implements IOptionalActorFactory { + + private PathToPeers path2peers = new PathToPeers(); + + public PingPong create(OptionalActorInterfaceBase ai, String name) { + // set port mappings of this sub tree + path2peers.put("/receiver/sender", "/sender/receiver"); + path2peers.put("/receiver/timing", "/room_basic_service_timing_PTimer"); + path2peers.put("/sender/receiver", "/receiver/sender"); + ai.setPath2peers(path2peers); + + // instantiate sub tree + PingPong actor = new PingPong(ai, name); + + ai.setPath2peers(null); + + return actor; + } +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java new file mode 100644 index 000000000..ef72f94af --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java @@ -0,0 +1,28 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import org.eclipse.etrice.runtime.java.modelbase.IEventReceiver; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker; +import org.eclipse.etrice.runtime.java.modelbase.ScalarOptionalActorInterfaceBase; + +class PingPongInterface extends ScalarOptionalActorInterfaceBase { + //--------------------- brokers for ports on the interface + + //--------------------- interface item IDs + + //--------------------- construction + public PingPongInterface (IEventReceiver parent, String name) { + super(parent, name, "PingPong"); + + } + + @Override + protected void logCreation(String actorClass, String name) { + DebuggingService.getInstance().addMessageActorCreate(this, actorClass, name); + } + + @Override + protected void logDeletion(String name) { + DebuggingService.getInstance().addMessageActorDestroy(this, name); + } +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java new file mode 100644 index 000000000..3a7a78e88 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java @@ -0,0 +1,185 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Message; +import org.eclipse.etrice.runtime.java.modelbase.EventMessage; +import org.eclipse.etrice.runtime.java.modelbase.EventWithDataMessage; +import org.eclipse.etrice.runtime.java.modelbase.IInterfaceItemOwner; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.modelbase.PortBase; +import org.eclipse.etrice.runtime.java.modelbase.ReplicatedPortBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + + + +public class PingPongProtocol { + // message IDs + public static final int MSG_MIN = 0; + public static final int OUT_pong = 1; + public static final int IN_ping = 2; + public static final int MSG_MAX = 3; + + + private static String messageStrings[] = {"MIN", "pong", "ping","MAX"}; + + public String getMessageString(int msg_id) { + if (msg_id<MSG_MIN || msg_id>MSG_MAX+1){ + // id out of range + return "Message ID out of range"; + } + else{ + return messageStrings[msg_id]; + } + } + + + // port class + static public class PingPongProtocolPort extends PortBase { + // constructors + public PingPongProtocolPort(IInterfaceItemOwner actor, String name, int localId) { + this(actor, name, localId, 0); + } + public PingPongProtocolPort(IInterfaceItemOwner actor, String name, int localId, int idx) { + super(actor, name, localId, idx); + DebuggingService.getInstance().addPortInstance(this); + } + + public void destroy() { + DebuggingService.getInstance().removePortInstance(this); + super.destroy(); + } + + @Override + public void receive(Message m) { + if (!(m instanceof EventMessage)) + return; + EventMessage msg = (EventMessage) m; + if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) { + if (messageStrings[msg.getEvtId()] != "timerTick"){ + DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]); + } + if (msg instanceof EventWithDataMessage) + getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData()); + else + getActor().receiveEvent(this, msg.getEvtId(), null); + } + } + + + // sent messages + public void pong() { + if (messageStrings[ OUT_pong] != "timerTick") { + DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_pong]); + } + if (getPeerAddress()!=null) + getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), OUT_pong)); + } + } + + // replicated port class + static public class PingPongProtocolReplPort extends ReplicatedPortBase { + + public PingPongProtocolReplPort(IInterfaceItemOwner actor, String name, int localId) { + super(actor, name, localId); + } + + public int getReplication() { + return getNInterfaceItems(); + } + + public int getIndexOf(InterfaceItemBase ifitem){ + return ifitem.getIdx(); + } + + public PingPongProtocolPort get(int idx) { + return (PingPongProtocolPort) getInterfaceItem(idx); + } + + protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) { + return new PingPongProtocolPort(rcv, name, lid, idx); + } + + // outgoing messages + public void pong(){ + for (InterfaceItemBase item : getItems()) { + ((PingPongProtocolPort)item).pong(); + } + } + } + + + // port class + static public class PingPongProtocolConjPort extends PortBase { + // constructors + public PingPongProtocolConjPort(IInterfaceItemOwner actor, String name, int localId) { + this(actor, name, localId, 0); + } + public PingPongProtocolConjPort(IInterfaceItemOwner actor, String name, int localId, int idx) { + super(actor, name, localId, idx); + DebuggingService.getInstance().addPortInstance(this); + } + + public void destroy() { + DebuggingService.getInstance().removePortInstance(this); + super.destroy(); + } + + @Override + public void receive(Message m) { + if (!(m instanceof EventMessage)) + return; + EventMessage msg = (EventMessage) m; + if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) { + if (messageStrings[msg.getEvtId()] != "timerTick"){ + DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]); + } + if (msg instanceof EventWithDataMessage) + getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData()); + else + getActor().receiveEvent(this, msg.getEvtId(), null); + } + } + + + // sent messages + public void ping() { + if (messageStrings[ IN_ping] != "timerTick") { + DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_ping]); + } + if (getPeerAddress()!=null) + getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), IN_ping)); + } + } + + // replicated port class + static public class PingPongProtocolConjReplPort extends ReplicatedPortBase { + + public PingPongProtocolConjReplPort(IInterfaceItemOwner actor, String name, int localId) { + super(actor, name, localId); + } + + public int getReplication() { + return getNInterfaceItems(); + } + + public int getIndexOf(InterfaceItemBase ifitem){ + return ifitem.getIdx(); + } + + public PingPongProtocolConjPort get(int idx) { + return (PingPongProtocolConjPort) getInterfaceItem(idx); + } + + protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) { + return new PingPongProtocolConjPort(rcv, name, lid, idx); + } + + // incoming messages + public void ping(){ + for (InterfaceItemBase item : getItems()) { + ((PingPongProtocolConjPort)item).ping(); + } + } + } + +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java new file mode 100644 index 000000000..5c687bff4 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java @@ -0,0 +1,28 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import org.eclipse.etrice.runtime.java.modelbase.IEventReceiver; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker; +import org.eclipse.etrice.runtime.java.modelbase.ReplicatedOptionalActorInterfaceBase; + +class PingPongReplicatedInterface extends ReplicatedOptionalActorInterfaceBase { + //--------------------- brokers for ports on the interface + + //--------------------- interface item IDs + + //--------------------- construction + public PingPongReplicatedInterface (IEventReceiver parent, String name) { + super(parent, name, "PingPong"); + + } + + @Override + protected void logCreation(String actorClass, String name) { + DebuggingService.getInstance().addMessageActorCreate(this, actorClass, name); + } + + @Override + protected void logDeletion(String name) { + DebuggingService.getInstance().addMessageActorDestroy(this, name); + } +} diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java new file mode 100644 index 000000000..2cd41a340 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java @@ -0,0 +1,77 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Address; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + +import room.basic.service.timing.*; + +import room.basic.service.timing.PTimer.*; +import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*; + + + + +public class PingPongTop extends ActorClassBase { + + + //--------------------- ports + + //--------------------- saps + + //--------------------- services + + //--------------------- optional actors + + //--------------------- interface item IDs + + /*--------------------- attributes ---------------------*/ + /*--------------------- operations ---------------------*/ + + //--------------------- construction + public PingPongTop(IRTObject parent, String name) { + super(parent, name); + setClassName("PingPongTop"); + + // initialize attributes + + // own ports + + // own saps + + // own service implementations + + // sub actors + DebuggingService.getInstance().addMessageActorCreate(this, "container"); + new Container(this, "container"); + + } + + /* --------------------- attribute setters and getters */ + + + //--------------------- port getters + + //--------------------- lifecycle functions + public void stop(){ + stopUser(); + super.stop(); + } + + public void destroy() { + DebuggingService.getInstance().addMessageActorDestroy(this); + super.destroy(); + } + + //--------------------- no state machine + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) { + handleSystemEvent(ifitem, evt, data); + } + + public void executeInitTransition() {} +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java new file mode 100644 index 000000000..b22d421ec --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java @@ -0,0 +1,275 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Address; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + +import room.basic.service.timing.*; + +import room.basic.service.timing.PTimer.*; +import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*; + + + + +public class Receiver extends ActorClassBase { + + + //--------------------- ports + protected PingPongProtocolPort sender = null; + + //--------------------- saps + protected PTimerConjPort timing = null; + + //--------------------- services + + //--------------------- optional actors + + //--------------------- interface item IDs + public static final int IFITEM_sender = 1; + public static final int IFITEM_timing = 2; + + /*--------------------- attributes ---------------------*/ + /*--------------------- operations ---------------------*/ + + //--------------------- construction + public Receiver(IRTObject parent, String name) { + super(parent, name); + setClassName("Receiver"); + + // initialize attributes + + // own ports + sender = new PingPongProtocolPort(this, "sender", IFITEM_sender); + + // own saps + timing = new PTimerConjPort(this, "timing", IFITEM_timing, 0); + + // own service implementations + + // sub actors + + } + + /* --------------------- attribute setters and getters */ + + + //--------------------- port getters + public PingPongProtocolPort getSender (){ + return this.sender; + } + public PTimerConjPort getTiming (){ + return this.timing; + } + + //--------------------- lifecycle functions + public void stop(){ + stopUser(); + super.stop(); + } + + public void destroy() { + DebuggingService.getInstance().addMessageActorDestroy(this); + super.destroy(); + } + + /* state IDs */ + public static final int STATE_WaitingForPing = 2; + public static final int STATE_WaitingForAWhile = 3; + public static final int STATE_SentPong = 4; + public static final int STATE_MAX = 5; + + /* transition chains */ + public static final int CHAIN_TRANS_INITIAL_TO__WaitingForPing = 1; + public static final int CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender = 2; + public static final int CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming = 3; + + /* triggers */ + public static final int POLLING = 0; + public static final int TRIG_sender__ping = IFITEM_sender + EVT_SHIFT*PingPongProtocol.IN_ping; + public static final int TRIG_timing__timeout = IFITEM_timing + EVT_SHIFT*PTimer.OUT_timeout; + public static final int TRIG_timing__internalTimer = IFITEM_timing + EVT_SHIFT*PTimer.OUT_internalTimer; + public static final int TRIG_timing__internalTimeout = IFITEM_timing + EVT_SHIFT*PTimer.OUT_internalTimeout; + + // state names + protected static final String stateStrings[] = { + "<no state>", + "<top>", + "WaitingForPing", + "WaitingForAWhile", + "SentPong" + }; + + // history + protected int history[] = {NO_STATE, NO_STATE, NO_STATE, NO_STATE, NO_STATE}; + + private void setState(int new_state) { + DebuggingService.getInstance().addActorState(this,stateStrings[new_state]); + this.state = new_state; + } + + /* Entry and Exit Codes */ + protected void entry_WaitingForAWhile() { + timing.startTimeout(1000); + } + protected void entry_SentPong() { + sender.pong(); + } + + /* Action Codes */ + + /** + * 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 + */ + private void exitTo(int current, int to) { + while (current!=to) { + switch (current) { + case STATE_WaitingForPing: + this.history[STATE_TOP] = STATE_WaitingForPing; + current = STATE_TOP; + break; + case STATE_WaitingForAWhile: + this.history[STATE_TOP] = STATE_WaitingForAWhile; + current = STATE_TOP; + break; + case STATE_SentPong: + this.history[STATE_TOP] = STATE_SentPong; + current = STATE_TOP; + break; + default: + /* should not occur */ + 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 either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa + */ + private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) { + switch (chain) { + case CHAIN_TRANS_INITIAL_TO__WaitingForPing: + { + return STATE_WaitingForPing; + } + case CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender: + { + return STATE_WaitingForAWhile; + } + case CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming: + { + return STATE_SentPong; + } + default: + /* should not occur */ + break; + } + 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 + * @return - the ID of the final leaf state + */ + private int enterHistory(int state) { + boolean skip_entry = false; + if (state >= STATE_MAX) { + state = (state - STATE_MAX); + skip_entry = true; + } + while (true) { + switch (state) { + case STATE_WaitingForPing: + /* in leaf state: return state id */ + return STATE_WaitingForPing; + case STATE_WaitingForAWhile: + if (!(skip_entry)) entry_WaitingForAWhile(); + /* in leaf state: return state id */ + return STATE_WaitingForAWhile; + case STATE_SentPong: + if (!(skip_entry)) entry_SentPong(); + /* in leaf state: return state id */ + return STATE_SentPong; + case STATE_TOP: + state = this.history[STATE_TOP]; + break; + default: + /* should not occur */ + break; + } + skip_entry = false; + } + /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */ + } + + public void executeInitTransition() { + int chain = CHAIN_TRANS_INITIAL_TO__WaitingForPing; + int next = executeTransitionChain(chain, null, null); + next = enterHistory(next); + setState(next); + } + + /* receiveEvent contains the main implementation of the FSM */ + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) { + int trigger = ifitem.getLocalId() + EVT_SHIFT*evt; + int chain = NOT_CAUGHT; + int catching_state = NO_STATE; + + if (!handleSystemEvent(ifitem, evt, generic_data)) { + switch (getState()) { + case STATE_WaitingForPing: + switch(trigger) { + case TRIG_sender__ping: + { + chain = CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender; + catching_state = STATE_TOP; + } + break; + default: + /* should not occur */ + break; + } + break; + case STATE_WaitingForAWhile: + switch(trigger) { + case TRIG_timing__timeout: + { + chain = CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming; + catching_state = STATE_TOP; + } + break; + default: + /* should not occur */ + break; + } + break; + case STATE_SentPong: + break; + default: + /* should not occur */ + break; + } + } + if (chain != NOT_CAUGHT) { + exitTo(getState(), catching_state); + { + int next = executeTransitionChain(chain, ifitem, generic_data); + next = enterHistory(next); + setState(next); + } + } + } +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java new file mode 100644 index 000000000..9fbd710a6 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java @@ -0,0 +1,238 @@ +package org.eclipse.etrice.examples.dynamicactors9; + +import org.eclipse.etrice.runtime.java.messaging.Address; +import org.eclipse.etrice.runtime.java.messaging.IRTObject; +import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver; +import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase; +import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase; +import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase; +import org.eclipse.etrice.runtime.java.debugging.DebuggingService; +import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*; + + +import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*; + + + + +public class Sender extends ActorClassBase { + + + //--------------------- ports + protected PingPongProtocolConjPort receiver = null; + + //--------------------- saps + + //--------------------- services + + //--------------------- optional actors + + //--------------------- interface item IDs + public static final int IFITEM_receiver = 1; + + /*--------------------- attributes ---------------------*/ + /*--------------------- operations ---------------------*/ + + //--------------------- construction + public Sender(IRTObject parent, String name) { + super(parent, name); + setClassName("Sender"); + + // initialize attributes + + // own ports + receiver = new PingPongProtocolConjPort(this, "receiver", IFITEM_receiver); + + // own saps + + // own service implementations + + // sub actors + + } + + /* --------------------- attribute setters and getters */ + + + //--------------------- port getters + public PingPongProtocolConjPort getReceiver (){ + return this.receiver; + } + + //--------------------- lifecycle functions + public void stop(){ + stopUser(); + super.stop(); + } + + public void destroy() { + DebuggingService.getInstance().addMessageActorDestroy(this); + super.destroy(); + } + + /* state IDs */ + public static final int STATE_SendingPing = 2; + public static final int STATE_ReceivedPong = 3; + public static final int STATE_MAX = 4; + + /* transition chains */ + public static final int CHAIN_TRANS_INITIAL_TO__SendingPing = 1; + public static final int CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver = 2; + + /* triggers */ + public static final int POLLING = 0; + public static final int TRIG_receiver__pong = IFITEM_receiver + EVT_SHIFT*PingPongProtocol.OUT_pong; + + // state names + protected static final String stateStrings[] = { + "<no state>", + "<top>", + "SendingPing", + "ReceivedPong" + }; + + // history + protected int history[] = {NO_STATE, NO_STATE, NO_STATE, NO_STATE}; + + private void setState(int new_state) { + DebuggingService.getInstance().addActorState(this,stateStrings[new_state]); + this.state = new_state; + } + + /* Entry and Exit Codes */ + protected void entry_SendingPing() { + receiver.ping(); + } + protected void entry_ReceivedPong() { + System.out.println(((org.eclipse.etrice.runtime.java.messaging.RTObject)getRoot()).toStringRecursive()); + System.out.println("Done, enter 'quit' to exit"); + } + + /* Action Codes */ + + /** + * 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 + */ + private void exitTo(int current, int to) { + while (current!=to) { + switch (current) { + case STATE_SendingPing: + this.history[STATE_TOP] = STATE_SendingPing; + current = STATE_TOP; + break; + case STATE_ReceivedPong: + this.history[STATE_TOP] = STATE_ReceivedPong; + current = STATE_TOP; + break; + default: + /* should not occur */ + 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 either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa + */ + private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) { + switch (chain) { + case CHAIN_TRANS_INITIAL_TO__SendingPing: + { + return STATE_SendingPing; + } + case CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver: + { + return STATE_ReceivedPong; + } + default: + /* should not occur */ + break; + } + 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 + * @return - the ID of the final leaf state + */ + private int enterHistory(int state) { + boolean skip_entry = false; + if (state >= STATE_MAX) { + state = (state - STATE_MAX); + skip_entry = true; + } + while (true) { + switch (state) { + case STATE_SendingPing: + if (!(skip_entry)) entry_SendingPing(); + /* in leaf state: return state id */ + return STATE_SendingPing; + case STATE_ReceivedPong: + if (!(skip_entry)) entry_ReceivedPong(); + /* in leaf state: return state id */ + return STATE_ReceivedPong; + case STATE_TOP: + state = this.history[STATE_TOP]; + break; + default: + /* should not occur */ + break; + } + skip_entry = false; + } + /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */ + } + + public void executeInitTransition() { + int chain = CHAIN_TRANS_INITIAL_TO__SendingPing; + int next = executeTransitionChain(chain, null, null); + next = enterHistory(next); + setState(next); + } + + /* receiveEvent contains the main implementation of the FSM */ + public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) { + int trigger = ifitem.getLocalId() + EVT_SHIFT*evt; + int chain = NOT_CAUGHT; + int catching_state = NO_STATE; + + if (!handleSystemEvent(ifitem, evt, generic_data)) { + switch (getState()) { + case STATE_SendingPing: + switch(trigger) { + case TRIG_receiver__pong: + { + chain = CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver; + catching_state = STATE_TOP; + } + break; + default: + /* should not occur */ + break; + } + break; + case STATE_ReceivedPong: + break; + default: + /* should not occur */ + break; + } + } + if (chain != NOT_CAUGHT) { + exitTo(getState(), catching_state); + { + int next = executeTransitionChain(chain, ifitem, generic_data); + next = enterHistory(next); + setState(next); + } + } + } +}; diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt new file mode 100644 index 000000000..1dc2b35ab --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt @@ -0,0 +1,4 @@ +This directory is an eTrice code generation target. +It will be erased every time the generator is executed. + +DO NOT PLACE OTHER FILES HERE! diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq new file mode 100644 index 000000000..fb2005568 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq @@ -0,0 +1,31 @@ +; generated MSC for Trace2UML +# begin sub system initialization + /LogSys1/subSysRef1 (!) /LogSys1/subSysRef1/actorRef1 + /LogSys1/subSysRef1/actorRef1 (!) /LogSys1/subSysRef1/actorRef1/container + /LogSys1/subSysRef1 (!) /LogSys1/subSysRef1/timingService +# done sub system initialization + /LogSys1/subSysRef1/actorRef1/container note: dynamically creating actor class PingPong + /LogSys1/subSysRef1/actorRef1/container (!) /LogSys1/subSysRef1/actorRef1/container/pp + /LogSys1/subSysRef1/actorRef1/container/pp (!) /LogSys1/subSysRef1/actorRef1/container/pp/receiver + /LogSys1/subSysRef1/actorRef1/container/pp (!) /LogSys1/subSysRef1/actorRef1/container/pp/sender + /LogSys1/subSysRef1/actorRef1/container >>> Running + /LogSys1/subSysRef1/timingService >>> Operational + /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> WaitingForPing + /LogSys1/subSysRef1/actorRef1/container/pp/sender >-- /LogSys1/subSysRef1/actorRef1/container/pp/receiver ping + /LogSys1/subSysRef1/actorRef1/container/pp/sender >>> SendingPing + /LogSys1/subSysRef1/actorRef1/container/pp/sender --> /LogSys1/subSysRef1/actorRef1/container/pp/receiver ping + /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> WaitingForAWhile + /LogSys1/subSysRef1/actorRef1/container/pp/receiver --> /LogSys1/subSysRef1/timingService internalStartTimeout + /LogSys1/subSysRef1/timingService >>> Operational + /LogSys1/subSysRef1/timingService >-- /LogSys1/subSysRef1/actorRef1/container/pp/receiver internalTimeout + /LogSys1/subSysRef1/timingService --> /LogSys1/subSysRef1/actorRef1/container/pp/receiver internalTimeout + /LogSys1/subSysRef1/actorRef1/container/pp/receiver >-- /LogSys1/subSysRef1/actorRef1/container/pp/sender pong + /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> SentPong + /LogSys1/subSysRef1/actorRef1/container/pp/receiver --> /LogSys1/subSysRef1/actorRef1/container/pp/sender pong + /LogSys1/subSysRef1/actorRef1/container/pp/sender >>> ReceivedPong +# begin sub system destruction + /LogSys1/subSysRef1 (X) /LogSys1/subSysRef1/actorRef1 + /LogSys1/subSysRef1/actorRef1 (X) /LogSys1/subSysRef1/actorRef1/container + /LogSys1/subSysRef1/actorRef1/container/pp (X) /LogSys1/subSysRef1/actorRef1/container/pp/receiver + /LogSys1/subSysRef1/actorRef1/container/pp (X) /LogSys1/subSysRef1/actorRef1/container/pp/sender + /LogSys1/subSysRef1 (X) /LogSys1/subSysRef1/timingService diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq new file mode 100644 index 000000000..6b954ac91 --- /dev/null +++ b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq @@ -0,0 +1 @@ +; generated MSC for Trace2UML |