
Details: - Previously, we used the LLVM_BUILD_TELEMETRY flag to control whether any Telemetry code will be built. This has proven to cause more nuisance to both users of the Telemetry and any further extension of it. (Eg., we needed to put #ifdef around caller/user code) - So the new approach is to: + Remove this flag and introduce LLVM_ENABLE_TELEMETRY which would be true by default. + If LLVM_ENABLE_TELEMETRY is set to FALSE (at buildtime), the library would still be built BUT Telemetry cannot be enabled. And no data can be collected. The benefit of this is that it simplifies user (and extension) code since we just need to put the check on Config::EnableTelemetry. Besides, the Telemetry library itself is very small, hence the additional code to be built would not cause any difference in build performance. --------- Co-authored-by: Pavel Labath <pavel@labath.sk>
44 lines
1.4 KiB
C++
44 lines
1.4 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
/// This file provides the basic framework for Telemetry.
|
|
/// Refer to its documentation at llvm/docs/Telemetry.rst for more details.
|
|
//===---------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Telemetry/Telemetry.h"
|
|
|
|
namespace llvm {
|
|
namespace telemetry {
|
|
|
|
void TelemetryInfo::serialize(Serializer &serializer) const {
|
|
serializer.write("SessionId", SessionId);
|
|
}
|
|
|
|
Error Manager::dispatch(TelemetryInfo *Entry) {
|
|
assert(Config::BuildTimeEnableTelemetry &&
|
|
"Telemetry should have been enabled");
|
|
if (Error Err = preDispatch(Entry))
|
|
return Err;
|
|
|
|
Error AllErrs = Error::success();
|
|
for (auto &Dest : Destinations) {
|
|
AllErrs = joinErrors(std::move(AllErrs), Dest->receiveEntry(Entry));
|
|
}
|
|
return AllErrs;
|
|
}
|
|
|
|
void Manager::addDestination(std::unique_ptr<Destination> Dest) {
|
|
Destinations.push_back(std::move(Dest));
|
|
}
|
|
|
|
Error Manager::preDispatch(TelemetryInfo *Entry) { return Error::success(); }
|
|
|
|
} // namespace telemetry
|
|
} // namespace llvm
|