#include <memory>
#include <string>
#include <vector>
+#include <optional>
#include "ednsoptions.hh"
};
std::vector<uint8_t> makeEDNSTraceParentOption(const std::shared_ptr<Tracer>& tracer);
-bool addTraceparentEdnsOptionToPacketBuffer(PacketBuffer& origBuf, const std::shared_ptr<Tracer>& tracer, size_t qnameWireLength, size_t proxyProtocolPayloadSize, uint16_t traceparentOptionCode = EDNSOptionCode::TRACEPARENT, bool isTCP = false);
+bool addTraceparentEdnsOptionToPacketBuffer(PacketBuffer& origBuf, const std::shared_ptr<Tracer>& tracer, const size_t qnameWireLength, const size_t proxyProtocolPayloadSize, const uint16_t traceparentOptionCode = EDNSOptionCode::TRACEPARENT, const bool isTCP = false);
+
+/*
+ * @brief Use this to *maybe* get an Internal Kind Closer in the current scope
+ *
+ * @param tracer A shared_ptr to a Tracer, if it is a nullptr, the returned closer is a nullopt
+ * @param spanName The name of the span
+ */
+std::optional<pdns::trace::dnsdist::Tracer::Closer> getCloserForInternalSpan([[maybe_unused]] std::shared_ptr<pdns::trace::dnsdist::Tracer>& tracer, [[maybe_unused]] const std::string& spanName);
} // namespace pdns::trace::dnsdist
}
}
-static std::optional<pdns::trace::dnsdist::Tracer::Closer> getCloser([[maybe_unused]] std::shared_ptr<pdns::trace::dnsdist::Tracer>& tracer, [[maybe_unused]] const std::string& spanName)
-{
-#ifndef DISABLE_PROTOBUF
- if (tracer != nullptr) {
- auto ret = std::make_optional(tracer->openSpan(spanName));
- ret->setKind(SpanKind::SPAN_KIND_INTERNAL);
- return ret;
- }
-#endif
- return std::nullopt;
-}
-
static void maintThread()
{
setThreadName("dnsdist/main");
if (tracer != nullptr) {
tracer->setScopeSpanName("dnsdist/maintenance");
}
- auto maint_closer = getCloser(tracer, "maintenanceThread");
+ auto maint_closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceThread");
auto lua = g_lua.lock();
pdns::trace::dnsdist::runWithLuaTracing(*lua, tracer, [&lua, &tracer, &secondsToWaitLog]() {
try {
auto maintenanceCallback = lua->readVariable<std::optional<std::function<void()>>>("maintenance");
if (maintenanceCallback) {
- auto closer = getCloser(tracer, "maintenanceFunction");
+ auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceFunction");
(*maintenanceCallback)();
}
{
- auto closer = getCloser(tracer, "maintenanceHooks");
- dnsdist::lua::hooks::runMaintenanceHooks(*lua);
+ auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceHooks");
+ dnsdist::lua::hooks::runMaintenanceHooks(*lua, tracer);
}
#if !defined(DISABLE_DYNBLOCKS)
{
- auto closer = getCloser(tracer, "DynamicBlocks::runRegisteredGroups");
+ auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "DynamicBlocks::runRegisteredGroups");
dnsdist::DynamicBlocks::runRegisteredGroups(*lua);
}
#endif /* DISABLE_DYNBLOCKS */
counter++;
if (counter >= dnsdist::configuration::getCurrentRuntimeConfiguration().d_cacheCleaningDelay) {
- auto closer = getCloser(tracer, "CacheClean");
+ auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "CacheClean");
/* keep track, for each cache, of whether we should keep
expired entries */
std::map<std::shared_ptr<DNSDistPacketCache>, bool> caches;