Ejemplo n.º 1
0
        private void ListenThread()
        {
            try
            {
                logger.Log(LogLevel.Info, "Listen Thread Started");
                while (true)
                {
                    Socket remoteSock = listenSocket.Accept();
                    if (remoteSock != null)
                    {
                        DICOMConnection conn = new DICOMConnection(logger, this._connectionCounter.ToString(), VerboseLogging);

                        conn.AssociationRequested += new DICOMConnection.BasicConnectionHandler(conn_AssociationRequested);
                        conn.CommandReceived      += new DICOMConnection.CommandHandler(conn_CommandReceived);
                        conn.ConnectionClosed     += new DICOMConnection.BasicConnectionHandler(conn_ConnectionClosed);

                        conn.SupportedAbstractSyntaxes.Add(AbstractSyntaxes.VerificationSOPClass);
                        foreach (AbstractSyntax syntax in AbstractSyntaxes.StorageSyntaxes)
                        {
                            conn.SupportedAbstractSyntaxes.Add(syntax);
                        }
                        foreach (AbstractSyntax syntax in AbstractSyntaxes.QueryRetrieveSyntaxes)
                        {
                            conn.SupportedAbstractSyntaxes.Add(syntax);
                        }

                        conn.HandleSocket(remoteSock);

                        this._connections.Add(conn);
                        this._connectionCounter++;
                    }
                }
            }
            catch (ThreadAbortException)
            {
                logger.Log(LogLevel.Info, "Listen Thread Stopped");
            }
            catch (SocketException)
            {
                logger.Log(LogLevel.Info, "Listen Thread Stopped");
            }
        }