RoomModel PingPong_Model { | |
LogicalSystem LogSys1 { | |
SubSystemRef subSysRef1:SubSysClass1 | |
} | |
SubSystemClass SubSysClass1 { | |
ActorRef actorRef1:PingPongTop | |
LogicalThread defaultThread | |
} | |
ActorClass PingPongTop { | |
Structure { | |
ActorRef sender: Sender | |
ActorRef receiver: Receiver | |
Binding receiver.sender and sender.receiver | |
} | |
Behavior { } | |
} | |
ActorClass Sender { | |
Interface { | |
conjugated Port receiver: PPingPong | |
} | |
Structure { | |
external Port receiver | |
} | |
Behavior { | |
StateMachine { | |
Transition init: initial -> SendingPing { } | |
Transition tr0: SendingPing -> ReceivedPong { | |
triggers { | |
<pong: receiver> | |
} | |
} | |
State SendingPing { | |
entry { | |
"receiver.ping();" | |
} | |
} | |
State ReceivedPong | |
} | |
} | |
} | |
ActorClass Receiver { | |
Interface { | |
Port sender: PPingPong | |
} | |
Structure { | |
external Port sender | |
} | |
Behavior { | |
StateMachine { | |
Transition init: initial -> WaingForPing { } | |
Transition tr0: WaingForPing -> ReceivedPing { | |
triggers { | |
<ping: sender> | |
} | |
} | |
State WaingForPing | |
State ReceivedPing { | |
entry { | |
"sender.pong();" | |
} | |
} | |
} | |
} | |
} | |
ProtocolClass PPingPong { | |
incoming { | |
Message ping() | |
} | |
outgoing { | |
Message pong() | |
} | |
} | |
} |