ipc/ipdl/test/cxx/PTestRaceDeferral.ipdl

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 namespace mozilla {
     2 namespace _ipdltest {
     4 intr protocol PTestRaceDeferral {
     5 parent:
     6     intr Lose();
     8 child:
     9     async StartRace();
    10     intr Win();
    11     intr Rpc();
    12     async __delete__();
    14 // Test that messages deferred due to race resolution are
    15 // re-considered when the winner makes later RPCs
    17 // IPDL's type system can't express this protocol because the race
    18 // resolution causes state to diverge for multiple steps, so we'll
    19 // leave it "stateless"
    20 /*
    21 state START:
    22     send StartRace goto DEFER;
    23 state DEFER:
    24     call Win goto PARENT;
    25     answer Lose goto CHILD;
    27 state PARENT:
    28     // 'Lose' is received here but deferred
    29     call Rpc goto PARENT_LOSE;
    30 state PARENT_LOSE:
    31     // Calling 'Rpc' undefers 'Lose', and it wins the "race" with 'Rpc'
    32     answer Lose goto DONE;
    34 state CHILD:
    35     call Win goto CHILD_RPC;
    36 state CHILD_RPC:
    37     call Rpc goto DONE;
    39 state DONE:
    40     send __delete__;
    41 */
    42 };
    44 } // namespace _ipdltest
    45 } // namespace mozilla

mercurial