PeerCastStation.UI.PCPPortChecker.RunAsync C# (CSharp) Method

RunAsync() public method

public RunAsync ( ) : Task
return Task
    public async Task<PortCheckResult> RunAsync()
    {
      var client = new WebClient();
      var data   = new JObject();
      data["instanceId"] = InstanceId.ToString("N");
      data["ports"] = new JArray(Ports);
      var succeeded = false;
      var stopwatch = new System.Diagnostics.Stopwatch();
      string response_body = null;
      try {
        stopwatch.Start();
        var body = System.Text.Encoding.UTF8.GetBytes(data.ToString());
        response_body = System.Text.Encoding.UTF8.GetString(
          await client.UploadDataTaskAsync(Target, body)
        );
        stopwatch.Stop();
        succeeded = true;
        var response = JToken.Parse(response_body);
        var response_ports = response["ports"].Select(token => (int)token);
        return new PortCheckResult(
            succeeded,
            response_ports.ToArray(),
            stopwatch.Elapsed);
      }
      catch (WebException) {
        succeeded = false;
        return new PortCheckResult(
            succeeded,
            null,
            stopwatch.Elapsed);
      }
      catch (Newtonsoft.Json.JsonReaderException) {
        succeeded = false;
        return new PortCheckResult(
            succeeded,
            null,
            stopwatch.Elapsed);
      }
    }
  }

Usage Example

Beispiel #1
0
        public async Task <PortCheckResult[]> CheckAsync()
        {
            var peercast  = Application.PeerCast;
            var endpoints = peercast.OutputListeners
                            .Where(listener => (listener.GlobalOutputAccepts & OutputStreamType.Relay) != 0)
                            .Select(listener => listener.LocalEndPoint)
                            .GroupBy(ep => ep.Address);

            return(await Task.WhenAll(
                       endpoints.Select(group => {
                var target = TargetUriV4;
                switch (group.Key.AddressFamily)
                {
                case AddressFamily.InterNetworkV6:
                    target = TargetUriV6;
                    break;

                case AddressFamily.InterNetwork:
                default:
                    target = TargetUriV4;
                    break;
                }
                var checker = new PCPPortChecker(peercast.SessionID, target, group.Key, group.Select(ep => ep.Port));
                return checker.RunAsync();
            })
                       ).ConfigureAwait(false));
        }
All Usage Examples Of PeerCastStation.UI.PCPPortChecker::RunAsync