transport_tcp.go 816 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //+build !windows
  2. package dbus
  3. import (
  4. "errors"
  5. "net"
  6. )
  7. func init() {
  8. transports["tcp"] = newTcpTransport
  9. }
  10. func tcpFamily(keys string) (string, error) {
  11. switch getKey(keys, "family") {
  12. case "":
  13. return "tcp", nil
  14. case "ipv4":
  15. return "tcp4", nil
  16. case "ipv6":
  17. return "tcp6", nil
  18. default:
  19. return "", errors.New("dbus: invalid tcp family (must be ipv4 or ipv6)")
  20. }
  21. }
  22. func newTcpTransport(keys string) (transport, error) {
  23. host := getKey(keys, "host")
  24. port := getKey(keys, "port")
  25. if host == "" || port == "" {
  26. return nil, errors.New("dbus: unsupported address (must set host and port)")
  27. }
  28. protocol, err := tcpFamily(keys)
  29. if err != nil {
  30. return nil, err
  31. }
  32. socket, err := net.Dial(protocol, net.JoinHostPort(host, port))
  33. if err != nil {
  34. return nil, err
  35. }
  36. return NewConn(socket)
  37. }