public CIAgentWriter(ImmutableTracerSettings settings, ISampler sampler, int maxBufferSize = DefaultMaxBufferSize) { var isPartialFlushEnabled = settings.ExporterSettings.PartialFlushEnabled; var apiRequestFactory = TracesTransportStrategy.Get(settings.ExporterSettings); var api = new Api(apiRequestFactory, null, rates => sampler.SetDefaultSampleRates(rates), isPartialFlushEnabled); _agentWriter = new AgentWriter(api, null, maxBufferSize: maxBufferSize); }
public static async Task <bool> RunAsync(ImmutableExporterSettings settings) { var payload = Vendors.MessagePack.MessagePackSerializer.Serialize(Array.Empty <Span[]>()); var requestFactory = TracesTransportStrategy.Get(settings); DisplayInfoMessage(settings); var request = requestFactory.Create(new Uri(settings.AgentUri, "/v0.4/traces")); var content = new ByteArrayContent(payload); content.Headers.ContentType = new MediaTypeHeaderValue("application/msgpack"); try { var response = await request.PostAsync(new ArraySegment <byte>(payload), "application/msgpack").ConfigureAwait(false); if (response.StatusCode != 200) { Utils.WriteError(WrongStatusCodeFormat((HttpStatusCode)response.StatusCode)); return(false); } var versionHeader = response.GetHeader("Datadog-Agent-Version"); if (versionHeader != null) { AnsiConsole.WriteLine(DetectedAgentVersionFormat(versionHeader)); } else { Utils.WriteWarning(AgentDetectionFailed); } } catch (Exception ex) { Utils.WriteError(ErrorDetectingAgent(settings.AgentUri.ToString(), ex.Message)); return(false); } return(true); }