private void ProcessFileReceive(AsynchronousSocket socket, byte[] encryptedMessage) { socket.WriteFileReceive(encryptedMessage); BytesReceived += Socket.ReceiveBufferSize; if (ReceivedFileBlock != null) { ReceivedFileBlock.Invoke(this, new EventArgs()); } if (socket.FileBytesReceived >= encryptedFileSize) { isReceivingUpdate = false; byte[] encryptedData = receiveStream.ToArray(); byte[] decryptedData = srpClient.Decrypt(encryptedData); FileStream fileStream; if (!File.Exists(UpdateFileLocation)) { fileStream = new FileStream(UpdateFileLocation, FileMode.CreateNew, FileAccess.Write); } else { fileStream = new FileStream(UpdateFileLocation, FileMode.Truncate, FileAccess.Write); } fileStream.Write(decryptedData, 0, decryptedData.Length); fileStream.Flush(); fileStream.Close(); socket.EndFileReceive(); FileInfo fileInfo = new FileInfo(UpdateFileLocation); if (fileInfo.Length == UpdateFileSize) { wasUpdateCompleted = true; } socket.Disconnect(); } }
void socket_Disconnected(object sender, EventArgs e) { AsynchronousSocket socket = sender as AsynchronousSocket; if (socket.IsReceivingFile) { socket.EndFileReceive(); } if (Disconnected != null) { Disconnected.Invoke(this, new EventArgs()); } if (wasUpdateCompleted && (UpdateReceived != null)) { UpdateReceived.Invoke(this, new EventArgs()); } }
private void ProcessFileReceive(AsynchronousSocket socket, byte[] encryptedMessage) { socket.WriteFileReceive(encryptedMessage); bytesReceived += socket.ReceiveBufferSize; //if (ReceivedFileBlock != null) // ReceivedFileBlock.Invoke(this, new EventArgs()); if (socket.FileBytesReceived >= crashReportEncryptedSize) { isReceivingCrashReport = false; byte[] encryptedData = receiveStream.ToArray(); byte[] decryptedData = srpServer.Decrypt(encryptedData); Exception ex = (Exception)decryptedData.DeserializeObject(); if (ReceivedCrashException != null) { ReceivedCrashException.Invoke(this, new ExceptionEventArgs(ex)); } socket.EndFileReceive(); socket.Disconnect(); } }