FOnlineSubsystemImpl::FOnlineSubsystemImpl(FName InInstanceName) :
	InstanceName(InInstanceName),
	bForceDedicated(false),
	NamedInterfaces(nullptr)
{
	StartTicker();
}
void FCrashReportClient::RequestCloseWindow(const TSharedRef<SWindow>& Window)
{
	// Don't send the data.
	bSendData = false;

	// We may still processing minidump etc. so start the main ticker.
	StartTicker();
	bShouldWindowBeHidden = true;
}
FCrashReportClientUnattended::FCrashReportClientUnattended(const FString& Directory)
	: ReportDirectory(Directory)
	, Uploader(GServerIP)
{
	// Using GetCleanFilename to actually get directory leaf name
	Uploader.BeginUpload(FPaths::GetCleanFilename(ReportDirectory), FPlatformErrorReport(ReportDirectory));

	StartTicker();
}
FCrashReportClientUnattended::FCrashReportClientUnattended(const FPlatformErrorReport& ErrorReport)
	: Uploader(GServerIP)
{
	Uploader.BeginUpload(ErrorReport);

	// Prevent uploader waiting for a diagnosis file
	Uploader.LocalDiagnosisSkipped();

	StartTicker();
}
FCrashReportClientUnattended::FCrashReportClientUnattended(FPlatformErrorReport& InErrorReport)
	: ReceiverUploader(FCrashReportClientConfig::Get().GetReceiverAddress())
	, DataRouterUploader(FCrashReportClientConfig::Get().GetDataRouterURL())
	, ErrorReport(InErrorReport)
{
	ErrorReport.TryReadDiagnosticsFile();

	// Process the report synchronously
	ErrorReport.DiagnoseReport();

	// Update properties for the crash.
	ErrorReport.SetPrimaryCrashProperties( *FPrimaryCrashProperties::Get() );

	StartTicker();
}
void FCrashReportClient::StoreCommentAndUpload()
{
	// Write user's comment
	ErrorReport.SetUserComment( UserComment, FCrashReportClientConfig::Get().GetAllowToBeContacted() );
	StartTicker();
}
void FCrashReportClient::StoreCommentAndUpload()
{
	// Write user's comment
	ErrorReport.SetUserComment( UserComment );
	StartTicker();
}