Exemple #1
0
        public static void TestAvailability(object @value)
        {
            ISiteEndpoint endpoint = value as ISiteEndpoint;

            Stopwatch watcher = new Stopwatch();

            SiteEndpoint endpointBlock = new SiteEndpoint();

            watcher.Start();
            bool isAvailable = WebOperations
                               .CheckUriAvailability(endpoint.EndpointUrl, endpoint.Port, ref endpointBlock);

            watcher.Stop();

            if (endpointBlock != null)
            {
                endpoint.DestinationServer         = endpointBlock.DestinationServer;
                endpoint.DestinationAddress        = endpointBlock.DestinationAddress;
                endpoint.DestinationAddressType    = endpointBlock.DestinationAddressType;
                endpoint.HostInformation           = endpointBlock.HostInformation;
                endpoint.HttpProtocol              = endpointBlock.HttpProtocol;
                endpoint.IsAvailable               = isAvailable;
                endpoint.ServerResponse            = endpointBlock.ServerResponse;
                endpoint.ServerResponseDescription = endpointBlock.ServerResponseDescription;
                endpoint.ResponseTime              = endpointBlock.ResponseTime;
            }

            watcher.Reset();

            if (MultiThreading.ActiveTaskCounter > 0)
            {
                MultiThreading.ActiveTaskCounter--;
            }
        }
Exemple #2
0
        public static IEnumerable <ISiteEndpoint> TestAvailability(this IEnumerable <ISiteEndpoint> endpoints)
        {
            List <ISiteEndpoint> endpointList = new List <ISiteEndpoint>();
            List <Task>          epTaskList   = new List <Task>();

            foreach (ISiteEndpoint value in endpoints)
            {
                Task task = new Task(new Action(delegate
                {
                    ISiteEndpoint endpoint = value as ISiteEndpoint;

                    Stopwatch watcher = new Stopwatch();

                    SiteEndpoint endpointBlock = new SiteEndpoint();
                    watcher.Start();
                    bool isAvailable = WebOperations
                                       .CheckUriAvailability(endpoint.EndpointUrl, endpoint.Port, ref endpointBlock);
                    watcher.Stop();

                    if (endpointBlock != null)
                    {
                        endpoint.DestinationServer         = endpointBlock.DestinationServer;
                        endpoint.DestinationAddress        = endpointBlock.DestinationAddress;
                        endpoint.DestinationAddressType    = endpointBlock.DestinationAddressType;
                        endpoint.HostInformation           = endpointBlock.HostInformation;
                        endpoint.HttpProtocol              = endpointBlock.HttpProtocol;
                        endpoint.IsAvailable               = isAvailable;
                        endpoint.ServerResponse            = endpointBlock.ServerResponse;
                        endpoint.ServerResponseDescription = endpointBlock.ServerResponseDescription;
                        endpoint.ResponseTime              = endpointBlock.ResponseTime;

                        endpointList.Add(endpoint);
                    }

                    watcher.Reset();

                    if (MultiThreading.ActiveTaskCounter > 0)
                    {
                        MultiThreading.ActiveTaskCounter--;
                    }
                }));
                epTaskList.Add(task);
            }
            MultiThreading.Run(epTaskList);
            return(endpointList.AsEnumerable());
        }