destination.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package net
  2. // Destination represents a network destination including address and protocol (tcp / udp).
  3. type Destination interface {
  4. Network() string // Protocol of communication (tcp / udp)
  5. Address() Address // Address of destination
  6. String() string // String representation of the destination
  7. IsTCP() bool // True if destination is reachable via TCP
  8. IsUDP() bool // True if destination is reachable via UDP
  9. }
  10. // NewTCPDestination creates a TCP destination with given address
  11. func NewTCPDestination(address Address) Destination {
  12. return TCPDestination{address: address}
  13. }
  14. // NewUDPDestination creates a UDP destination with given address
  15. func NewUDPDestination(address Address) Destination {
  16. return UDPDestination{address: address}
  17. }
  18. type TCPDestination struct {
  19. address Address
  20. }
  21. func (dest TCPDestination) Network() string {
  22. return "tcp"
  23. }
  24. func (dest TCPDestination) Address() Address {
  25. return dest.address
  26. }
  27. func (dest TCPDestination) String() string {
  28. return "tcp:" + dest.address.String()
  29. }
  30. func (dest TCPDestination) IsTCP() bool {
  31. return true
  32. }
  33. func (dest TCPDestination) IsUDP() bool {
  34. return false
  35. }
  36. type UDPDestination struct {
  37. address Address
  38. }
  39. func (dest UDPDestination) Network() string {
  40. return "udp"
  41. }
  42. func (dest UDPDestination) Address() Address {
  43. return dest.address
  44. }
  45. func (dest UDPDestination) String() string {
  46. return "udp:" + dest.address.String()
  47. }
  48. func (dest UDPDestination) IsTCP() bool {
  49. return false
  50. }
  51. func (dest UDPDestination) IsUDP() bool {
  52. return true
  53. }