icetransportstate.go 3.4 KB

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