Imported Upstream version 4.7.2
[platform/upstream/gcc48.git] / libgo / go / net / unixsock.go
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
5 // Unix domain sockets
6
7 package net
8
9 // UnixAddr represents the address of a Unix domain socket end point.
10 type UnixAddr struct {
11         Name string
12         Net  string
13 }
14
15 // Network returns the address's network name, "unix" or "unixgram".
16 func (a *UnixAddr) Network() string {
17         return a.Net
18 }
19
20 func (a *UnixAddr) String() string {
21         if a == nil {
22                 return "<nil>"
23         }
24         return a.Name
25 }
26
27 func (a *UnixAddr) toAddr() Addr {
28         if a == nil { // nil *UnixAddr
29                 return nil // nil interface
30         }
31         return a
32 }
33
34 // ResolveUnixAddr parses addr as a Unix domain socket address.
35 // The string net gives the network name, "unix", "unixgram" or
36 // "unixpacket".
37 func ResolveUnixAddr(net, addr string) (*UnixAddr, error) {
38         switch net {
39         case "unix":
40         case "unixpacket":
41         case "unixgram":
42         default:
43                 return nil, UnknownNetworkError(net)
44         }
45         return &UnixAddr{addr, net}, nil
46 }