ArmNN
 20.02
ProfilingConnectionFactory.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
11 
12 namespace armnn
13 {
14 
15 namespace profiling
16 {
17 
18 std::unique_ptr<IProfilingConnection> ProfilingConnectionFactory::GetProfilingConnection(
19  const Runtime::CreationOptions::ExternalProfilingOptions& options) const
20 {
21  // We can create 3 different types of IProfilingConnection.
22  // 1: If no relevant options are specified then a SocketProfilingConnection is returned.
23  // 2: If both incoming and outgoing capture files are specified then a SocketProfilingConnection decorated by a
24  // ProfilingConnectionDumpToFileDecorator is returned.
25  // 3: If both incoming and outgoing capture files are specified and "file only" then a FileOnlyProfilingConnection
26  // decorated by a ProfilingConnectionDumpToFileDecorator is returned.
27  if ((!options.m_IncomingCaptureFile.empty() || !options.m_OutgoingCaptureFile.empty()) && !options.m_FileOnly)
28  {
29  // This is type 2.
30  return std::make_unique<ProfilingConnectionDumpToFileDecorator>(std::make_unique<SocketProfilingConnection>(),
31  options);
32  }
33  else if ((!options.m_IncomingCaptureFile.empty() || !options.m_OutgoingCaptureFile.empty()) && options.m_FileOnly)
34  {
35  // This is type 3.
36  return std::make_unique<ProfilingConnectionDumpToFileDecorator>(
37  std::make_unique<FileOnlyProfilingConnection>(options), options);
38  }
39  else
40  {
41  // This is type 1.
42  return std::make_unique<SocketProfilingConnection>();
43  }
44 }
45 
46 } // namespace profiling
47 
48 } // namespace armnn
Copyright (c) 2020 ARM Limited.
armnn::Runtime::CreationOptions::ExternalProfilingOptions options
IProfilingConnectionPtr GetProfilingConnection(const ExternalProfilingOptions &options) const override