| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | package policyimport (	"time"	"v2ray.com/core")// Duration converts Second to time.Duration.func (s *Second) Duration() time.Duration {	if s == nil {		return 0	}	return time.Second * time.Duration(s.Value)}// OverrideWith overrides current Policy with another one.func (p *Policy) OverrideWith(another *Policy) {	if another.Timeout != nil {		if another.Timeout.Handshake != nil {			p.Timeout.Handshake = another.Timeout.Handshake		}		if another.Timeout.ConnectionIdle != nil {			p.Timeout.ConnectionIdle = another.Timeout.ConnectionIdle		}		if another.Timeout.UplinkOnly != nil {			p.Timeout.UplinkOnly = another.Timeout.UplinkOnly		}		if another.Timeout.DownlinkOnly != nil {			p.Timeout.DownlinkOnly = another.Timeout.DownlinkOnly		}	}}func (p *Policy) ToCorePolicy() core.Policy {	var cp core.Policy	if p.Timeout != nil {		cp.Timeouts.ConnectionIdle = p.Timeout.ConnectionIdle.Duration()		cp.Timeouts.Handshake = p.Timeout.Handshake.Duration()		cp.Timeouts.DownlinkOnly = p.Timeout.DownlinkOnly.Duration()		cp.Timeouts.UplinkOnly = p.Timeout.UplinkOnly.Duration()	}	return cp}
 |