github.com/lmars/docker@v1.6.0-rc2/pkg/proxy/proxy.go (about)

     1  package proxy
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  )
     7  
     8  type Proxy interface {
     9  	// Start forwarding traffic back and forth the front and back-end
    10  	// addresses.
    11  	Run()
    12  	// Stop forwarding traffic and close both ends of the Proxy.
    13  	Close()
    14  	// Return the address on which the proxy is listening.
    15  	FrontendAddr() net.Addr
    16  	// Return the proxied address.
    17  	BackendAddr() net.Addr
    18  }
    19  
    20  func NewProxy(frontendAddr, backendAddr net.Addr) (Proxy, error) {
    21  	switch frontendAddr.(type) {
    22  	case *net.UDPAddr:
    23  		return NewUDPProxy(frontendAddr.(*net.UDPAddr), backendAddr.(*net.UDPAddr))
    24  	case *net.TCPAddr:
    25  		return NewTCPProxy(frontendAddr.(*net.TCPAddr), backendAddr.(*net.TCPAddr))
    26  	default:
    27  		panic(fmt.Errorf("Unsupported protocol"))
    28  	}
    29  }