package client import ( "crypto/tls" "net" "time" cuc "git.loafle.net/commons_go/util/context" ) type SocketBuilder interface { SocketContext(parent cuc.Context) SocketContext SocketHandler() SocketHandler Dial(network, address string) (net.Conn, error) GetNetwork() string GetAddress() string GetTLSConfig() *tls.Config GetHandshakeTimeout() time.Duration GetKeepAlive() time.Duration GetLocalAddress() net.Addr // Validate is check handler value // If you override ths method, must call // // func (sh *SocketHandlers) Validate() { // sh.SocketHandlers.Validate() // ... // } Validate() }