You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2855309 on 2016/02/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2
GC Cluster improvements:
- Moved cluster creation from PostLoad to after the entire package has been loaded to make sure all referenced objects are accounted for
- Added better support for objects that can't be added to a cluster for some reason (lazy loaded referenced etc)
- Added -gcnoclusters option to 'obj list' to list all GC objects excluding objects in clusters
- Reference chain search will now print info on clusters
Change 2854937 on 2016/02/03 by Steve.Robb@Dev-Core
Pool headers now contain the small block size and lookups are done using that.
Size->table array is now one-based indexed to allow allocations of the maximum block size (32768) to be binned as expected.
Misc refactors.
Change 2851056 on 2016/02/01 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2
Disregard for GC improvements: added the ability to re-open disregard for GC set at any time and keep adding objects to it.
+ Maybe fixed startup packages loading code: load startup packages AFTER initial moduels have been loaded, don't use the seek free flag.
Change 2848788 on 2016/01/29 by Steve.Robb@Dev-Core
ALIGNOF now supports abstract types.
Change 2852323 on 2016/02/02 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
GC Clusters: Making sure VerifyClusterAssumptions catches all cases:
- Invalid objects in GC
- Objects from other clusters that don't have their parent cluster referenced by the source cluster
Change 2846860 on 2016/01/28 by Chris.Wood@Chris.Wood.StreamB
Added extra debug info to error messages sent back in the response from the AddCrash method
[OPP-4995] - Crash reports are not appearing for Portal Main branch
Change 2846864 on 2016/01/28 by Chris.Wood@Chris.Wood.StreamB
Added retry to AddCrash web requests due to unexplained missing payloads in some crashes
[OPP-4995] - Crash reports are not appearing for Portal Main branch
Change 2846875 on 2016/01/28 by Richard.Fawcett@Richard.Fawcett_G5766_Main
Ensure that streams are properly closed when sending and receiving data in SimpleWebRequest
This is to resolve an intermittent issue whereby CrashReporterWebsite sometimes receives no payload on an HTTP POST request from CrashReportProcessor. This could be consistent with the request stream not being closed and flushed before the HTTP request is sent. MSDN documentation for GetRequestStream states "You must call the Stream.Close method to close the stream and release the connection for reuse. Failure to close the stream causes your application to run out of connections." Note that Close() is automatically called on a Stream during disposal, and Dispose() is automatically called when exiting the scope of a using statement.
https://msdn.microsoft.com/en-us/library/d4cek6cc(v=vs.110).aspx
#jira OPP-4995 - Crash reports are not appearing for Portal Main branch
Change 2847012 on 2016/01/28 by Steve.Robb@Dev-Core
Allocations with alignment > OSPageSize are now illegal.
Removal of trailing pool support.
Change 2847106 on 2016/01/28 by Steve.Robb@Dev-Core
AllocateBlockFromPool inlined and redundancy removed.
Misc tidy-ups.
Change 2849028 on 2016/01/29 by Steve.Robb@Dev-Core
TIsClass fix for union types.
Change 2849039 on 2016/01/29 by Steve.Robb@Dev-Core
Basic custom deleter support for TUniquePtr.
Change 2850853 on 2016/02/01 by Steven.Hutton@steven.hutton-CrashReporter
Added per branch filtering for Reports output page
Change 2851035 on 2016/02/01 by Chris.Wood@Chris.Wood.StreamB
Generating Platform and Platform Variant strings in the Crash Report Process to pass to the MDD
[OPP-4792] - Crash reports not appearing for launcher on Windows 32-bit OS
Change 2853124 on 2016/02/02 by Joe.Graf@joe.graf_T6736_Dev-Core
Changed crash reporter to respect command line parameter filtering when that is enabled via the project define (UECORE-318)
Change 2853960 on 2016/02/03 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Limiting the size of UObject Array for programs.
Change 2855582 on 2016/02/04 by Steve.Robb@Dev-Core
Revert to MallocBinned for non-Windows and non-PS4 platforms, as it requires a 64K page size.
Change 2856837 on 2016/02/05 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2
Changing FUObjectItem::ThisThreadAtomicallyClearedFlag to better support changes to multiple different flags from different threads. Made sure NoStrongReference is also cleared atomically.
Change 2857113 on 2016/02/05 by Steve.Robb@Dev-Core
Exhausted check moved out of Allocate function.
Change 2858600 on 2016/02/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Preventing async loading suspended log spam in the editor.
#jira UE-26486
Change 2858700 on 2016/02/08 by Steve.Robb@Dev-Core
Code for short block support.
Change 2859112 on 2016/02/08 by Steve.Robb@Dev-Core
Array of pool table pointers changed to array of indices.
Change 2859138 on 2016/02/08 by Steve.Robb@Dev-Core
Index map moved into a global.
#lockdown Nick.Penwarden
[CL 2860061 by Robert Manuszewski in Main branch]
127 lines
3.8 KiB
C#
127 lines
3.8 KiB
C#
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
|
|
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Text;
|
|
|
|
namespace Tools.DotNETCommon.SimpleWebRequest
|
|
{
|
|
/// <summary>
|
|
/// A class to make simple Xml web requests to return a string.
|
|
/// </summary>
|
|
public class SimpleWebRequest
|
|
{
|
|
/// <summary>
|
|
/// Default constructor.
|
|
/// </summary>
|
|
public SimpleWebRequest()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create an HttpWebRequest with an optional Xml payload.
|
|
/// </summary>
|
|
/// <param name="WebRequestString">The URL and parameters of the web request.</param>
|
|
/// <param name="Payload">The Xml data to attached to request, or null.</param>
|
|
/// <returns>A valid HttpWebRequest, or null for any failure.</returns>
|
|
/// <remarks>This uses the POST method with default credentials and a content type of 'text/xml'.</remarks>
|
|
static public HttpWebRequest CreateWebRequest( string WebRequestString, string Payload )
|
|
{
|
|
HttpWebRequest Request = null;
|
|
try
|
|
{
|
|
Request = ( HttpWebRequest )WebRequest.Create( WebRequestString );
|
|
Request.Method = "POST";
|
|
Request.UseDefaultCredentials = true;
|
|
Request.SendChunked = false;
|
|
|
|
if( Payload != null )
|
|
{
|
|
byte[] Buffer = Encoding.UTF8.GetBytes( Payload );
|
|
Request.ContentType = "text/xml";
|
|
Request.ContentLength = Buffer.Length;
|
|
using (Stream RequestStream = Request.GetRequestStream())
|
|
{
|
|
RequestStream.Write(Buffer, 0, Buffer.Length);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Request.ContentLength = 0;
|
|
}
|
|
}
|
|
catch( Exception Ex )
|
|
{
|
|
Debug.WriteLine( "Exception in CreateRequest: " + Ex.Message );
|
|
Request = null;
|
|
}
|
|
|
|
return Request;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get a string response from an HttpWebRequest.
|
|
/// </summary>
|
|
/// <param name="Request">A valid HttpWebRequest.</param>
|
|
/// <returns>The string returned from the web request, or an empty string if there was an error.</returns>
|
|
/// <remarks>The response status code needs to be 'OK' for results to be processed. Also, this is designed for simple queries,
|
|
/// so there is an arbitrary 1024 byte limit to the response size.</remarks>
|
|
static public string GetWebResponse( HttpWebRequest Request )
|
|
{
|
|
string ResponseString = "";
|
|
|
|
try
|
|
{
|
|
using (HttpWebResponse WebResponse = (HttpWebResponse)Request.GetResponse())
|
|
{
|
|
// Simple size check to prevent exploits
|
|
if (WebResponse.StatusCode == HttpStatusCode.OK && WebResponse.ContentLength < 4096)
|
|
{
|
|
// Process the response
|
|
using (Stream ResponseStream = WebResponse.GetResponseStream())
|
|
{
|
|
byte[] RawResponse = new byte[WebResponse.ContentLength];
|
|
ResponseStream.Read(RawResponse, 0, (int)WebResponse.ContentLength);
|
|
ResponseStream.Close();
|
|
|
|
ResponseString = Encoding.UTF8.GetString(RawResponse);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch( Exception Ex )
|
|
{
|
|
Debug.WriteLine( "Exception in GetWebResponse: " + Ex.Message );
|
|
ResponseString = "";
|
|
}
|
|
|
|
return ResponseString;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Send a web request to a web service and return a response string.
|
|
/// </summary>
|
|
/// <param name="WebRequestString">The URL of the request with parameters.</param>
|
|
/// <param name="Payload">The Xml payload of the request (can be null).</param>
|
|
/// <returns>A string returned from the web request, or an empty string if there was any error.</returns>
|
|
/// <remarks>This calls CreateWebRequest and GetWebResponse internally.</remarks>
|
|
static public string GetWebServiceResponse( string WebRequestString, string Payload )
|
|
{
|
|
string ResponseString = "";
|
|
|
|
if( WebRequestString != null )
|
|
{
|
|
HttpWebRequest Request = CreateWebRequest( WebRequestString, Payload );
|
|
if( Request != null )
|
|
{
|
|
ResponseString = GetWebResponse( Request );
|
|
}
|
|
}
|
|
|
|
return ResponseString;
|
|
}
|
|
}
|
|
}
|