You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb Johan.Berg, Catalin.Dragoiu [FYI] Martin.Ridgers [CL 29280230 by ionut matasaru in ue5-main branch]
76 lines
1.5 KiB
C++
76 lines
1.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Io.h"
|
|
#include "Trace/DataStream.h"
|
|
#include "Trace/StoreClient.h"
|
|
|
|
namespace UE
|
|
{
|
|
namespace TraceAnalyzer
|
|
{
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
struct FFileDataStream : public UE::Trace::IInDataStream
|
|
{
|
|
~FFileDataStream()
|
|
{
|
|
CloseFile(Handle);
|
|
}
|
|
|
|
virtual int32 Read(void* Data, uint32 Size) override
|
|
{
|
|
return FileRead(Handle, Data, Size);
|
|
}
|
|
|
|
FileHandle Handle;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
inline TUniquePtr<UE::Trace::IInDataStream> GetDataStream(int ArgC, TCHAR const* const* ArgV)
|
|
{
|
|
FileHandle Input = -1;
|
|
|
|
if (ArgC < 2)
|
|
{
|
|
FileHandle StdIn = GetStdIn();
|
|
if (!IsTty(StdIn))
|
|
{
|
|
Input = StdIn;
|
|
}
|
|
}
|
|
else if (ArgC != 3)
|
|
{
|
|
Input = OpenFile(ArgV[1], false);
|
|
}
|
|
|
|
if (Input != -1)
|
|
{
|
|
FFileDataStream* Stream = new FFileDataStream();
|
|
Stream->Handle = Input;
|
|
return TUniquePtr<UE::Trace::IInDataStream>(Stream);
|
|
}
|
|
|
|
if (ArgC != 3)
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
uint32 StorePort = FCString::Strtoui64(ArgV[1], nullptr, 10);
|
|
if (UE::Trace::FStoreClient* StoreClient = UE::Trace::FStoreClient::Connect(TEXT("127.0.0.1"), StorePort))
|
|
{
|
|
uint32 TraceId = FCString::Strtoui64(ArgV[2], nullptr, 10);
|
|
return StoreClient->ReadTrace(TraceId);
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
} // namespace TraceAnalyzer
|
|
} // namespace UE
|