Add pause support
This commit is contained in:
parent
b4db0692d3
commit
7be452de15
4 changed files with 18 additions and 7 deletions
|
|
@ -6,11 +6,14 @@
|
|||
package device
|
||||
|
||||
import (
|
||||
"context"
|
||||
"runtime"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/sagernet/sing/service"
|
||||
"github.com/sagernet/sing/service/pause"
|
||||
"github.com/sagernet/wireguard-go/conn"
|
||||
"github.com/sagernet/wireguard-go/ratelimiter"
|
||||
"github.com/sagernet/wireguard-go/rwcancel"
|
||||
|
|
@ -86,9 +89,10 @@ type Device struct {
|
|||
mtu atomic.Int32
|
||||
}
|
||||
|
||||
ipcMutex sync.RWMutex
|
||||
closed chan struct{}
|
||||
log *Logger
|
||||
ipcMutex sync.RWMutex
|
||||
closed chan struct{}
|
||||
log *Logger
|
||||
pauseManager pause.Manager
|
||||
}
|
||||
|
||||
// deviceState represents the state of a Device.
|
||||
|
|
@ -281,8 +285,9 @@ func (device *Device) SetPrivateKey(sk NoisePrivateKey) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func NewDevice(tunDevice tun.Device, bind conn.Bind, logger *Logger, workers int) *Device {
|
||||
func NewDevice(ctx context.Context, tunDevice tun.Device, bind conn.Bind, logger *Logger, workers int) *Device {
|
||||
device := new(Device)
|
||||
device.pauseManager = service.FromContext[pause.Manager](ctx)
|
||||
device.state.state.Store(uint32(deviceStateDown))
|
||||
device.closed = make(chan struct{})
|
||||
device.log = logger
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue