fishy commented on code in PR #3379:
URL: https://github.com/apache/thrift/pull/3379#discussion_r3060483331


##########
lib/go/thrift/server_socket.go:
##########
@@ -26,15 +27,17 @@ import (
 )
 
 type TServerSocket struct {
-       addr          net.Addr
+       // TServerSocketListenerFactory abstracts how listeners are created.
+       factory       func(bool) (net.Addr, net.Listener, error)

Review Comment:
   similarly here, just store `addr` and `func() (net.Listener, error)` 
separately



##########
lib/go/thrift/server_socket.go:
##########
@@ -44,28 +47,62 @@ func NewTServerSocketTimeout(listenAddr string, 
clientTimeout time.Duration) (*T
        if err != nil {
                return nil, err
        }
-       return &TServerSocket{addr: addr, clientTimeout: clientTimeout}, nil
+
+       return NewTServerSocketFromAddrTimeout(addr, clientTimeout), nil
 }
 
-// Creates a TServerSocket from a net.Addr
 func NewTServerSocketFromAddrTimeout(addr net.Addr, clientTimeout 
time.Duration) *TServerSocket {
-       return &TServerSocket{addr: addr, clientTimeout: clientTimeout}
+       factory := func(listen bool) (net.Addr, net.Listener, error) {
+               var listener net.Listener
+               var err error
+               if (listen){
+                       listener, err = net.Listen(addr.Network(), 
addr.String())
+               }
+               return addr, listener, err
+       }
+
+       return NewTServerSocketFromFactoryTimeout(factory, clientTimeout)
 }
 
-func (p *TServerSocket) Listen() error {
+// Allows full customization (TLS, mocks, unix sockets, windows named pipes, 
etc.)
+func NewTServerSocketFromFactoryTimeout(factory func(listen bool) (addr 
net.Addr, listener net.Listener, err error), clientTimeout time.Duration) 
*TServerSocket {

Review Comment:
   you are changing this back. the previous version passing `addr` and `func() 
(net.Listener, error)` as two separate args is so much better.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to