icetransportstate.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package webrtc
  2. import "github.com/pion/ice/v2"
  3. // ICETransportState represents the current state of the ICE transport.
  4. type ICETransportState int
  5. const (
  6. // ICETransportStateNew indicates the ICETransport is waiting
  7. // for remote candidates to be supplied.
  8. ICETransportStateNew = iota + 1
  9. // ICETransportStateChecking indicates the ICETransport has
  10. // received at least one remote candidate, and a local and remote
  11. // ICECandidateComplete dictionary was not added as the last candidate.
  12. ICETransportStateChecking
  13. // ICETransportStateConnected indicates the ICETransport has
  14. // received a response to an outgoing connectivity check, or has
  15. // received incoming DTLS/media after a successful response to an
  16. // incoming connectivity check, but is still checking other candidate
  17. // pairs to see if there is a better connection.
  18. ICETransportStateConnected
  19. // ICETransportStateCompleted indicates the ICETransport tested
  20. // all appropriate candidate pairs and at least one functioning
  21. // candidate pair has been found.
  22. ICETransportStateCompleted
  23. // ICETransportStateFailed indicates the ICETransport the last
  24. // candidate was added and all appropriate candidate pairs have either
  25. // failed connectivity checks or have lost consent.
  26. ICETransportStateFailed
  27. // ICETransportStateDisconnected indicates the ICETransport has received
  28. // at least one local and remote candidate, but the final candidate was
  29. // received yet and all appropriate candidate pairs thus far have been
  30. // tested and failed.
  31. ICETransportStateDisconnected
  32. // ICETransportStateClosed indicates the ICETransport has shut down
  33. // and is no longer responding to STUN requests.
  34. ICETransportStateClosed
  35. )
  36. func (c ICETransportState) String() string {
  37. switch c {
  38. case ICETransportStateNew:
  39. return "new"
  40. case ICETransportStateChecking:
  41. return "checking"
  42. case ICETransportStateConnected:
  43. return "connected"
  44. case ICETransportStateCompleted:
  45. return "completed"
  46. case ICETransportStateFailed:
  47. return "failed"
  48. case ICETransportStateDisconnected:
  49. return "disconnected"
  50. case ICETransportStateClosed:
  51. return "closed"
  52. default:
  53. return unknownStr
  54. }
  55. }
  56. func newICETransportStateFromICE(i ice.ConnectionState) ICETransportState {
  57. switch i {
  58. case ice.ConnectionStateNew:
  59. return ICETransportStateNew
  60. case ice.ConnectionStateChecking:
  61. return ICETransportStateChecking
  62. case ice.ConnectionStateConnected:
  63. return ICETransportStateConnected
  64. case ice.ConnectionStateCompleted:
  65. return ICETransportStateCompleted
  66. case ice.ConnectionStateFailed:
  67. return ICETransportStateFailed
  68. case ice.ConnectionStateDisconnected:
  69. return ICETransportStateDisconnected
  70. case ice.ConnectionStateClosed:
  71. return ICETransportStateClosed
  72. default:
  73. return ICETransportState(Unknown)
  74. }
  75. }
  76. func (c ICETransportState) toICE() ice.ConnectionState {
  77. switch c {
  78. case ICETransportStateNew:
  79. return ice.ConnectionStateNew
  80. case ICETransportStateChecking:
  81. return ice.ConnectionStateChecking
  82. case ICETransportStateConnected:
  83. return ice.ConnectionStateConnected
  84. case ICETransportStateCompleted:
  85. return ice.ConnectionStateCompleted
  86. case ICETransportStateFailed:
  87. return ice.ConnectionStateFailed
  88. case ICETransportStateDisconnected:
  89. return ice.ConnectionStateDisconnected
  90. case ICETransportStateClosed:
  91. return ice.ConnectionStateClosed
  92. default:
  93. return ice.ConnectionState(Unknown)
  94. }
  95. }