transport_tcp.go 797 B

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