/// <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(); }
/// <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(); }