зеркало из https://github.com/microsoft/docker.git
30 строки
716 B
Go
30 строки
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"))
|
|
}
|
|
}
|