package cproxy import ( "io" "net" "net/http" ) type ( Filter interface { IsAuthorized(http.ResponseWriter, *http.Request) bool } clientConnector interface { Connect(http.ResponseWriter) Socket } ) type ( Dialer interface { Dial(string) Socket } serverConnector interface { Connect(Socket, string) proxy } initializer interface { Initialize(Socket, Socket) bool } proxy interface { Proxy() } ) type ( Socket interface { io.ReadWriteCloser RemoteAddr() net.Addr } tcpSocket interface { Socket CloseRead() error CloseWrite() error } ) type ( monitor interface { Measure(int) } logger interface { Printf(string, ...interface{}) } ) const ( MeasurementHTTPRequest int = iota MeasurementBadMethod MeasurementUnauthorizedRequest MeasurementClientConnectionFailed MeasurementServerConnectionFailed MeasurementProxyReady MeasurementProxyComplete )