xref: /freebsd/contrib/llvm-project/llvm/lib/Telemetry/Telemetry.cpp (revision 770cf0a5f02dc8983a89c6568d741fbc25baa999)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 ///
9 /// \file
10 /// This file provides the basic framework for Telemetry.
11 /// Refer to its documentation at llvm/docs/Telemetry.rst for more details.
12 //===---------------------------------------------------------------------===//
13 
14 #include "llvm/Telemetry/Telemetry.h"
15 
16 namespace llvm {
17 namespace telemetry {
18 
19 void TelemetryInfo::serialize(Serializer &serializer) const {
20   serializer.write("SessionId", SessionId);
21 }
22 
23 Error Manager::dispatch(TelemetryInfo *Entry) {
24   assert(Config::BuildTimeEnableTelemetry &&
25          "Telemetry should have been enabled");
26   if (Error Err = preDispatch(Entry))
27     return Err;
28 
29   Error AllErrs = Error::success();
30   for (auto &Dest : Destinations) {
31     AllErrs = joinErrors(std::move(AllErrs), Dest->receiveEntry(Entry));
32   }
33   return AllErrs;
34 }
35 
36 void Manager::addDestination(std::unique_ptr<Destination> Dest) {
37   Destinations.push_back(std::move(Dest));
38 }
39 
40 Error Manager::preDispatch(TelemetryInfo *Entry) { return Error::success(); }
41 
42 } // namespace telemetry
43 } // namespace llvm
44