MCPcopy Create free account
hub / github.com/encodeous/nylon / UAPIOpen

Function UAPIOpen

polyamide/ipc/uapi_unix.go:35–66  ·  view source on GitHub ↗
(name string)

Source from the content-addressed store, hash-verified

33}
34
35func UAPIOpen(name string) (*os.File, error) {
36 if err := os.MkdirAll(socketDirectory, 0o755); err != nil {
37 return nil, err
38 }
39
40 socketPath := sockPath(name)
41 addr, err := net.ResolveUnixAddr("unix", socketPath)
42 if err != nil {
43 return nil, err
44 }
45
46 oldUmask := unix.Umask(0o077)
47 defer unix.Umask(oldUmask)
48
49 listener, err := net.ListenUnix("unix", addr)
50 if err == nil {
51 return listener.File()
52 }
53
54 // Test socket, if not in use cleanup and try again.
55 if _, err := net.Dial("unix", socketPath); err == nil {
56 return nil, errors.New("unix socket in use")
57 }
58 if err := os.Remove(socketPath); err != nil {
59 return nil, err
60 }
61 listener, err = net.ListenUnix("unix", addr)
62 if err != nil {
63 return nil, err
64 }
65 return listener.File()
66}
67
68func UAPIDial(name string) (net.Conn, error) {
69 socketPath := sockPath(name)

Callers 3

mainFunction · 0.92
InitUAPIFunction · 0.92
InitUAPIFunction · 0.92

Calls 4

sockPathFunction · 0.85
DialMethod · 0.80
RemoveMethod · 0.80
FileMethod · 0.65

Tested by

no test coverage detected