Skip to content

Commit 8c9a2f3

Browse files
committed
Reduce code duplication
1 parent 8506abf commit 8c9a2f3

1 file changed

Lines changed: 8 additions & 25 deletions

File tree

sdk/handler.go

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -100,37 +100,15 @@ func (h Handler) Serve(l net.Listener) io.Closer {
100100
// of docker daemon must be provided. To get default directory, use
101101
// WindowsDefaultDaemonRootDir() function. On Unix, this parameter is ignored.
102102
func (h Handler) ServeTCP(pluginName, addr, daemonDir string, tlsConfig *tls.Config) (io.Closer, error) {
103-
l, spec, err := newTCPListener(addr, pluginName, daemonDir, tlsConfig)
104-
if err != nil {
105-
return nil, err
106-
}
107-
108-
closer := h.Serve(l)
109-
deleter := specDeleter{
110-
serverCloser: closer,
111-
spec: spec,
112-
}
113-
114-
return deleter, nil
103+
return h.serveListener(newTCPListener(addr, pluginName, daemonDir, tlsConfig))
115104
}
116105

117106
// ServeUnix sets up the Handler to asynchronously listen for requests to a unix socket.
118107
// It also creates the socket file in the right directory for docker to read.
119108
// Calling the Close method of the returned Closer will delete the spec file, gracefully shut down the
120109
// server answering requests and return the resulting error (see http.Server#Serve(net.Listener)).
121110
func (h Handler) ServeUnix(addr string, gid int) (io.Closer, error) {
122-
l, spec, err := newUnixListener(addr, gid)
123-
if err != nil {
124-
return nil, err
125-
}
126-
127-
closer := h.Serve(l)
128-
deleter := specDeleter{
129-
serverCloser: closer,
130-
spec: spec,
131-
}
132-
133-
return deleter, nil
111+
return h.serveListener(newUnixListener(addr, gid))
134112
}
135113

136114
// ServeWindows sets up the Handler to asynchronously listen for requests to a Windows named pipe.
@@ -142,7 +120,12 @@ func (h Handler) ServeUnix(addr string, gid int) (io.Closer, error) {
142120
// of docker daemon must be provided. To get default directory, use
143121
// WindowsDefaultDaemonRootDir() function. On Unix, this parameter is ignored.
144122
func (h Handler) ServeWindows(addr, pluginName, daemonDir string, pipeConfig *WindowsPipeConfig) (io.Closer, error) {
145-
l, spec, err := newWindowsListener(addr, pluginName, daemonDir, pipeConfig)
123+
return h.serveListener(newWindowsListener(addr, pluginName, daemonDir, pipeConfig))
124+
}
125+
126+
// Accepts the return values of new{TCP,Unix,Windows}Listener(...) and serves requests as described in the
127+
// functions documentation.
128+
func (h Handler) serveListener(l net.Listener, spec string, err error) (io.Closer, error) {
146129
if err != nil {
147130
return nil, err
148131
}

0 commit comments

Comments
 (0)