Files
UnrealEngineUWP/Engine/Source/Developer/TraceAnalysis/Private/DataStream.cpp
Stefan Boberg 8607ecb30d Copying //UE4/Dev-Core to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 6815521 by Stefan Boberg in Main branch]
2019-06-03 15:32:00 -04:00

86 lines
1.3 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "DataStream.h"
#include "GenericPlatform/GenericPlatformFile.h"
namespace Trace
{
FFileStream::FFileStream(const TCHAR* InFilePath)
: FilePath(InFilePath)
{
OpenFileInternal();
}
FFileStream::~FFileStream()
{
delete Inner;
}
int32 FFileStream::Read(void* Data, uint32 Size)
{
if (!Inner)
{
return 0;
}
uint64 Remaining = End - Cursor;
if (Remaining == 0)
{
return 0;
}
uint64 Size64 = Size;
Size64 = (Remaining < Size64) ? Remaining : Size64;
if (!Inner->Read((uint8*)Data, Size64))
{
return 0;
}
Cursor += Size64;
return int32(Size64);
}
void FFileStream::UpdateFileSize()
{
delete Inner;
OpenFileInternal();
if (Inner)
{
Inner->Seek(Cursor);
}
}
void FFileStream::OpenFileInternal()
{
IPlatformFile& FileSystem = IPlatformFile::GetPlatformPhysical();
Inner = FileSystem.OpenRead(*FilePath, true);
if (Inner)
{
End = Inner->Size();
}
}
FStreamReader::FStreamReader(IInDataStream& InDataStream)
: DataStream(InDataStream)
{
Buffer = new uint8[BufferSize];
}
FStreamReader::~FStreamReader()
{
delete[] Buffer;
}
IInDataStream* DataStream_ReadFile(const TCHAR* FilePath)
{
IPlatformFile& FileSystem = IPlatformFile::GetPlatformPhysical();
if (!FileSystem.FileExists(FilePath))
{
return nullptr;
}
return new FFileStream(FilePath);
}
}