This reduces non-unity build time by ~2% and build size by ~0.5%.
This PR is a 'clean' version of #6199 updated to latest development Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com>
This commit is contained in:
@@ -100,7 +100,7 @@ namespace AZ::IO
|
||||
|
||||
void QueueReadRequest(FileRequest* request)
|
||||
{
|
||||
auto data = AZStd::get_if<FileRequest::ReadData>(&request->GetCommand());
|
||||
auto data = AZStd::get_if<Requests::ReadData>(&request->GetCommand());
|
||||
if (data)
|
||||
{
|
||||
if (m_fakeFileFound)
|
||||
@@ -122,15 +122,15 @@ namespace AZ::IO
|
||||
m_context->MarkRequestAsCompleted(request);
|
||||
}
|
||||
else if (
|
||||
AZStd::holds_alternative<FileRequest::FlushData>(request->GetCommand()) ||
|
||||
AZStd::holds_alternative<FileRequest::FlushAllData>(request->GetCommand()))
|
||||
AZStd::holds_alternative<Requests::FlushData>(request->GetCommand()) ||
|
||||
AZStd::holds_alternative<Requests::FlushAllData>(request->GetCommand()))
|
||||
{
|
||||
request->SetStatus(IStreamerTypes::RequestStatus::Completed);
|
||||
m_context->MarkRequestAsCompleted(request);
|
||||
}
|
||||
else if (AZStd::holds_alternative<FileRequest::FileMetaDataRetrievalData>(request->GetCommand()))
|
||||
else if (AZStd::holds_alternative<Requests::FileMetaDataRetrievalData>(request->GetCommand()))
|
||||
{
|
||||
auto& data2 = AZStd::get<FileRequest::FileMetaDataRetrievalData>(request->GetCommand());
|
||||
auto& data2 = AZStd::get<Requests::FileMetaDataRetrievalData>(request->GetCommand());
|
||||
data2.m_found = m_fakeFileFound;
|
||||
data2.m_fileSize = m_fakeFileLength;
|
||||
request->SetStatus(m_fakeFileFound ? IStreamerTypes::RequestStatus::Completed : IStreamerTypes::RequestStatus::Failed);
|
||||
@@ -158,16 +158,16 @@ namespace AZ::IO
|
||||
|
||||
void QueueCanceledReadRequest(FileRequest* request)
|
||||
{
|
||||
auto data = AZStd::get_if<FileRequest::ReadData>(&request->GetCommand());
|
||||
auto data = AZStd::get_if<Requests::ReadData>(&request->GetCommand());
|
||||
if (data)
|
||||
{
|
||||
ReadFile(data->m_output, data->m_path, data->m_offset, data->m_size);
|
||||
request->SetStatus(IStreamerTypes::RequestStatus::Canceled);
|
||||
m_context->MarkRequestAsCompleted(request);
|
||||
}
|
||||
else if (AZStd::holds_alternative<FileRequest::FileMetaDataRetrievalData>(request->GetCommand()))
|
||||
else if (AZStd::holds_alternative<Requests::FileMetaDataRetrievalData>(request->GetCommand()))
|
||||
{
|
||||
auto& data2 = AZStd::get<FileRequest::FileMetaDataRetrievalData>(request->GetCommand());
|
||||
auto& data2 = AZStd::get<Requests::FileMetaDataRetrievalData>(request->GetCommand());
|
||||
data2.m_found = true;
|
||||
data2.m_fileSize = m_fakeFileLength;
|
||||
request->SetStatus(IStreamerTypes::RequestStatus::Completed);
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace AZ::IO
|
||||
|
||||
void PrepareReadRequest(FileRequest* request)
|
||||
{
|
||||
auto data = AZStd::get_if<FileRequest::ReadData>(&request->GetCommand());
|
||||
auto data = AZStd::get_if<Requests::ReadData>(&request->GetCommand());
|
||||
ASSERT_NE(nullptr, data);
|
||||
|
||||
u64 size = data->m_size >> 2;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include <AzCore/IO/IStreamer.h>
|
||||
#include <AzCore/IO/Streamer/FileRequest.h>
|
||||
|
||||
using namespace AZ::IO;
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ namespace AZ::IO
|
||||
{
|
||||
EXPECT_EQ(subRequests[i]->GetParent(), readRequest);
|
||||
|
||||
FileRequest::ReadData* data = AZStd::get_if<FileRequest::ReadData>(&subRequests[i]->GetCommand());
|
||||
Requests::ReadData* data = AZStd::get_if<Requests::ReadData>(&subRequests[i]->GetCommand());
|
||||
ASSERT_NE(nullptr, data);
|
||||
EXPECT_EQ(SplitSize, data->m_size);
|
||||
EXPECT_EQ(SplitSize * i, data->m_offset);
|
||||
@@ -210,7 +210,7 @@ namespace AZ::IO
|
||||
{
|
||||
EXPECT_EQ(subRequests[i]->GetParent(), readRequest);
|
||||
|
||||
FileRequest::ReadData* data = AZStd::get_if<FileRequest::ReadData>(&subRequests[i]->GetCommand());
|
||||
Requests::ReadData* data = AZStd::get_if<Requests::ReadData>(&subRequests[i]->GetCommand());
|
||||
ASSERT_NE(nullptr, data);
|
||||
EXPECT_EQ(SplitSize, data->m_size);
|
||||
EXPECT_EQ(SplitSize * i, data->m_offset);
|
||||
@@ -230,7 +230,7 @@ namespace AZ::IO
|
||||
{
|
||||
EXPECT_EQ(subRequests[i]->GetParent(), readRequest);
|
||||
|
||||
FileRequest::ReadData* data = AZStd::get_if<FileRequest::ReadData>(&subRequests[i]->GetCommand());
|
||||
Requests::ReadData* data = AZStd::get_if<Requests::ReadData>(&subRequests[i]->GetCommand());
|
||||
ASSERT_NE(nullptr, data);
|
||||
EXPECT_EQ(SplitSize, data->m_size);
|
||||
EXPECT_EQ(SplitSize * (batchSize + i), data->m_offset);
|
||||
@@ -265,7 +265,7 @@ namespace AZ::IO
|
||||
m_readSplitter->QueueRequest(readRequest);
|
||||
|
||||
ASSERT_NE(nullptr, subRequest);
|
||||
FileRequest::ReadData* data = AZStd::get_if<FileRequest::ReadData>(&subRequest->GetCommand());
|
||||
Requests::ReadData* data = AZStd::get_if<Requests::ReadData>(&subRequest->GetCommand());
|
||||
EXPECT_NE(buffer, data->m_output);
|
||||
EXPECT_EQ(readSize, data->m_size);
|
||||
EXPECT_EQ(0, data->m_offset);
|
||||
@@ -311,7 +311,7 @@ namespace AZ::IO
|
||||
m_readSplitter->QueueRequest(readRequest);
|
||||
|
||||
ASSERT_NE(nullptr, subRequest);
|
||||
FileRequest::ReadData* data = AZStd::get_if<FileRequest::ReadData>(&subRequest->GetCommand());
|
||||
Requests::ReadData* data = AZStd::get_if<Requests::ReadData>(&subRequest->GetCommand());
|
||||
EXPECT_NE(buffer, data->m_output);
|
||||
EXPECT_EQ(readSize + offsetAdjustment, data->m_size);
|
||||
EXPECT_EQ(0, data->m_offset);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <AzCore/Casting/lossy_cast.h>
|
||||
#include <AzCore/IO/Streamer/Streamer.h>
|
||||
#include <AzCore/IO/Streamer/Scheduler.h>
|
||||
#include <AzCore/IO/Streamer/FileRequest.h>
|
||||
#include <AzCore/std/parallel/atomic.h>
|
||||
#include <AzCore/std/parallel/binary_semaphore.h>
|
||||
#include <AzCore/std/smart_ptr/make_shared.h>
|
||||
@@ -86,7 +87,7 @@ namespace AZ::IO
|
||||
.WillOnce([this](FileRequest* request)
|
||||
{
|
||||
AZ_Assert(m_streamerContext, "AZ::IO::Streamer is not ready to process requests.");
|
||||
auto readData = AZStd::get_if<FileRequest::ReadRequestData>(&request->GetCommand());
|
||||
auto readData = AZStd::get_if<Requests::ReadRequestData>(&request->GetCommand());
|
||||
AZ_Assert(readData, "Test didn't pass in the correct request.");
|
||||
FileRequest* read = m_streamerContext->GetNewInternalRequest();
|
||||
read->CreateRead(request, readData->m_output, readData->m_outputSize, readData->m_path,
|
||||
@@ -99,7 +100,7 @@ namespace AZ::IO
|
||||
.WillOnce([this](FileRequest* request)
|
||||
{
|
||||
AZ_Assert(m_streamerContext, "AZ::IO::Streamer is not ready to process requests.");
|
||||
auto readData = AZStd::get_if<FileRequest::ReadData>(&request->GetCommand());
|
||||
auto readData = AZStd::get_if<Requests::ReadData>(&request->GetCommand());
|
||||
AZ_Assert(readData, "Test didn't pass in the correct request.");
|
||||
auto output = reinterpret_cast<uint8_t*>(readData->m_output);
|
||||
AZ_Assert(output != nullptr, "Output buffer has not been set.");
|
||||
@@ -304,7 +305,7 @@ namespace AZ::IO
|
||||
EXPECT_CALL(*m_mock, QueueRequest(_)).Times(1)
|
||||
.WillOnce(Invoke([this](FileRequest* request)
|
||||
{
|
||||
auto* read = request->GetCommandFromChain<FileRequest::ReadRequestData>();
|
||||
auto* read = request->GetCommandFromChain<Requests::ReadRequestData>();
|
||||
ASSERT_NE(nullptr, read);
|
||||
EXPECT_LT(read->m_deadline, FileRequest::s_noDeadlineTime);
|
||||
EXPECT_EQ(read->m_priority, IStreamerTypes::s_priorityHighest);
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <limits>
|
||||
#include <AzCore/IO/IStreamerTypes.h>
|
||||
#include <AzCore/IO/Streamer/FileRequest.h>
|
||||
#include <AzCore/IO/Streamer/StreamerContext.h>
|
||||
#include <AzCore/IO/Streamer/StreamStackEntry.h>
|
||||
#include <AzCore/std/smart_ptr/unique_ptr.h>
|
||||
|
||||
Reference in New Issue
Block a user