Esempio n. 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));
        }
Esempio n. 2
0
 public async Task<PortCheckResult> CheckAsync()
 {
   var peercast = Application.PeerCast;
   var ports = peercast.OutputListeners
     .Where( listener => (listener.GlobalOutputAccepts & OutputStreamType.Relay)!=0)
     .Select(listener => listener.LocalEndPoint.Port);
   var checker = new PCPPortChecker(peercast.SessionID, TargetUri, ports);
   return await checker.RunAsync();
 }
Esempio n. 3
0
 public JArray CheckPorts()
 {
     int[] result = null;
     Uri target_uri;
     if (AppSettingsReader.TryGetUri("PCPPortChecker", out target_uri)) {
       var ports = PeerCast.OutputListeners
     .Where( listener => (listener.GlobalOutputAccepts & OutputStreamType.Relay)!=0)
     .Select(listener => listener.LocalEndPoint.Port);
       var checker = new PeerCastStation.UI.PCPPortChecker(PeerCast.SessionID, target_uri, ports);
       checker.PortCheckCompleted += (sender, args) => {
     if (args.Success) {
       owner.OpenedPorts = args.Ports;
       result = args.Ports;
     }
       };
       checker.Run();
     }
     if (result!=null) {
       return new JArray(result);
     }
     else {
       return null;
     }
 }
Esempio n. 4
0
 public JArray CheckPorts()
 {
     int[] result = null;
     Uri target_uri;
     if (AppSettingsReader.TryGetUri("PCPPortChecker", out target_uri)) {
       var ports = PeerCast.OutputListeners
     .Where( listener => (listener.GlobalOutputAccepts & OutputStreamType.Relay)!=0)
     .Select(listener => listener.LocalEndPoint.Port);
       var checker = new PeerCastStation.UI.PCPPortChecker(PeerCast.SessionID, target_uri, ports);
       checker.PortCheckCompleted += (sender, args) => {
     if (args.Success) {
       owner.OpenedPorts = args.Ports;
       result = args.Ports;
     }
       };
       var port_mapper = PeerCastApplication.Current.Plugins.GetPlugin<PeerCastStation.UI.PortMapperPlugin>();
       if (port_mapper!=null) {
     var task = port_mapper.DiscoverAsync()
       .ContinueWith(prev => checker.Run());
     task.Wait();
       }
       else {
     checker.Run();
       }
     }
     if (result!=null) {
       return new JArray(result);
     }
     else {
       return null;
     }
 }