github.com/damirazo/docker@v1.9.0/pkg/listenbuffer/README.md (about)

     1  # listenbuffer
     2  
     3  listenbuffer uses the kernel's listening backlog functionality to queue
     4  connections, allowing applications to start listening immediately and handle
     5  connections later. This is signaled by closing the activation channel passed to
     6  the constructor.
     7  
     8  The maximum amount of queued connections depends on the configuration of your
     9  kernel (typically called SOMAXXCON) and cannot be configured in Go with the
    10  net package. See `src/net/sock_platform.go` in the Go tree or consult your
    11  kernel's manual.
    12  
    13  	activator := make(chan struct{})
    14  	buffer, err := NewListenBuffer("tcp", "localhost:4000", activator)
    15  	if err != nil {
    16  		panic(err)
    17  	}
    18  
    19  	// will block until activator has been closed or is sent an event
    20  	client, err := buffer.Accept()
    21  
    22  Somewhere else in your application once it's been booted:
    23  
    24  	close(activator)
    25  
    26  `buffer.Accept()` will return the first client in the kernel listening queue, or
    27  continue to block until a client connects or an error occurs.