gecko/ipc/ipdl/test/cxx/PTestLatency.ipdl

66 lines
1.2 KiB
Plaintext

namespace mozilla {
namespace _ipdltest {
rpc protocol PTestLatency {
child:
__delete__();
Ping();
Ping5();
rpc Rpc();
Spam();
rpc Synchro();
parent:
Pong();
Pong5();
state START:
// if the timing resolution is too low, abort the test
send __delete__;
// otherwise, kick off the ping/pong trials
send Ping goto PONG;
// Trial 1: single ping/pong latency
state PING:
send Ping goto PONG;
send Ping5 goto PING4;
state PONG:
recv Pong goto PING;
// Trial 2: "overlapped" ping/pong latency
state PING5:
send Ping5 goto PING4;
call Rpc goto RPC;
state PING4: send Ping5 goto PING3;
state PING3: send Ping5 goto PING2;
state PING2: send Ping5 goto PING1;
state PING1: send Ping5 goto PONG1;
state PONG1: recv Pong5 goto PONG2;
state PONG2: recv Pong5 goto PONG3;
state PONG3: recv Pong5 goto PONG4;
state PONG4: recv Pong5 goto PONG5;
state PONG5: recv Pong5 goto PING5;
// Trial 3: lotsa RPC
state RPC:
call Rpc goto RPC;
send Spam goto SPAM;
state SPAM:
send Spam goto SPAM;
call Synchro goto DONE;
state DONE:
send __delete__;
};
} // namespace mozilla
} // namespace _ipdltest