internal static void SetResponses(ConnectionReturnResult returnResult) {
if (returnResult==null){
return;
}
GlobalLog.Print("ConnectionReturnResult#" + ValidationHelper.HashString(returnResult) + "::SetResponses() count=" + returnResult.m_Context.Count.ToString());
for (int i = 0; i < returnResult.m_Context.Count; i++)
{
try {
HttpWebRequest request = returnResult.m_Context[i].Request;
#if DEBUG
CoreResponseData coreResponseData = returnResult.m_Context[i].CoreResponse as CoreResponseData;
if (coreResponseData == null)
GlobalLog.DebugRemoveRequest(request);
#endif
request.SetAndOrProcessResponse(returnResult.m_Context[i].CoreResponse);
}
catch(Exception e) {
//ASYNCISSUE
// on error, with more than one callback need to queue others off to another thread
GlobalLog.Print("ConnectionReturnResult#" + ValidationHelper.HashString(returnResult) + "::Exception"+e);
returnResult.m_Context.RemoveRange(0,(i+1));
if (returnResult.m_Context.Count > 0)
{
ThreadPool.UnsafeQueueUserWorkItem(s_InvokeConnectionCallback, returnResult);
}
throw;
}
}
returnResult.m_Context.Clear();
}