Example #1
0
        /// <summary>
        /// Handle the Submit request completed response.
        /// </summary>
        /// <param name="response">Response output</param>
        private static void SubmitRequestCompleted(AsyncWebMethodResponse response)
        {
            if (response.Status == AsyncMethodState.Failed)
            {
                // failed
                response.Error = new Exception(String.Format(CultureInfo.InvariantCulture,
                                                             "SubmitHttpRequest failed. Status: {0}.",
                                                             response.StatusDescription));
            }

            string responseString = string.Empty;

            using (StreamReader reader = new StreamReader(response.Result))
            {
                responseString = reader.ReadToEnd();
            }
            response.Result.Close();

            string info = ExtractInfoSection(responseString);

            if (!String.IsNullOrEmpty(info))
            {
                int ridStart = info.IndexOf("RID = ", StringComparison.OrdinalIgnoreCase);
                if (ridStart >= 0)
                {
                    ridStart += "RID = ".Length;
                    int ridEnd = info.IndexOf('\n', ridStart);
                    if (ridEnd >= 0)
                    {
                        requestIdentifier = info.Substring(ridStart, ridEnd - ridStart);
                    }
                }
            }

            if (string.IsNullOrEmpty(requestIdentifier))
            {
                response.Error = new Exception(String.Format(CultureInfo.InvariantCulture,
                                                             "Failed to extract a requestIdentifier. Error: {0}.",
                                                             ExtractError(responseString)));
            }

            AutoResetEvent requestSubmitWait = response.State as AutoResetEvent;

            requestSubmitWait.Set();
        }
Example #2
0
        /// <summary>
        /// Handle the Submit request completed response.
        /// </summary>
        /// <param name="response">Response output</param>
        private static void RequestStatusCompleted(AsyncWebMethodResponse response)
        {
            AutoResetEvent requestStatusWait = response.State as AutoResetEvent;

            if (response.Status == AsyncMethodState.Failed)
            {
                // failure
                response.Result.Close();
                status.Status            = ServiceRequestStatus.Error;
                status.StatusInformation = response.StatusDescription;
                requestStatusWait.Set();
                return;
            }

            response.StatusDescription = string.Empty;

            string responseString = string.Empty;

            using (StreamReader reader = new StreamReader(response.Result))
            {
                responseString = reader.ReadToEnd();
            }
            response.Result.Close();

            string information = ExtractInfoSection(responseString);

            if (String.IsNullOrEmpty(information))
            {
                status.Status = ServiceRequestStatus.Error;
                // see if we got an error message
                string errorInformation = ExtractBlastErrorSection(responseString);
                if (string.IsNullOrEmpty(errorInformation))
                {
                    status.StatusInformation = "An unknown server error has occurred.";
                }
                else
                {
                    status.StatusInformation = errorInformation;
                }

                requestStatusWait.Set();
                return;
            }
            else
            {
                int statusStart = information.IndexOf("Status=", StringComparison.OrdinalIgnoreCase);
                if (statusStart >= 0)
                {
                    statusStart += "Status=".Length;
                    int statusEnd = information.IndexOf('\n', statusStart);
                    if (statusEnd >= 0)
                    {
                        response.StatusDescription = information.Substring(statusStart, statusEnd - statusStart);
                    }
                }
            }

            if (response.StatusDescription == "WAITING")
            {
                status.Status = ServiceRequestStatus.Waiting;
                requestStatusWait.Set();
                return;
            }
            else if (response.StatusDescription == "READY")
            {
                status.Status = ServiceRequestStatus.Ready;
                requestStatusWait.Set();
                return;
            }

            status.Status            = ServiceRequestStatus.Error;
            status.StatusInformation = response.StatusDescription;
            requestStatusWait.Set();
        }