diff options
Diffstat (limited to 'src/profiling/ProfilingConnectionFactory.cpp')
-rw-r--r-- | src/profiling/ProfilingConnectionFactory.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/profiling/ProfilingConnectionFactory.cpp b/src/profiling/ProfilingConnectionFactory.cpp index 759eb7a95e..4af81a024e 100644 --- a/src/profiling/ProfilingConnectionFactory.cpp +++ b/src/profiling/ProfilingConnectionFactory.cpp @@ -1,11 +1,13 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "ProfilingConnectionFactory.hpp" -#include "SocketProfilingConnection.hpp" + +#include "FileOnlyProfilingConnection.hpp" #include "ProfilingConnectionDumpToFileDecorator.hpp" +#include "SocketProfilingConnection.hpp" namespace armnn { @@ -16,19 +18,31 @@ namespace profiling std::unique_ptr<IProfilingConnection> ProfilingConnectionFactory::GetProfilingConnection( const Runtime::CreationOptions::ExternalProfilingOptions& options) const { - if ( !options.m_IncomingCaptureFile.empty() || !options.m_OutgoingCaptureFile.empty() ) + // We can create 3 different types of IProfilingConnection. + // 1: If no relevant options are specified then a SocketProfilingConnection is returned. + // 2: If both incoming and outgoing capture files are specified then a SocketProfilingConnection decorated by a + // ProfilingConnectionDumpToFileDecorator is returned. + // 3: If both incoming and outgoing capture files are specified and "file only" then a FileOnlyProfilingConnection + // decorated by a ProfilingConnectionDumpToFileDecorator is returned. + if ((!options.m_IncomingCaptureFile.empty() || !options.m_OutgoingCaptureFile.empty()) && !options.m_FileOnly) { - bool ignoreFailures = false; + // This is type 2. return std::make_unique<ProfilingConnectionDumpToFileDecorator>(std::make_unique<SocketProfilingConnection>(), - options, - ignoreFailures); + options); + } + else if ((!options.m_IncomingCaptureFile.empty() || !options.m_OutgoingCaptureFile.empty()) && options.m_FileOnly) + { + // This is type 3. + return std::make_unique<ProfilingConnectionDumpToFileDecorator>( + std::make_unique<FileOnlyProfilingConnection>(options), options); } else { + // This is type 1. return std::make_unique<SocketProfilingConnection>(); } } -} // namespace profiling +} // namespace profiling -} // namespace armnn +} // namespace armnn |