Ejemplo n.º 1
0
        private void ServerThreadStart(CountdownEvent signalledOnWaitingForConnection)
        {
            while (m_isAlive)
            {
                var pipeHandle = LowIntegrityPipeFactory.CreateLowIntegrityNamedPipe(m_defaultPipeName);
                var connection = new NamedPipeServerStream(PipeDirection.InOut, true, false, pipeHandle);
                if (signalledOnWaitingForConnection != null)
                {
                    signalledOnWaitingForConnection.Signal();
                    signalledOnWaitingForConnection = null;
                }
                connection.WaitForConnection();
                Logger.L(LoggerLevel.Info, "DSPEx Node got connection");

                var session = new DtpNodeSession(this, connection, DSPExNodeRole.Server);
                m_sessions.TryAdd(session);
            }
        }
Ejemplo n.º 2
0
        protected override void ThreadStart(CountdownEvent readySignal)
        {
            try {
                while (!CancellationToken.IsCancellationRequested)
                {
                    var pipeHandle = LowIntegrityPipeFactory.CreateLowIntegrityNamedPipe(pipeName);
                    var connection = new NamedPipeServerStream(PipeDirection.InOut, true, false, pipeHandle);
                    if (readySignal != null)
                    {
                        readySignal.Signal();
                        readySignal = null;
                    }
                    var asyncResult = connection.BeginWaitForConnection(ar => acceptThreadSynchronization.Release(1), null);
                    acceptThreadSynchronization.WaitOne();
                    Console.WriteLine("Past acceptThreadSynchronization!");

                    if (asyncResult.IsCompleted)
                    {
                        connection.EndWaitForConnection(asyncResult);

                        Logger.L(LoggerLevel.Info, "DSPEx Node got connection");

                        HandleAccept(connection);
                    }
                    else
                    {
                        connection.Dispose();
                        pipeHandle.Dispose();
                    }
                }
            } finally {
                if (readySignal != null)
                {
                    readySignal.Signal();
                }
            }
        }