ReadMe.txt
1=========================================================================
2 State machine transitions for the Crash Generation Server
3=========================================================================
4
5=========================================================================
6 |
7 STATE | ACTIONS
8 |
9=========================================================================
10 ERROR | Clean up resources used to serve clients.
11 | Always remain in ERROR state.
12-------------------------------------------------------------------------
13 INITIAL | Connect to the pipe asynchronously.
14 | If connection is successfully queued up asynchronously,
15 | go into CONNECTING state.
16 | If connection is done synchronously, go into CONNECTED
17 | state.
18 | For any unexpected problems, go into ERROR state.
19-------------------------------------------------------------------------
20 CONNECTING | Get the result of async connection request.
21 | If I/O is still incomplete, remain in the CONNECTING
22 | state.
23 | If connection is complete, go into CONNECTED state.
24 | For any unexpected problems, go into DISCONNECTING state.
25-------------------------------------------------------------------------
26 CONNECTED | Read from the pipe asynchronously.
27 | If read request is successfully queued up asynchronously,
28 | go into READING state.
29 | For any unexpected problems, go into DISCONNECTING state.
30-------------------------------------------------------------------------
31 READING | Get the result of async read request.
32 | If read is done, go into READ_DONE state.
33 | For any unexpected problems, go into DISCONNECTING state.
34-------------------------------------------------------------------------
35 READ_DONE | Register the client, prepare the reply and write the
36 | reply to the pipe asynchronously.
37 | If write request is successfully queued up asynchronously,
38 | go into WRITING state.
39 | For any unexpected problems, go into DISCONNECTING state.
40-------------------------------------------------------------------------
41 WRITING | Get the result of the async write request.
42 | If write is done, go into WRITE_DONE state.
43 | For any unexpected problems, go into DISCONNECTING state.
44-------------------------------------------------------------------------
45 WRITE_DONE | Read from the pipe asynchronously (for an ACK).
46 | If read request is successfully queued up asynchonously,
47 | go into READING_ACK state.
48 | For any unexpected problems, go into DISCONNECTING state.
49-------------------------------------------------------------------------
50 READING_ACK | Get the result of the async read request.
51 | If read is done, perform action for successful client
52 | connection.
53 | Go into DISCONNECTING state.
54-------------------------------------------------------------------------
55 DISCONNECTING | Disconnect from the pipe, reset the event and go into
56 | INITIAL state and signal the event again. If anything
57 | fails, go into ERROR state.
58=========================================================================
59