@@ -26,11 +26,9 @@ import (
2626 "time"
2727)
2828
29- // TServerSocketListenerFactory abstracts how listeners are created.
30- type TServerSocketListenerFactory func (listen bool ) (net.Addr , net.Listener , error )
31-
3229type TServerSocket struct {
33- factory TServerSocketListenerFactory
30+ // TServerSocketListenerFactory abstracts how listeners are created.
31+ factory func (listen bool ) (net.Addr , net.Listener , error )
3432 clientTimeout time.Duration
3533
3634 mu sync.RWMutex
@@ -67,7 +65,20 @@ func NewTServerSocketFromAddrTimeout(addr net.Addr, clientTimeout time.Duration)
6765}
6866
6967// Allows full customization (TLS, mocks, unix sockets, windows named pipes, etc.)
70- func NewTServerSocketFromFactoryTimeout (factory TServerSocketListenerFactory , clientTimeout time.Duration ) * TServerSocket {
68+ func NewTServerSocketFromFactoryAddrTimeout (proc func (addr net.Addr ) (net.Listener , error ),addr net.Addr , clientTimeout time.Duration ) * TServerSocket {
69+ factory := func (listen bool ) (net.Addr , net.Listener , error ) {
70+ var listener net.Listener
71+ var err error
72+ if (listen ){
73+ listener , err = proc (addr )
74+ }
75+ return addr , listener , err
76+ }
77+ return NewTServerSocketFromFactoryTimeout (factory , clientTimeout )
78+ }
79+
80+ // Allows full customization (TLS, mocks, unix sockets, windows named pipes, etc.)
81+ func NewTServerSocketFromFactoryTimeout (factory func (listen bool ) (net.Addr , net.Listener , error ), clientTimeout time.Duration ) * TServerSocket {
7182 return & TServerSocket {
7283 factory : factory ,
7384 clientTimeout : clientTimeout ,
0 commit comments