refresher prototype

pull/362/head
Darien Raymond 8 years ago
parent 0e940fb1fa
commit 2eb313d0c2
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

@ -0,0 +1,15 @@
package receiver
func (v *AllocationStrategy) GetConcurrencyValue() uint32 {
if v == nil || v.Concurrency == nil {
return 3
}
return v.Concurrency.Value
}
func (v *AllocationStrategy) GetRefreshValue() uint32 {
if v == nil || v.Refresh == nil {
return 5
}
return v.Refresh.Value
}

@ -3,10 +3,27 @@ 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 {
@ -14,8 +31,20 @@ type StreamReceiver struct {
proxy *proxy.InboundHandler
listeners []net.Listener
refresher refresher
}
func (r *StreamReceiver) Start() {
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)
}
}()
}

Loading…
Cancel
Save