mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-31 09:32:03 +02:00
59 lines
3.4 KiB
Plaintext
59 lines
3.4 KiB
Plaintext
=========================================================================
|
|
State machine transitions for the Crash Generation Server
|
|
=========================================================================
|
|
|
|
=========================================================================
|
|
|
|
|
STATE | ACTIONS
|
|
|
|
|
=========================================================================
|
|
ERROR | Clean up resources used to serve clients.
|
|
| Always remain in ERROR state.
|
|
-------------------------------------------------------------------------
|
|
INITIAL | Connect to the pipe asynchronously.
|
|
| If connection is successfully queued up asynchronously,
|
|
| go into CONNECTING state.
|
|
| If connection is done synchronously, go into CONNECTED
|
|
| state.
|
|
| For any unexpected problems, go into ERROR state.
|
|
-------------------------------------------------------------------------
|
|
CONNECTING | Get the result of async connection request.
|
|
| If I/O is still incomplete, remain in the CONNECTING
|
|
| state.
|
|
| If connection is complete, go into CONNECTED state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
CONNECTED | Read from the pipe asynchronously.
|
|
| If read request is successfully queued up asynchronously,
|
|
| go into READING state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
READING | Get the result of async read request.
|
|
| If read is done, go into READ_DONE state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
READ_DONE | Register the client, prepare the reply and write the
|
|
| reply to the pipe asynchronously.
|
|
| If write request is successfully queued up asynchronously,
|
|
| go into WRITING state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
WRITING | Get the result of the async write request.
|
|
| If write is done, go into WRITE_DONE state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
WRITE_DONE | Read from the pipe asynchronously (for an ACK).
|
|
| If read request is successfully queued up asynchonously,
|
|
| go into READING_ACK state.
|
|
| For any unexpected problems, go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
READING_ACK | Get the result of the async read request.
|
|
| If read is done, perform action for successful client
|
|
| connection.
|
|
| Go into DISCONNECTING state.
|
|
-------------------------------------------------------------------------
|
|
DISCONNECTING | Disconnect from the pipe, reset the event and go into
|
|
| INITIAL state and signal the event again. If anything
|
|
| fails, go into ERROR state.
|
|
=========================================================================
|