mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
c8133fee65
--HG-- rename : ipc/ipdl/test/cxx/PTestRPCErrorCleanup.ipdl => ipc/ipdl/test/cxx/PTestInterruptErrorCleanup.ipdl rename : ipc/ipdl/test/cxx/PTestRPCRaces.ipdl => ipc/ipdl/test/cxx/PTestInterruptRaces.ipdl rename : ipc/ipdl/test/cxx/PTestRPCShutdownRace.ipdl => ipc/ipdl/test/cxx/PTestInterruptShutdownRace.ipdl rename : ipc/ipdl/test/cxx/PTestRacyRPCReplies.ipdl => ipc/ipdl/test/cxx/PTestRacyInterruptReplies.ipdl rename : ipc/ipdl/test/cxx/TestRPCErrorCleanup.cpp => ipc/ipdl/test/cxx/TestInterruptErrorCleanup.cpp rename : ipc/ipdl/test/cxx/TestRPCErrorCleanup.h => ipc/ipdl/test/cxx/TestInterruptErrorCleanup.h rename : ipc/ipdl/test/cxx/TestRPCRaces.cpp => ipc/ipdl/test/cxx/TestInterruptRaces.cpp rename : ipc/ipdl/test/cxx/TestRPCRaces.h => ipc/ipdl/test/cxx/TestInterruptRaces.h rename : ipc/ipdl/test/cxx/TestRPCShutdownRace.cpp => ipc/ipdl/test/cxx/TestInterruptShutdownRace.cpp rename : ipc/ipdl/test/cxx/TestRPCShutdownRace.h => ipc/ipdl/test/cxx/TestInterruptShutdownRace.h rename : ipc/ipdl/test/cxx/TestRacyRPCReplies.cpp => ipc/ipdl/test/cxx/TestRacyInterruptReplies.cpp rename : ipc/ipdl/test/cxx/TestRacyRPCReplies.h => ipc/ipdl/test/cxx/TestRacyInterruptReplies.h rename : ipc/ipdl/test/ipdl/error/rpcMessageCompress.ipdl => ipc/ipdl/test/ipdl/error/intrMessageCompress.ipdl rename : ipc/ipdl/test/ipdl/error/tooWeakRPCAsync.ipdl => ipc/ipdl/test/ipdl/error/tooWeakInterruptAsync.ipdl rename : ipc/ipdl/test/ipdl/ok/rpcProtocol.ipdl => ipc/ipdl/test/ipdl/ok/intrProtocol.ipdl
83 lines
1.9 KiB
Plaintext
83 lines
1.9 KiB
Plaintext
namespace mozilla {
|
|
namespace _ipdltest {
|
|
|
|
intr protocol PTestInterruptRaces {
|
|
both:
|
|
intr Race() returns (bool hasReply);
|
|
intr StackFrame() returns ();
|
|
intr StackFrame3() returns ();
|
|
|
|
parent:
|
|
sync StartRace();
|
|
intr Parent();
|
|
sync GetAnsweredParent() returns (bool answeredParent);
|
|
|
|
child:
|
|
Start();
|
|
Wakeup();
|
|
Wakeup3();
|
|
intr Child();
|
|
__delete__();
|
|
|
|
state START:
|
|
send Start goto TEST1;
|
|
|
|
// First test: race while no other messages are on the Interrupt stack
|
|
state TEST1:
|
|
recv StartRace goto RACE1;
|
|
state RACE1:
|
|
call Race goto DUMMY1_1;
|
|
answer Race goto DUMMY1_2;
|
|
state DUMMY1_1:
|
|
answer Race goto TEST2;
|
|
state DUMMY1_2:
|
|
call Race goto TEST2;
|
|
|
|
// Second test: race while other messages are on the Interrupt stack
|
|
state TEST2:
|
|
call StackFrame goto MORESTACK;
|
|
state MORESTACK:
|
|
answer StackFrame goto STARTRACE;
|
|
state STARTRACE:
|
|
send Wakeup goto RACE2;
|
|
state RACE2:
|
|
call Race goto DUMMY2_1;
|
|
answer Race goto DUMMY2_2;
|
|
state DUMMY2_1:
|
|
answer Race goto TEST3;
|
|
state DUMMY2_2:
|
|
call Race goto TEST3;
|
|
|
|
// Third test: resolve race using custom policy
|
|
state TEST3:
|
|
call StackFrame3 goto MORESTACK3;
|
|
state MORESTACK3:
|
|
answer StackFrame3 goto STARTRACE3;
|
|
state STARTRACE3:
|
|
send Wakeup3 goto RACE3;
|
|
state RACE3:
|
|
call Child goto DUMMY3_1;
|
|
answer Parent goto DUMMY3_2;
|
|
state DUMMY3_1:
|
|
// the parent receives this from the child in this state
|
|
recv GetAnsweredParent goto CHECK;
|
|
// this transition is never taken (if the custom race resolution
|
|
// works correctly)
|
|
answer Parent goto CHECK;
|
|
state DUMMY3_2:
|
|
call Child goto CHECK;
|
|
state CHECK:
|
|
// the child sends this from this state
|
|
recv GetAnsweredParent goto DYING;
|
|
// because of deferred processing, the parent receives the child's
|
|
// message here
|
|
answer Parent goto DYING;
|
|
|
|
|
|
state DYING:
|
|
send __delete__;
|
|
};
|
|
|
|
} // namespace _ipdltest
|
|
} // namespace mozilla
|