1 Star 0 Fork 0

ZJOOPS / gosip

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
option.go 1.55 KB
一键复制 编辑 原始数据 按行查看 历史
zhangjun 提交于 2022-07-25 15:23 . -fix 修复invite ack的bug
package transport
import (
"net"
"gitee.com/zhjun2512/gosip/log"
"gitee.com/zhjun2512/gosip/sip"
)
// TODO migrate other factories to functional arguments
type Options struct {
MessageMapper sip.MessageMapper
Logger log.Logger
}
type LayerOption interface {
ApplyLayer(opts *LayerOptions)
}
type LayerOptions struct {
Options
DNSResolver *net.Resolver
}
type ProtocolOption interface {
ApplyProtocol(opts *ProtocolOptions)
}
type ProtocolOptions struct {
Options
}
func WithMessageMapper(mapper sip.MessageMapper) interface {
LayerOption
ProtocolOption
} {
return withMessageMapper{mapper}
}
type withMessageMapper struct {
mapper sip.MessageMapper
}
func (o withMessageMapper) ApplyLayer(opts *LayerOptions) {
opts.MessageMapper = o.mapper
}
func (o withMessageMapper) ApplyProtocol(opts *ProtocolOptions) {
opts.MessageMapper = o.mapper
}
func WithLogger(logger log.Logger) interface {
LayerOption
ProtocolOption
} {
return withLogger{logger}
}
type withLogger struct {
logger log.Logger
}
func (o withLogger) ApplyLayer(opts *LayerOptions) {
opts.Logger = o.logger
}
func (o withLogger) ApplyProtocol(opts *ProtocolOptions) {
opts.Logger = o.logger
}
func WithDNSResolver(resolver *net.Resolver) LayerOption {
return withDnsResolver{resolver}
}
type withDnsResolver struct {
resolver *net.Resolver
}
func (o withDnsResolver) ApplyLayer(opts *LayerOptions) {
opts.DNSResolver = o.resolver
}
// Listen method options
type ListenOption interface {
ApplyListen(opts *ListenOptions)
}
type ListenOptions struct {
TLSConfig TLSConfig
}
Go
1
https://gitee.com/zhjun2512/gosip.git
git@gitee.com:zhjun2512/gosip.git
zhjun2512
gosip
gosip
v0.0.5

搜索帮助

53164aa7 5694891 3bd8fe86 5694891