示例#1
0
        void TestService(string dicomServiceMessageGuid, string testType, string successMessage)
        {
            string       message = string.Empty;
            string       errorMessage;
            string       serviceName  = string.Empty;
            DicomService dicomService = null;

            Messager.Caption = "DICOM Server";

            if (ServerState.Instance != null && ServerState.Instance.ServerService != null)
            {
                dicomService = ServerState.Instance.ServerService;
            }

            if (ServerState.Instance != null && ServerState.Instance.ServerService != null && !string.IsNullOrEmpty(ServerState.Instance.ServerService.ServiceName))
            {
                serviceName = ServerState.Instance.ServerService.ServiceName;
            }

            if (dicomService == null)
            {
                message = string.Format("{0} listening Service must be running to {1}.", serviceName, testType);
                Messager.ShowWarning(this, message);
                return;
            }
            DicomServiceTesterResult result = DicomServiceTester.SendDicomServiceMessage(dicomService, dicomServiceMessageGuid, out errorMessage);

            switch (result)
            {
            case DicomServiceTesterResult.Success:
                message = string.Format("{0} {1}", serviceName, successMessage);
                Log(message);
                break;

            case DicomServiceTesterResult.ErrorServiceIsNull:
                message = string.Format("Listening Service has not been created.");
                break;

            case DicomServiceTesterResult.ErrorServiceNotRunning:
                message = string.Format("{0} listening Service must be running to {1}.", serviceName, testType);
                break;

            case DicomServiceTesterResult.ErrorServiceCannotAccessDatabase:
                message = string.Format("{0} listening Service cannot access database. {1}", serviceName, errorMessage);
                break;

            case DicomServiceTesterResult.ErrorServiceNotResponding:
                message = string.Format("Unable to communicate with {0} listening service.", serviceName);
                break;
            }

            if (result == DicomServiceTesterResult.Success)
            {
                Messager.ShowInformation(this, message);
            }
            else
            {
                Messager.ShowWarning(this, message);
            }
        }
示例#2
0
        public static DicomServiceTesterResult SendDicomServiceMessage(DicomService dicomService, string dicomServiceMessageGuid, out string errorMessage)
        {
            DicomServiceTesterResult result = DicomServiceTesterResult.Success;

            errorMessage = string.Empty;

            _serverService = dicomService;
            if (_serverService == null)
            {
                result = DicomServiceTesterResult.ErrorServiceIsNull;
            }
            else if (_serverService.Status != ServiceControllerStatus.Running)
            {
                result = DicomServiceTesterResult.ErrorServiceNotRunning;
            }
            else
            {
                _serverService.Message -= new EventHandler <MessageEventArgs>(_storageServerService_Message);
                _serverService.Message += new EventHandler <MessageEventArgs>(_storageServerService_Message);
                _serviceMessageReturned = false;
                _autoResetEvent.Reset();

                bool exceptionError = false;
                try
                {
                    _serverService.SendMessage(dicomServiceMessageGuid); // StorageAddinMessage.CrashDicomServer
                }
                catch (Exception ex)
                {
                    if (string.Compare("Service must be running", ex.Message, true) == 0)
                    {
                        result = DicomServiceTesterResult.ErrorServiceNotRunning;
                    }
                    else
                    {
                        result       = DicomServiceTesterResult.ErrorServiceCannotAccessDatabase;
                        errorMessage = ex.Message;
                    }
                    exceptionError = true;
                }

                if (exceptionError)
                {
                    return(result);
                }

                _autoResetEvent.WaitOne(WaitMilliseconds);
                if (_serviceMessageReturned)
                {
                    if (_serviceMessage.Success)
                    {
                        result = DicomServiceTesterResult.Success;
                    }
                    else
                    {
                        errorMessage = _serviceMessage.Data[0] as string;
                        result       = DicomServiceTesterResult.ErrorServiceCannotAccessDatabase;
                    }
                }
                else
                {
                    result = DicomServiceTesterResult.ErrorServiceNotResponding;
                }
            }
            return(result);
        }