Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Telemetry/Telemetry.cpp
213765 views
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
45