direction.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
  2. // SPDX-License-Identifier: MIT
  3. package sdp
  4. import "errors"
  5. // Direction is a marker for transmission directon of an endpoint
  6. type Direction int
  7. const (
  8. // DirectionSendRecv is for bidirectional communication
  9. DirectionSendRecv Direction = iota + 1
  10. // DirectionSendOnly is for outgoing communication
  11. DirectionSendOnly
  12. // DirectionRecvOnly is for incoming communication
  13. DirectionRecvOnly
  14. // DirectionInactive is for no communication
  15. DirectionInactive
  16. )
  17. const (
  18. directionSendRecvStr = "sendrecv"
  19. directionSendOnlyStr = "sendonly"
  20. directionRecvOnlyStr = "recvonly"
  21. directionInactiveStr = "inactive"
  22. directionUnknownStr = ""
  23. )
  24. var errDirectionString = errors.New("invalid direction string")
  25. // NewDirection defines a procedure for creating a new direction from a raw
  26. // string.
  27. func NewDirection(raw string) (Direction, error) {
  28. switch raw {
  29. case directionSendRecvStr:
  30. return DirectionSendRecv, nil
  31. case directionSendOnlyStr:
  32. return DirectionSendOnly, nil
  33. case directionRecvOnlyStr:
  34. return DirectionRecvOnly, nil
  35. case directionInactiveStr:
  36. return DirectionInactive, nil
  37. default:
  38. return Direction(unknown), errDirectionString
  39. }
  40. }
  41. func (t Direction) String() string {
  42. switch t {
  43. case DirectionSendRecv:
  44. return directionSendRecvStr
  45. case DirectionSendOnly:
  46. return directionSendOnlyStr
  47. case DirectionRecvOnly:
  48. return directionRecvOnlyStr
  49. case DirectionInactive:
  50. return directionInactiveStr
  51. default:
  52. return directionUnknownStr
  53. }
  54. }