1c1b46325SWalter Erquinigo //===-- TraceExporter.cpp -------------------------------------------------===//
2c1b46325SWalter Erquinigo //
3c1b46325SWalter Erquinigo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4c1b46325SWalter Erquinigo // See https://llvm.org/LICENSE.txt for license information.
5c1b46325SWalter Erquinigo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c1b46325SWalter Erquinigo //
7c1b46325SWalter Erquinigo //===----------------------------------------------------------------------===//
8c1b46325SWalter Erquinigo 
9c1b46325SWalter Erquinigo #include "lldb/Target/TraceExporter.h"
10c1b46325SWalter Erquinigo 
11c1b46325SWalter Erquinigo #include "lldb/Core/PluginManager.h"
12c1b46325SWalter Erquinigo 
13c1b46325SWalter Erquinigo using namespace lldb;
14c1b46325SWalter Erquinigo using namespace lldb_private;
15c1b46325SWalter Erquinigo using namespace llvm;
16c1b46325SWalter Erquinigo 
createInvalidPlugInError(StringRef plugin_name)17c1b46325SWalter Erquinigo static Error createInvalidPlugInError(StringRef plugin_name) {
18c1b46325SWalter Erquinigo   return createStringError(
19c1b46325SWalter Erquinigo       std::errc::invalid_argument,
20c1b46325SWalter Erquinigo       "no trace expoter plug-in matches the specified type: \"%s\"",
21c1b46325SWalter Erquinigo       plugin_name.data());
22c1b46325SWalter Erquinigo }
23c1b46325SWalter Erquinigo 
24c1b46325SWalter Erquinigo Expected<lldb::TraceExporterUP>
FindPlugin(llvm::StringRef name)25*a3942318SPavel Labath TraceExporter::FindPlugin(llvm::StringRef name) {
26c1b46325SWalter Erquinigo   if (auto create_callback =
27c1b46325SWalter Erquinigo           PluginManager::GetTraceExporterCreateCallback(name))
28c1b46325SWalter Erquinigo     return create_callback();
29c1b46325SWalter Erquinigo 
30*a3942318SPavel Labath   return createInvalidPlugInError(name);
31c1b46325SWalter Erquinigo }
32