Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
260 changes: 130 additions & 130 deletions components-rs/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,16 +264,19 @@ typedef struct _zend_string _zend_string;

#define ddog_MultiTargetFetcher_DEFAULT_CLIENTS_LIMIT 100

typedef enum ddog_ConfigurationOrigin {
DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
DDOG_CONFIGURATION_ORIGIN_CODE,
DDOG_CONFIGURATION_ORIGIN_DD_CONFIG,
DDOG_CONFIGURATION_ORIGIN_REMOTE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_DEFAULT,
DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_CALCULATED,
} ddog_ConfigurationOrigin;
typedef enum ddog_Log {
DDOG_LOG_ERROR = 1,
DDOG_LOG_WARN = 2,
DDOG_LOG_INFO = 3,
DDOG_LOG_DEBUG = 4,
DDOG_LOG_TRACE = 5,
DDOG_LOG_DEPRECATED = (3 | ddog_LOG_ONCE),
DDOG_LOG_STARTUP = (3 | (2 << 4)),
DDOG_LOG_STARTUP_WARN = (1 | (2 << 4)),
DDOG_LOG_SPAN = (4 | (3 << 4)),
DDOG_LOG_SPAN_TRACE = (5 | (3 << 4)),
DDOG_LOG_HOOK_TRACE = (5 | (4 << 4)),
} ddog_Log;

