Skip to content

Commit 2a06b13

Browse files
dmehalagleocadie
authored andcommitted
[skip ci] fix: update process discovery FFI
1 parent ff7082e commit 2a06b13

File tree

3 files changed

+59
-20
lines changed

3 files changed

+59
-20
lines changed

tracer/src/Datadog.Trace/LibDatadog/NativeInterop.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,17 @@ internal static class Common
116116

117117
internal static class LibraryConfig
118118
{
119-
[DllImport(DllName, EntryPoint = "ddog_store_tracer_metadata")]
120-
internal static extern TracerMemfdHandleResult StoreTracerMetadata(
121-
byte schemaVersion,
122-
CharSlice runtimeId,
123-
CharSlice tracerLanguage,
124-
CharSlice tracerVersion,
125-
CharSlice hostname,
126-
CharSlice serviceName,
127-
CharSlice serviceEnv,
128-
CharSlice serviceVersion);
119+
[DllImport(DllName, EntryPoint = "ddog_tracer_metadata_new")]
120+
internal static extern IntPtr TracerMetadataNew();
121+
122+
[DllImport(DllName, EntryPoint = "ddog_tracer_metadata_free")]
123+
internal static extern void TracerMetadataFree(IntPtr metadata);
124+
125+
[DllImport(DllName, EntryPoint = "ddog_tracer_metadata_set")]
126+
internal static extern void TracerMetadataSet(IntPtr metadata, MetadataKind kind, CString value);
127+
128+
[DllImport(DllName, EntryPoint = "ddog_tracer_metadata_store")]
129+
internal static extern TracerMemfdHandleResult StoreTracerMetadata(IntPtr metadata);
129130

130131
[DllImport(DllName, EntryPoint = "ddog_library_configurator_new")]
131132
internal static extern IntPtr ConfiguratorNew(byte debugLogs, CharSlice language);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// <copyright file="MetadataKind.cs" company="Datadog">
2+
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
3+
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
4+
// </copyright>
5+
6+
#nullable enable
7+
using System;
8+
9+
namespace Datadog.Trace.LibDatadog.ServiceDiscovery;
10+
11+
internal enum MetadataKind : int
12+
{
13+
RuntimeId = 0,
14+
TracerLanguage = 1,
15+
TracerVersion = 2,
16+
Hostname = 3,
17+
ServiceName = 4,
18+
ServiceEnvironment = 5,
19+
ServiceVersion = 6,
20+
ProcessTags = 7,
21+
ContainerId = 8,
22+
}

tracer/src/Datadog.Trace/LibDatadog/ServiceDiscovery/ServiceDiscoveryHelper.cs

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ internal static StoreMetadataResult StoreTracerMetadata(TracerSettings tracerSet
3131
try
3232
{
3333
var result = StoreTracerMetadata(
34-
1,
3534
Tracer.RuntimeId,
3635
TracerConstants.Language,
3736
TracerConstants.ThreePartVersion,
@@ -66,7 +65,6 @@ internal static StoreMetadataResult StoreTracerMetadata(TracerSettings tracerSet
6665
}
6766

6867
private static TracerMemfdHandleResult StoreTracerMetadata(
69-
byte schemaVersion,
7068
string runtimeId,
7169
string tracerLanguage,
7270
string tracerVersion,
@@ -75,14 +73,32 @@ private static TracerMemfdHandleResult StoreTracerMetadata(
7573
string? serviceEnv,
7674
string? serviceVersion)
7775
{
78-
using var runtimeIdCharSlice = new CharSlice(runtimeId);
79-
using var tracerLanguageCharSlice = new CharSlice(tracerLanguage);
80-
using var tracerVersionCharSlice = new CharSlice(tracerVersion);
81-
using var hostnameCharSlice = new CharSlice(hostname);
82-
using var serviceNameCharSlice = new CharSlice(serviceName);
83-
using var serviceEnvCharSlice = new CharSlice(serviceEnv);
84-
using var serviceVersionCharSlice = new CharSlice(serviceVersion);
76+
IntPtr ptr = IntPtr.Zero;
77+
try
78+
{
79+
ptr = NativeInterop.LibraryConfig.TracerMetadataNew();
80+
SetMetadata(ptr, MetadataKind.RuntimeId, runtimeId);
81+
SetMetadata(ptr, MetadataKind.TracerLanguage, tracerLanguage);
82+
SetMetadata(ptr, MetadataKind.TracerVersion, tracerVersion);
83+
SetMetadata(ptr, MetadataKind.Hostname, hostname);
84+
SetMetadata(ptr, MetadataKind.ServiceName, serviceName);
85+
SetMetadata(ptr, MetadataKind.ServiceEnvironment, serviceEnv);
86+
SetMetadata(ptr, MetadataKind.ServiceVersion, serviceVersion);
8587

86-
return NativeInterop.LibraryConfig.StoreTracerMetadata(schemaVersion, runtimeIdCharSlice, tracerLanguageCharSlice, tracerVersionCharSlice, hostnameCharSlice, serviceNameCharSlice, serviceEnvCharSlice, serviceVersionCharSlice);
88+
return NativeInterop.LibraryConfig.StoreTracerMetadata(ptr);
89+
}
90+
finally
91+
{
92+
if (ptr != IntPtr.Zero)
93+
{
94+
NativeInterop.LibraryConfig.TracerMetadataFree(ptr);
95+
}
96+
}
97+
98+
void SetMetadata(IntPtr ptr, MetadataKind kind, string? value)
99+
{
100+
using var valueCharSlice = new CString(value);
101+
NativeInterop.LibraryConfig.TracerMetadataSet(ptr, kind, valueCharSlice);
102+
}
87103
}
88104
}

0 commit comments

Comments
 (0)