1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/ReadMe.txt Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,58 @@ 1.4 +========================================================================= 1.5 + State machine transitions for the Crash Generation Server 1.6 +========================================================================= 1.7 + 1.8 +========================================================================= 1.9 + | 1.10 + STATE | ACTIONS 1.11 + | 1.12 +========================================================================= 1.13 + ERROR | Clean up resources used to serve clients. 1.14 + | Always remain in ERROR state. 1.15 +------------------------------------------------------------------------- 1.16 + INITIAL | Connect to the pipe asynchronously. 1.17 + | If connection is successfully queued up asynchronously, 1.18 + | go into CONNECTING state. 1.19 + | If connection is done synchronously, go into CONNECTED 1.20 + | state. 1.21 + | For any unexpected problems, go into ERROR state. 1.22 +------------------------------------------------------------------------- 1.23 + CONNECTING | Get the result of async connection request. 1.24 + | If I/O is still incomplete, remain in the CONNECTING 1.25 + | state. 1.26 + | If connection is complete, go into CONNECTED state. 1.27 + | For any unexpected problems, go into DISCONNECTING state. 1.28 +------------------------------------------------------------------------- 1.29 + CONNECTED | Read from the pipe asynchronously. 1.30 + | If read request is successfully queued up asynchronously, 1.31 + | go into READING state. 1.32 + | For any unexpected problems, go into DISCONNECTING state. 1.33 +------------------------------------------------------------------------- 1.34 + READING | Get the result of async read request. 1.35 + | If read is done, go into READ_DONE state. 1.36 + | For any unexpected problems, go into DISCONNECTING state. 1.37 +------------------------------------------------------------------------- 1.38 + READ_DONE | Register the client, prepare the reply and write the 1.39 + | reply to the pipe asynchronously. 1.40 + | If write request is successfully queued up asynchronously, 1.41 + | go into WRITING state. 1.42 + | For any unexpected problems, go into DISCONNECTING state. 1.43 +------------------------------------------------------------------------- 1.44 + WRITING | Get the result of the async write request. 1.45 + | If write is done, go into WRITE_DONE state. 1.46 + | For any unexpected problems, go into DISCONNECTING state. 1.47 +------------------------------------------------------------------------- 1.48 + WRITE_DONE | Read from the pipe asynchronously (for an ACK). 1.49 + | If read request is successfully queued up asynchonously, 1.50 + | go into READING_ACK state. 1.51 + | For any unexpected problems, go into DISCONNECTING state. 1.52 +------------------------------------------------------------------------- 1.53 + READING_ACK | Get the result of the async read request. 1.54 + | If read is done, perform action for successful client 1.55 + | connection. 1.56 + | Go into DISCONNECTING state. 1.57 +------------------------------------------------------------------------- 1.58 + DISCONNECTING | Disconnect from the pipe, reset the event and go into 1.59 + | INITIAL state and signal the event again. If anything 1.60 + | fails, go into ERROR state. 1.61 +=========================================================================