server/client/socket_builders.go
crusader 49eee11b7f ing
2017-11-30 18:36:59 +09:00

72 lines
1.3 KiB
Go

package client
import (
"crypto/tls"
"net"
"time"
"git.loafle.net/commons_go/logging"
cs "git.loafle.net/commons_go/server"
cuc "git.loafle.net/commons_go/util/context"
)
type SocketBuilders struct {
Network string
Address string
TLSConfig *tls.Config
KeepAlive time.Duration
Timeout time.Duration
LocalAddress net.Addr
}
func (sb *SocketBuilders) SocketContext(parent cuc.Context) SocketContext {
return newSocketContext(parent)
}
func (sb *SocketBuilders) SocketHandler() SocketHandler {
return NewSocketHandler()
}
func (sb *SocketBuilders) GetNetwork() string {
return sb.Network
}
func (sb *SocketBuilders) GetAddress() string {
return sb.Address
}
func (sb *SocketBuilders) GetTLSConfig() *tls.Config {
return sb.TLSConfig
}
func (sb *SocketBuilders) GetKeepAlive() time.Duration {
return sb.KeepAlive
}
func (sb *SocketBuilders) GetTimeout() time.Duration {
return sb.Timeout
}
func (sb *SocketBuilders) GetLocalAddress() net.Addr {
return sb.LocalAddress
}
func (sb *SocketBuilders) Validate() {
if "" == sb.Network {
logging.Logger().Panic("Client Socket: Network must be specified")
}
if "" == sb.Address {
logging.Logger().Panic("Client Socket: Address must be specified")
}
if 0 >= sb.KeepAlive {
sb.KeepAlive = cs.DefaultKeepAlive
}
if 0 >= sb.Timeout {
sb.Timeout = cs.DefaultConnectTimeout
}
}