Esempio n. 1
0
        public void GetSieveInformation()
        {
            using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", PIPE_NAME, PipeDirection.InOut, PipeOptions.None, System.Security.Principal.TokenImpersonationLevel.Impersonation))
            {
                pipeStream.Connect();
                PrintClientMessage("[Client] Pipe connection established");
                StreamWriter writer = new StreamWriter(pipeStream);
                writer.WriteLine(QueryType.GetSieve);
                writer.Flush();

                StreamReader reader = new StreamReader(pipeStream);
                var          tmp    = reader.ReadLine();
                PrintClientMessage(tmp);
                sieve = JsonConvert.DeserializeObject <Sieve>(tmp);
                pipeStream.Close();
                Thread.Sleep(4000);
            }
        }
Esempio n. 2
0
        public PipeServer()
        {
            int i;

            Thread[] servers = new Thread[numberOfThreads];
            Console.WriteLine("\n*** Named pipe server started ***\n");
            Console.WriteLine("Waiting for client connect...\n");
            int   blockSize = (int)Math.Sqrt(N);
            Sieve sieve     = new Sieve(blockSize);

            sieve.blockSize = blockSize;

            sieveJson = JsonConvert.SerializeObject(sieve);

            for (i = 0; i < numberOfThreads; i++)
            {
                servers[i] = new Thread(ServerThread);
                servers[i].Start();
            }

            Thread.Sleep(250);

            while (i > 0)
            {
                for (int j = 0; j < numberOfThreads; j++)
                {
                    if (servers[j] != null)
                    {
                        if (servers[j].Join(250))
                        {
                            PrintServerMessage($"Thread[{servers[j].ManagedThreadId}] finished.");
                            servers[j] = null;
                            i--;    // decrement the thread watch count
                        }
                    }
                }
            }
            Console.WriteLine("\nServer threads exhausted, exiting.");
        }