private OperationStatus Poll(string pollingUrl)
{
int pollCount = 0;
OperationStatus operationStatus = null;
//start polling
while (pollCount != MaxRetryCount)
{
pollCount++;
var pollingWebRequest = CreateWebApiRequest(pollingUrl);
pollingWebRequest.Method = HttpMethod.Get.Method;
try
{
var polledWebResponse = (HttpWebResponse) pollingWebRequest.GetResponse();
using (var sr = new StreamReader(polledWebResponse.GetResponseStream()))
{
var jsonResponse = sr.ReadToEnd();
operationStatus = JsonConvert.DeserializeObject<OperationStatus>(jsonResponse);
if (operationStatus.Status != StatusCode.Pending)
return operationStatus;
}
Thread.Sleep(1000);
}
catch (WebException we)
{
throw CreateSchedulerException(we);
}
}
if (operationStatus != null && operationStatus.Status == StatusCode.Pending)
operationStatus.Status = StatusCode.TimeOut;
return operationStatus;
}