| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package systemnetworkimpl
- import (
- "context"
- "github.com/v2fly/v2ray-core/v5/common/environment"
- "github.com/v2fly/v2ray-core/v5/common/net"
- "github.com/v2fly/v2ray-core/v5/transport/internet"
- )
- func NewSystemNetworkImpl(listener internet.SystemListener, dialer internet.SystemDialer) environment.SystemNetworkCapabilitySet {
- return &systemNetworkImpl{dialer: dialer, listener: listener}
- }
- type systemDefaultDialer struct{}
- func (s systemDefaultDialer) Listen(ctx context.Context, addr net.Addr, sockopt *internet.SocketConfig) (net.Listener, error) {
- return internet.ListenSystem(ctx, addr, sockopt)
- }
- func (s systemDefaultDialer) ListenPacket(ctx context.Context, addr net.Addr, sockopt *internet.SocketConfig) (net.PacketConn, error) {
- return internet.ListenSystemPacket(ctx, addr, sockopt)
- }
- func (s systemDefaultDialer) Dial(ctx context.Context, source net.Address, destination net.Destination, sockopt *internet.SocketConfig) (net.Conn, error) {
- return internet.DialSystem(ctx, destination, sockopt)
- }
- func NewSystemNetworkDefault() environment.SystemNetworkCapabilitySet {
- systemDefault := systemDefaultDialer{}
- return &systemNetworkImpl{dialer: systemDefault, listener: systemDefault}
- }
- type systemNetworkImpl struct {
- listener internet.SystemListener
- dialer internet.SystemDialer
- }
- func (s systemNetworkImpl) Dialer() internet.SystemDialer {
- return s.dialer
- }
- func (s systemNetworkImpl) Listener() internet.SystemListener {
- return s.listener
- }
- func NewSystemListenerWithDefaultOpt(listener internet.SystemListener, opt *internet.SocketConfig) internet.SystemListener {
- return systemListenerWithDefaultOpt{SystemListener: listener, opt: opt}
- }
- type systemListenerWithDefaultOpt struct {
- internet.SystemListener
- opt *internet.SocketConfig
- }
- func (s systemListenerWithDefaultOpt) Listen(ctx context.Context, addr net.Addr, sockopt *internet.SocketConfig) (net.Listener, error) {
- if sockopt == nil {
- return s.Listen(ctx, addr, s.opt)
- }
- return s.Listen(ctx, addr, sockopt)
- }
- func (s systemListenerWithDefaultOpt) ListenPacket(ctx context.Context, addr net.Addr, sockopt *internet.SocketConfig) (net.PacketConn, error) {
- if sockopt == nil {
- return s.ListenPacket(ctx, addr, s.opt)
- }
- return s.ListenPacket(ctx, addr, sockopt)
- }
- func NewSystemDialerWithDefaultOpt(listener internet.SystemDialer, opt *internet.SocketConfig) internet.SystemDialer {
- return systemDialerWithDefaultOpt{SystemDialer: listener, opt: opt}
- }
- type systemDialerWithDefaultOpt struct {
- internet.SystemDialer
- opt *internet.SocketConfig
- }
- func (s systemDialerWithDefaultOpt) Dial(ctx context.Context, source net.Address, destination net.Destination, sockopt *internet.SocketConfig) (net.Conn, error) {
- if sockopt == nil {
- return s.Dial(ctx, source, destination, s.opt)
- }
- return s.Dial(ctx, source, destination, sockopt)
- }
|