connection-state-machine.plantuml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. @startuml
  2. [*] --> IDLE
  3. ESTABLISHING : PROBE_TIMEOUT: SendProbeIfAnySentPktsUnacked() [default]
  4. state ACTIVE {
  5. state ESTABLISHING {
  6. PROACTIVE_VER_NEG :
  7. PRE_INITIAL :
  8. INITIAL_EXCHANGE_A :
  9. REACTIVE_VER_NEG :
  10. INITIAL_EXCHANGE_B :
  11. INITIAL_EXCHANGE_CONTINUED :
  12. HANDSHAKE :
  13. HANDSHAKE_CONTINUED :
  14. HANDSHAKE_COMPLETED :
  15. HANDSHAKE_CONFIRMED :
  16. [*] --> PROACTIVE_VER_NEG : use proactive VN?
  17. [*] --> PRE_INITIAL : else
  18. PROACTIVE_VER_NEG --> PRE_INITIAL : RX:VER_NEG
  19. PROACTIVE_VER_NEG --> PROACTIVE_VER_NEG : PROBE_TIMEOUT
  20. PRE_INITIAL --> INITIAL_EXCHANGE_A : ε
  21. INITIAL_EXCHANGE_A --> INITIAL_EXCHANGE_B : RX:RETRY
  22. INITIAL_EXCHANGE_A --> INITIAL_EXCHANGE_CONTINUED : RX:INITIAL
  23. INITIAL_EXCHANGE_A --> REACTIVE_VER_NEG : RX:VER_NEG
  24. REACTIVE_VER_NEG --> PRE_INITIAL : ε
  25. INITIAL_EXCHANGE_B --> INITIAL_EXCHANGE_CONTINUED : RX:INITIAL
  26. INITIAL_EXCHANGE_CONTINUED --> HANDSHAKE : TLS:HAVE_EL(HANDSHAKE)
  27. HANDSHAKE --> HANDSHAKE_CONTINUED : RX:HANDSHAKE
  28. HANDSHAKE_CONTINUED --> HANDSHAKE_COMPLETED : TLS:HANDSHAKE_COMPLETE
  29. HANDSHAKE_COMPLETED --> HANDSHAKE_CONFIRMED : RX:1RTT[HANDSHAKE_DONE]
  30. }
  31. OPEN :
  32. [*] --> ESTABLISHING
  33. }
  34. state TERMINATING {
  35. CLOSING :
  36. DRAINING :
  37. CLOSING --> DRAINING : RX:ANY[CONNECTION_CLOSE]
  38. }
  39. HANDSHAKE_CONFIRMED --> OPEN : ε
  40. IDLE --> ACTIVE : APP:CONNECT
  41. IDLE --> TERMINATED : APP:CLOSE
  42. TERMINATING --> TERMINATED : TERMINATING_TIMEOUT, RX:STATELESS_RESET
  43. ACTIVE --> CLOSING : APP:CLOSE
  44. ACTIVE --> DRAINING : RX:ANY[CONNECTION_CLOSE]
  45. ACTIVE --> TERMINATED : IDLE_TIMEOUT, RX:STATELESS_RESET
  46. @enduml