unixsock.go 965 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2009 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package net
  5. // UnixAddr represents the address of a Unix domain socket end point.
  6. type UnixAddr struct {
  7. Name string
  8. Net string
  9. }
  10. // Network returns the address's network name, "unix", "unixgram" or
  11. // "unixpacket".
  12. func (a *UnixAddr) Network() string {
  13. return a.Net
  14. }
  15. func (a *UnixAddr) String() string {
  16. if a == nil {
  17. return "<nil>"
  18. }
  19. return a.Name
  20. }
  21. func (a *UnixAddr) toAddr() Addr {
  22. if a == nil {
  23. return nil
  24. }
  25. return a
  26. }
  27. // ResolveUnixAddr parses addr as a Unix domain socket address.
  28. // The string net gives the network name, "unix", "unixgram" or
  29. // "unixpacket".
  30. func ResolveUnixAddr(net, addr string) (*UnixAddr, error) {
  31. switch net {
  32. case "unix", "unixgram", "unixpacket":
  33. return &UnixAddr{Name: addr, Net: net}, nil
  34. default:
  35. return nil, UnknownNetworkError(net)
  36. }
  37. }