mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-27 02:47:31 +09:00
45 lines
952 B
Text
45 lines
952 B
Text
namespace mozilla {
|
|
namespace _ipdltest {
|
|
|
|
intr protocol PTestRaceDeferral {
|
|
parent:
|
|
intr Lose();
|
|
|
|
child:
|
|
async StartRace();
|
|
intr Win();
|
|
intr Rpc();
|
|
async __delete__();
|
|
|
|
// Test that messages deferred due to race resolution are
|
|
// re-considered when the winner makes later RPCs
|
|
|
|
// IPDL's type system can't express this protocol because the race
|
|
// resolution causes state to diverge for multiple steps, so we'll
|
|
// leave it "stateless"
|
|
/*
|
|
state START:
|
|
send StartRace goto DEFER;
|
|
state DEFER:
|
|
call Win goto PARENT;
|
|
answer Lose goto CHILD;
|
|
|
|
state PARENT:
|
|
// 'Lose' is received here but deferred
|
|
call Rpc goto PARENT_LOSE;
|
|
state PARENT_LOSE:
|
|
// Calling 'Rpc' undefers 'Lose', and it wins the "race" with 'Rpc'
|
|
answer Lose goto DONE;
|
|
|
|
state CHILD:
|
|
call Win goto CHILD_RPC;
|
|
state CHILD_RPC:
|
|
call Rpc goto DONE;
|
|
|
|
state DONE:
|
|
send __delete__;
|
|
*/
|
|
};
|
|
|
|
} // namespace _ipdltest
|
|
} // namespace mozilla
|