private static void CompleteDownload(LocalStorageFileState state) { bool flag = true; LocalStorageAPI.s_log.LogDebug("Download completed for State={0}", new object[] { state }); HTTPHeader hTTPHeader = LocalStorageAPI.ParseHTTPHeader(state.FileData); if (hTTPHeader != null) { byte[] numArray = new byte[hTTPHeader.ContentLength]; Array.Copy(state.FileData, hTTPHeader.ContentStart, numArray, 0, hTTPHeader.ContentLength); if (LocalStorageAPI.ComputeSHA256(numArray) == state.CH.Sha256Digest) { flag = false; LocalStorageAPI.DecompressStateIfPossible(state, numArray); } else { LocalStorageAPI.s_log.LogWarning("Integrity check failed for State={0}", new object[] { state }); } } else { LocalStorageAPI.s_log.LogWarning("Parsinig of HTTP header failed for State={0}", new object[] { state }); } if (flag || state.FileData == null) { LocalStorageAPI.ExecuteFailedDownload(state); } else { LocalStorageAPI.ExecuteSucessfulDownload(state); } }
private static void ReceiveCallback(IAsyncResult ar) { LocalStorageFileState asyncState = (LocalStorageFileState)ar.AsyncState; try { LocalStorageAPI.s_log.LogDebug("ReceiveCallback called for State={0}", new object[] { asyncState }); int num = asyncState.Socket.EndReceive(ar); if (num <= 0) { LocalStorageAPI.CompleteDownload(asyncState); } else { int num1 = (asyncState.FileData != null ? (int)asyncState.FileData.Length : 0) + num; MemoryStream memoryStream = new MemoryStream(new byte[num1], 0, num1, true, true); if (asyncState.FileData != null) { memoryStream.Write(asyncState.FileData, 0, (int)asyncState.FileData.Length); } memoryStream.Write(asyncState.ReceiveBuffer, 0, num); asyncState.FileData = memoryStream.GetBuffer(); asyncState.Socket.BeginReceive(asyncState.ReceiveBuffer, 0, LocalStorageAPI.m_bufferSize, SocketFlags.None, new AsyncCallback(LocalStorageAPI.ReceiveCallback), asyncState); } } catch (Exception exception1) { Exception exception = exception1; LocalStorageAPI.s_log.LogWarning("EXCEPTION: {0}", new object[] { exception.Message }); asyncState.FailureMessage = exception.Message; LocalStorageAPI.ExecuteFailedDownload(asyncState); } }
private void DownloadFromDepot(LocalStorageFileState state) { string str = string.Format("{0}.depot.battle.net", state.CH.Region); LocalStorageAPI.s_log.LogDebug("Starting download from {0}", new object[] { str }); state.Connection.LogDebug = new Action <string>(LocalStorageAPI.s_log.LogDebug); state.Connection.LogWarning = new Action <string>(LocalStorageAPI.s_log.LogWarning); state.Connection.OnFailure = () => LocalStorageAPI.ExecuteFailedDownload(state); state.Connection.OnSuccess = () => LocalStorageAPI.ConnectCallback(state); state.Connection.Connect(str, this.DepotPort); }
private static void ReceiveCallback(IAsyncResult ar) { LocalStorageFileState localStorageFileState = (LocalStorageFileState)ar.get_AsyncState(); try { LocalStorageAPI.s_log.LogDebug("ReceiveCallback called for State={0}", new object[] { localStorageFileState }); int num = localStorageFileState.Socket.EndReceive(ar); if (num > 0) { int num2 = (localStorageFileState.FileData != null) ? localStorageFileState.FileData.Length : 0; int num3 = num2 + num; MemoryStream memoryStream = new MemoryStream(new byte[num3], 0, num3, true, true); if (localStorageFileState.FileData != null) { memoryStream.Write(localStorageFileState.FileData, 0, localStorageFileState.FileData.Length); } memoryStream.Write(localStorageFileState.ReceiveBuffer, 0, num); localStorageFileState.FileData = memoryStream.GetBuffer(); localStorageFileState.Socket.BeginReceive(localStorageFileState.ReceiveBuffer, 0, LocalStorageAPI.m_bufferSize, 0, new AsyncCallback(LocalStorageAPI.ReceiveCallback), localStorageFileState); } else { LocalStorageAPI.CompleteDownload(localStorageFileState); } } catch (Exception ex) { LocalStorageAPI.s_log.LogWarning("EXCEPTION: {0}", new object[] { ex.get_Message() }); localStorageFileState.FailureMessage = ex.get_Message(); LocalStorageAPI.ExecuteFailedDownload(localStorageFileState); } }