Пример #1
0
 /// <summary>
 /// Method used to signal the <see cref="Cde"/>.
 /// </summary>
 protected void SignalCde()
 {
     try
     {
         Cde.Signal();
     }
     catch (InvalidOperationException)
     {
         // todo Add trace logging
     }
 }
Пример #2
0
 /// <summary>
 /// Method verifies and resets the <see cref="Cde"/> count to the requested count.
 /// </summary>
 /// <param name="count">The number of signals required to set the <see cref="CountdownEvent"/></param>
 protected virtual void VerifyAndResetCountdown(int count)
 {
     if ((Cde != null && Cde.IsSet))
     {
         Cde.Reset(count);
     }
     else
     {
         Cde = new CountdownEvent(count);
     }
 }
Пример #3
0
        private static void HostThreadWorker(List <IPAddress> list, int nrOfHosts, int nrOfThreads,
                                             int i, MutexClass m)
        {
            int       totalNrOfHosts = list.Count;
            int       counter        = 0;
            IPAddress ipAddrScanned  = new IPAddress(0);
            PortList  portListing    = new PortList(1, 600);
            Cde       cdeobj         = new Cde();

            cdeobj._countdownEvent = new CountdownEvent(nrOfThreads);

            while ((i + counter) <= (totalNrOfHosts - 1))
            {
                {
                    ipAddrScanned          = list[i + counter];
                    portListing            = new PortList(1, 65535);
                    cdeobj                 = new Cde();
                    cdeobj._countdownEvent = new CountdownEvent(nrOfThreads);

                    m._mutex.WaitOne();

                    try
                    {
                        counter += nrOfHosts;
                    }

                    finally
                    {
                        m._mutex.ReleaseMutex();
                    }
                }

                string str = string.Concat("Machine ", ipAddrScanned, " is being scanned");
                Console.WriteLine(str);
                str.WriteDebug();

                for (int j = 0; j < nrOfThreads; j++)
                {
                    int       k          = j;
                    IPAddress ip         = ipAddrScanned;
                    PortList  p          = portListing;
                    Cde       cdevent    = cdeobj;
                    var       portThread =
                        new Thread(() => PortThreadWorker(ip, k, cdevent, p));
                    portThread.Start();
                }

                cdeobj._countdownEvent.Wait();
            }
        }
Пример #4
0
        private static void PortThreadWorker(IPAddress ipAddrScannned, int j,
                                             Cde cdeevent, PortList portListing)
        {
            TcpClient tcpClientobj = new TcpClient();
            UdpClient udpClientobj = new UdpClient();
            Mutex     mut          = new Mutex();
            int       port         = 1;

            while (port != -1)
            {
                mut.WaitOne();
                try
                {
                    port = portListing.getNext();
                }

                finally
                {
                    mut.ReleaseMutex();
                }

                try
                {
                    tcpClientobj = new TcpClient(ipAddrScannned.ToString(), port);
                    udpClientobj = new UdpClient(ipAddrScannned.ToString(), port);
                }
                catch
                {
                    continue;
                }
                finally
                {
                    try
                    {
                        tcpClientobj.Close();
                        udpClientobj.Close();
                    }
                    catch
                    {
                    }
                }

                string s = string.Concat("Port ", port, " is open on machine ", ipAddrScannned);
                Console.WriteLine(s);
                s.WriteDebug();
            }

            cdeevent._countdownEvent.Signal();
        }
Пример #5
0
        protected override async Task ListUpdatedHandler(MessageBase <IList <Domain.Todo> > messageBase)
        {
            await base.ListUpdatedHandler(messageBase);

            Cde.Wait(1000);

            var userPresentation = Mvx.IoCProvider.Resolve <ISinglePresentation <int, Observable.LoggedInUser> >();

            if (!userPresentation.SelectedObservable.IsTransient())
            {
                var dispatcher = Mvx.IoCProvider.Resolve <IMvxMainThreadAsyncDispatcher>();
                dispatcher.ExecuteOnMainThreadAsync(() => { CurrentUserTodoObservables.Clear(); });
                var todosFromUser = Observables.Where(x => x.UserId.Equals(userPresentation.SelectedObservable.Id)).Take(5);
                foreach (var todo in todosFromUser)
                {
                    dispatcher.ExecuteOnMainThreadAsync(() => { CurrentUserTodoObservables.Add(todo); });
                }
            }
        }