| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package receiver
- import (
- "net"
- "time"
- v2net "v2ray.com/core/common/net"
- "v2ray.com/core/proxy"
- )
- type refresher struct {
- strategy *AllocationStrategy
- portsInUse []v2net.Port
- }
- func (r *refresher) Refresh(s *StreamReceiver) {
- }
- func (r *refresher) Interval() time.Duration {
- switch r.strategy.Type {
- case AllocationStrategy_Random:
- return time.Minute * time.Duration(r.strategy.GetRefreshValue())
- default:
- return 0
- }
- }
- type StreamReceiver struct {
- config *StreamReceiverConfig
- proxy *proxy.InboundHandler
- listeners []net.Listener
- refresher refresher
- }
- func (s *StreamReceiver) Start() {
- s.refresher.Refresh(s)
- interval := s.refresher.Interval()
- if interval == 0 {
- return
- }
- go func() {
- for {
- time.Sleep(s.refresher.Interval())
- s.refresher.Refresh(s)
- }
- }()
- }
|