package udp import ( "time" mdata "github.com/go-gost/core/metadata" mdx "github.com/go-gost/x/metadata" ) const ( defaultTTL = 5 * time.Second defaultReadBufferSize = 1500 defaultReadQueueSize = 128 defaultBacklog = 128 ) type metadata struct { readBufferSize int readQueueSize int backlog int keepalive bool ttl time.Duration } func (l *udpListener) parseMetadata(md mdata.Metadata) (err error) { const ( readBufferSize = "readBufferSize" readQueueSize = "readQueueSize" backlog = "backlog" keepAlive = "keepAlive" ttl = "ttl" ) l.md.ttl = mdx.GetDuration(md, ttl) if l.md.ttl <= 0 { l.md.ttl = defaultTTL } l.md.readBufferSize = mdx.GetInt(md, readBufferSize) if l.md.readBufferSize <= 0 { l.md.readBufferSize = defaultReadBufferSize } l.md.readQueueSize = mdx.GetInt(md, readQueueSize) if l.md.readQueueSize <= 0 { l.md.readQueueSize = defaultReadQueueSize } l.md.backlog = mdx.GetInt(md, backlog) if l.md.backlog <= 0 { l.md.backlog = defaultBacklog } l.md.keepalive = mdx.GetBool(md, keepAlive) return }