proxy.go 505 B

1234567891011121314151617181920212223242526
  1. package nat
  2. import (
  3. "net"
  4. "github.com/metacubex/mihomo/common/atomic"
  5. C "github.com/metacubex/mihomo/constant"
  6. )
  7. type writeBackProxy struct {
  8. wb atomic.TypedValue[C.WriteBack]
  9. }
  10. func (w *writeBackProxy) WriteBack(b []byte, addr net.Addr) (n int, err error) {
  11. return w.wb.Load().WriteBack(b, addr)
  12. }
  13. func (w *writeBackProxy) UpdateWriteBack(wb C.WriteBack) {
  14. w.wb.Store(wb)
  15. }
  16. func NewWriteBackProxy(wb C.WriteBack) C.WriteBackProxy {
  17. w := &writeBackProxy{}
  18. w.UpdateWriteBack(wb)
  19. return w
  20. }