typedef enum ddog_DynamicConfigUpdateMode {
DDOG_DYNAMIC_CONFIG_UPDATE_MODE_READ,
Expand All @@ -282,30 +285,16 @@ typedef enum ddog_DynamicConfigUpdateMode {
DDOG_DYNAMIC_CONFIG_UPDATE_MODE_RESTORE,
} ddog_DynamicConfigUpdateMode;

typedef enum ddog_EvaluateAt {
DDOG_EVALUATE_AT_ENTRY,
DDOG_EVALUATE_AT_EXIT,
} ddog_EvaluateAt;

typedef enum ddog_InBodyLocation {
DDOG_IN_BODY_LOCATION_NONE,
DDOG_IN_BODY_LOCATION_START,
DDOG_IN_BODY_LOCATION_END,
} ddog_InBodyLocation;

typedef enum ddog_Log {
DDOG_LOG_ERROR = 1,
DDOG_LOG_WARN = 2,
DDOG_LOG_INFO = 3,
DDOG_LOG_DEBUG = 4,
DDOG_LOG_TRACE = 5,
DDOG_LOG_DEPRECATED = (3 | ddog_LOG_ONCE),
DDOG_LOG_STARTUP = (3 | (2 << 4)),
DDOG_LOG_STARTUP_WARN = (1 | (2 << 4)),
DDOG_LOG_SPAN = (4 | (3 << 4)),
DDOG_LOG_SPAN_TRACE = (5 | (3 << 4)),
DDOG_LOG_HOOK_TRACE = (5 | (4 << 4)),
} ddog_Log;
typedef enum ddog_EvaluateAt {
DDOG_EVALUATE_AT_ENTRY,
DDOG_EVALUATE_AT_EXIT,
} ddog_EvaluateAt;

typedef enum ddog_MetricKind {
DDOG_METRIC_KIND_COUNT,
Expand All @@ -314,6 +303,37 @@ typedef enum ddog_MetricKind {
DDOG_METRIC_KIND_DISTRIBUTION,
} ddog_MetricKind;

typedef enum ddog_SpanProbeTarget {
DDOG_SPAN_PROBE_TARGET_ACTIVE,
DDOG_SPAN_PROBE_TARGET_ROOT,
} ddog_SpanProbeTarget;

typedef enum ddog_ProbeStatus {
DDOG_PROBE_STATUS_RECEIVED,
DDOG_PROBE_STATUS_INSTALLED,
DDOG_PROBE_STATUS_EMITTING,
DDOG_PROBE_STATUS_ERROR,
DDOG_PROBE_STATUS_BLOCKED,
DDOG_PROBE_STATUS_WARNING,
} ddog_ProbeStatus;

typedef enum ddog_ConfigurationOrigin {
DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
DDOG_CONFIGURATION_ORIGIN_CODE,
DDOG_CONFIGURATION_ORIGIN_DD_CONFIG,
DDOG_CONFIGURATION_ORIGIN_REMOTE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_DEFAULT,
DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
DDOG_CONFIGURATION_ORIGIN_CALCULATED,
} ddog_ConfigurationOrigin;

typedef enum ddog_MetricType {
DDOG_METRIC_TYPE_GAUGE,
DDOG_METRIC_TYPE_COUNT,
DDOG_METRIC_TYPE_DISTRIBUTION,
} ddog_MetricType;

typedef enum ddog_MetricNamespace {
DDOG_METRIC_NAMESPACE_TRACERS,
DDOG_METRIC_NAMESPACE_PROFILERS,
Expand All @@ -328,20 +348,17 @@ typedef enum ddog_MetricNamespace {
DDOG_METRIC_NAMESPACE_SIDECAR,
} ddog_MetricNamespace;

typedef enum ddog_MetricType {
DDOG_METRIC_TYPE_GAUGE,
DDOG_METRIC_TYPE_COUNT,
DDOG_METRIC_TYPE_DISTRIBUTION,
} ddog_MetricType;

typedef enum ddog_ProbeStatus {
DDOG_PROBE_STATUS_RECEIVED,
DDOG_PROBE_STATUS_INSTALLED,
DDOG_PROBE_STATUS_EMITTING,
DDOG_PROBE_STATUS_ERROR,
DDOG_PROBE_STATUS_BLOCKED,
DDOG_PROBE_STATUS_WARNING,
} ddog_ProbeStatus;
typedef enum ddog_RemoteConfigProduct {
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_CONFIG,
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_TASK,
DDOG_REMOTE_CONFIG_PRODUCT_APM_TRACING,
DDOG_REMOTE_CONFIG_PRODUCT_ASM,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DATA,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DD,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_FEATURES,
DDOG_REMOTE_CONFIG_PRODUCT_FFE_FLAGS,
DDOG_REMOTE_CONFIG_PRODUCT_LIVE_DEBUGGER,
} ddog_RemoteConfigProduct;

typedef enum ddog_RemoteConfigCapabilities {
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_ACTIVATION = 1,
Expand Down Expand Up @@ -390,23 +407,6 @@ typedef enum ddog_RemoteConfigCapabilities {
DDOG_REMOTE_CONFIG_CAPABILITIES_FFE_FLAG_CONFIGURATION_RULES = 46,
} ddog_RemoteConfigCapabilities;

typedef enum ddog_RemoteConfigProduct {
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_CONFIG,
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_TASK,
DDOG_REMOTE_CONFIG_PRODUCT_APM_TRACING,
DDOG_REMOTE_CONFIG_PRODUCT_ASM,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DATA,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DD,
DDOG_REMOTE_CONFIG_PRODUCT_ASM_FEATURES,
DDOG_REMOTE_CONFIG_PRODUCT_FFE_FLAGS,
DDOG_REMOTE_CONFIG_PRODUCT_LIVE_DEBUGGER,
} ddog_RemoteConfigProduct;

typedef enum ddog_SpanProbeTarget {
DDOG_SPAN_PROBE_TARGET_ACTIVE,
DDOG_SPAN_PROBE_TARGET_ROOT,
} ddog_SpanProbeTarget;

typedef struct ddog_DebuggerPayload ddog_DebuggerPayload;

typedef struct ddog_DslString ddog_DslString;
Expand Down Expand Up @@ -777,18 +777,18 @@ typedef struct ddog_DebuggerValue ddog_DebuggerValue;

#define ddog_EVALUATOR_RESULT_REDACTED (const void*)-2

typedef enum ddog_DebuggerType {
DDOG_DEBUGGER_TYPE_DIAGNOSTICS,
DDOG_DEBUGGER_TYPE_SNAPSHOTS,
DDOG_DEBUGGER_TYPE_LOGS,
} ddog_DebuggerType;

typedef enum ddog_FieldType {
DDOG_FIELD_TYPE_STATIC,
DDOG_FIELD_TYPE_ARG,
DDOG_FIELD_TYPE_LOCAL,
} ddog_FieldType;

typedef enum ddog_DebuggerType {
DDOG_DEBUGGER_TYPE_DIAGNOSTICS,
DDOG_DEBUGGER_TYPE_SNAPSHOTS,
DDOG_DEBUGGER_TYPE_LOGS,
} ddog_DebuggerType;

typedef struct ddog_Entry ddog_Entry;

typedef struct ddog_HashMap_CowStr__Value ddog_HashMap_CowStr__Value;
Expand Down Expand Up @@ -917,16 +917,6 @@ typedef struct ddog_OwnedCharSlice {
void (*free)(ddog_CharSlice);
} ddog_OwnedCharSlice;

typedef enum ddog_LogLevel {
DDOG_LOG_LEVEL_ERROR,
DDOG_LOG_LEVEL_WARN,
DDOG_LOG_LEVEL_DEBUG,
} ddog_LogLevel;

typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
} ddog_TelemetryWorkerBuilderBoolProperty;

typedef enum ddog_TelemetryWorkerBuilderEndpointProperty {
DDOG_TELEMETRY_WORKER_BUILDER_ENDPOINT_PROPERTY_CONFIG_ENDPOINT,
} ddog_TelemetryWorkerBuilderEndpointProperty;
Expand All @@ -945,6 +935,16 @@ typedef enum ddog_TelemetryWorkerBuilderStrProperty {
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_RUNTIME_ID,
} ddog_TelemetryWorkerBuilderStrProperty;

typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
} ddog_TelemetryWorkerBuilderBoolProperty;

typedef enum ddog_LogLevel {
DDOG_LOG_LEVEL_ERROR,
DDOG_LOG_LEVEL_WARN,
DDOG_LOG_LEVEL_DEBUG,
} ddog_LogLevel;

typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;

/**
Expand Down Expand Up @@ -998,12 +998,6 @@ typedef struct ddog_AttributeAnyValueBytes ddog_AttributeAnyValueBytes;
typedef struct ddog_AttributeArrayValueBytes ddog_AttributeArrayValueBytes;


typedef enum ddog_DynamicInstrumentationConfigState {
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_ENABLED,
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_DISABLED,
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_NOT_SET,
} ddog_DynamicInstrumentationConfigState;

typedef enum ddog_Method {
DDOG_METHOD_GET = 0,
DDOG_METHOD_POST = 1,
Expand All @@ -1017,6 +1011,12 @@ typedef enum ddog_Method {
DDOG_METHOD_OTHER = 9,
} ddog_Method;

typedef enum ddog_DynamicInstrumentationConfigState {
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_ENABLED,
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_DISABLED,
DDOG_DYNAMIC_INSTRUMENTATION_CONFIG_STATE_NOT_SET,
} ddog_DynamicInstrumentationConfigState;

typedef struct ddog_AgentInfoReader ddog_AgentInfoReader;

typedef struct ddog_AgentRemoteConfigReader ddog_AgentRemoteConfigReader;
Expand Down Expand Up @@ -1096,37 +1096,28 @@ typedef struct ddog_SenderParameters {
ddog_CharSlice url;
} ddog_SenderParameters;

typedef enum ddog_crasht_BuildIdType {
DDOG_CRASHT_BUILD_ID_TYPE_GNU,
DDOG_CRASHT_BUILD_ID_TYPE_GO,
DDOG_CRASHT_BUILD_ID_TYPE_PDB,
DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
} ddog_crasht_BuildIdType;

/**
* Result type for runtime callback registration
* Stacktrace collection occurs in the context of a crashing process.
* If the stack is sufficiently corruputed, it is possible (but unlikely),
* for stack trace collection itself to crash.
* We recommend fully enabling stacktrace collection, but having an environment
* variable to allow downgrading the collector.
*/
typedef enum ddog_crasht_CallbackResult {
DDOG_CRASHT_CALLBACK_RESULT_OK,
DDOG_CRASHT_CALLBACK_RESULT_ERROR,
} ddog_crasht_CallbackResult;

typedef enum ddog_crasht_DemangleOptions {
DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
} ddog_crasht_DemangleOptions;

typedef enum ddog_crasht_ErrorKind {
DDOG_CRASHT_ERROR_KIND_PANIC,
DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
} ddog_crasht_ErrorKind;

typedef enum ddog_crasht_FileType {
DDOG_CRASHT_FILE_TYPE_APK,
DDOG_CRASHT_FILE_TYPE_ELF,
DDOG_CRASHT_FILE_TYPE_PE,
} ddog_crasht_FileType;
typedef enum ddog_crasht_StacktraceCollection {
/**
* Stacktrace collection occurs in the
*/
DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
/**
* This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
* and also unwind inlined functions. Enabling this feature will not only provide symbolic
* details, but may also yield additional or less stack frames compared to other
* configurations.
*/
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
} ddog_crasht_StacktraceCollection;

/**
* This enum represents operations a the tracked library might be engaged in.
Expand All @@ -1151,6 +1142,12 @@ typedef enum ddog_crasht_OpTypes {
DDOG_CRASHT_OP_TYPES_SIZE,
} ddog_crasht_OpTypes;

typedef enum ddog_crasht_ErrorKind {
DDOG_CRASHT_ERROR_KIND_PANIC,
DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
} ddog_crasht_ErrorKind;

/**
* See https://man7.org/linux/man-pages/man2/sigaction.2.html
* MUST REMAIN IN SYNC WITH THE ENUM IN emit_sigcodes.c
Expand Down Expand Up @@ -1223,28 +1220,31 @@ typedef enum ddog_crasht_SignalNames {
DDOG_CRASHT_SIGNAL_NAMES_UNKNOWN,
} ddog_crasht_SignalNames;

typedef enum ddog_crasht_BuildIdType {
DDOG_CRASHT_BUILD_ID_TYPE_GNU,
DDOG_CRASHT_BUILD_ID_TYPE_GO,
DDOG_CRASHT_BUILD_ID_TYPE_PDB,
DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
} ddog_crasht_BuildIdType;

typedef enum ddog_crasht_FileType {
DDOG_CRASHT_FILE_TYPE_APK,
DDOG_CRASHT_FILE_TYPE_ELF,
DDOG_CRASHT_FILE_TYPE_PE,
} ddog_crasht_FileType;

typedef enum ddog_crasht_DemangleOptions {
DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
} ddog_crasht_DemangleOptions;

/**
* Stacktrace collection occurs in the context of a crashing process.
* If the stack is sufficiently corruputed, it is possible (but unlikely),
* for stack trace collection itself to crash.
* We recommend fully enabling stacktrace collection, but having an environment
* variable to allow downgrading the collector.
* Result type for runtime callback registration
*/
typedef enum ddog_crasht_StacktraceCollection {
/**
* Stacktrace collection occurs in the
*/
DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
/**
* This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
* and also unwind inlined functions. Enabling this feature will not only provide symbolic
* details, but may also yield additional or less stack frames compared to other
* configurations.
*/
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
} ddog_crasht_StacktraceCollection;
typedef enum ddog_crasht_CallbackResult {
DDOG_CRASHT_CALLBACK_RESULT_OK,
DDOG_CRASHT_CALLBACK_RESULT_ERROR,
} ddog_crasht_CallbackResult;

typedef struct ddog_crasht_CrashInfo ddog_crasht_CrashInfo;

Expand Down
10 changes: 10 additions & 0 deletions components-rs/sidecar.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,16 @@ void ddog_sidecar_transport_drop(struct ddog_SidecarTransport*);
*/
ddog_MaybeError ddog_sidecar_connect(struct ddog_SidecarTransport **connection);

ddog_MaybeError ddog_sidecar_connect_master(int32_t pid);

ddog_MaybeError ddog_sidecar_connect_worker(int32_t pid, struct ddog_SidecarTransport **connection);

ddog_MaybeError ddog_sidecar_shutdown_master_listener(void);

bool ddog_sidecar_is_master_listener_active(int32_t pid);

ddog_MaybeError ddog_sidecar_clear_inherited_listener(void);

ddog_MaybeError ddog_sidecar_ping(struct ddog_SidecarTransport **transport);

ddog_MaybeError ddog_sidecar_flush_traces(struct ddog_SidecarTransport **transport);
Expand Down
5 changes: 5 additions & 0 deletions ext/coms.c
Original file line number Diff line number Diff line change
Expand Up @@ -1500,6 +1500,11 @@ bool ddtrace_coms_flush_shutdown_writer_synchronous(void) {

bool ddtrace_coms_synchronous_flush(uint32_t timeout) {
struct _writer_loop_data_t *writer = _dd_get_writer();

if (!writer->thread) {
return false;
}

uint32_t previous_writer_cycle = atomic_load(&writer->writer_cycle);
uint32_t previous_processed_stacks_total = atomic_load(&writer->flush_processed_stacks_total);
int64_t old_flush_interval = atomic_load(&writer->flush_interval);
Expand Down
Loading
Loading