コード例 #1
0
    public IPv4V6DualStackSpeculativeConnector(TcpConnectParam basicParam, TcpIpSystem system) : base(basicParam)
    {
        if (basicParam.DestHostname._IsEmpty())
        {
            // IP address is specified
            AddAttempt(new Attempt(system, basicParam, 0));
            return;
        }

        // Hostname is specified
        var hostInfo = system.GetHostInfo(true);

        if (hostInfo.IsIPv4Supported)
        {
            AddAttempt(new Attempt(system, new TcpConnectParam(basicParam.DestHostname, basicParam.DestPort, AddressFamily.InterNetwork,
                                                               connectTimeout: basicParam.ConnectTimeout, dnsTimeout: basicParam.DnsTimeout), 0));
        }

        if (hostInfo.IsIPv6Supported)
        {
            AddAttempt(new Attempt(system, new TcpConnectParam(basicParam.DestHostname, basicParam.DestPort, AddressFamily.InterNetworkV6,
                                                               connectTimeout: basicParam.ConnectTimeout, dnsTimeout: basicParam.DnsTimeout), 0));
        }
    }
コード例 #2
0
 protected abstract NetTcpProtocolStubBase CreateTcpProtocolStubImpl(TcpConnectParam param, CancellationToken cancel);
コード例 #3
0
 public Attempt(ITcpConnectableSystem system, TcpConnectParam param, int postWaitMsecs)
 {
     this.System        = system;
     this.Param         = param;
     this.PostWaitMsecs = postWaitMsecs;
 }
コード例 #4
0
 public ConnSock ConnectIPv4v6Dual(TcpConnectParam param, CancellationToken cancel = default)
 => ConnectIPv4v6DualAsync(param, cancel)._GetResult();
コード例 #5
0
    public async Task <ConnSock> ConnectIPv4v6DualAsync(TcpConnectParam param, CancellationToken cancel = default)
    {
        IPv4V6DualStackSpeculativeConnector connector = new IPv4V6DualStackSpeculativeConnector(param, this);

        return(await connector.ConnectAsync(cancel));
    }
コード例 #6
0
 public SpeculativeConnectorBase(TcpConnectParam basicParam)
 {
     this.BasicParam = basicParam;
 }
コード例 #7
0
    protected override NetTcpProtocolStubBase CreateTcpProtocolStubImpl(TcpConnectParam param, CancellationToken cancel)
    {
        NetPalTcpProtocolStub tcp = new NetPalTcpProtocolStub(cancel: cancel);

        return(tcp);
    }