mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			30 lines
		
	
	
		
			716 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			716 B
		
	
	
	
		
			Go
		
	
	
	
| package proxy
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"net"
 | |
| )
 | |
| 
 | |
| type Proxy interface {
 | |
| 	// Start forwarding traffic back and forth the front and back-end
 | |
| 	// addresses.
 | |
| 	Run()
 | |
| 	// Stop forwarding traffic and close both ends of the Proxy.
 | |
| 	Close()
 | |
| 	// Return the address on which the proxy is listening.
 | |
| 	FrontendAddr() net.Addr
 | |
| 	// Return the proxied address.
 | |
| 	BackendAddr() net.Addr
 | |
| }
 | |
| 
 | |
| func NewProxy(frontendAddr, backendAddr net.Addr) (Proxy, error) {
 | |
| 	switch frontendAddr.(type) {
 | |
| 	case *net.UDPAddr:
 | |
| 		return NewUDPProxy(frontendAddr.(*net.UDPAddr), backendAddr.(*net.UDPAddr))
 | |
| 	case *net.TCPAddr:
 | |
| 		return NewTCPProxy(frontendAddr.(*net.TCPAddr), backendAddr.(*net.TCPAddr))
 | |
| 	default:
 | |
| 		panic(fmt.Errorf("Unsupported protocol"))
 | |
| 	}
 | |
| }
 |