Skip to content
Merged
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
346 changes: 342 additions & 4 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ RUN_TESTS_CMD := DD_SERVICE= DD_ENV= REPORT_EXIT_STATUS=1 TEST_PHP_SRCDIR=$(PROJ

C_FILES = $(shell find components components-rs ext src/dogstatsd zend_abstract_interface -name '*.c' -o -name '*.h' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' )
TEST_FILES = $(shell find tests/ext -name '*.php*' -o -name '*.inc' -o -name '*.json' -o -name '*.yaml' -o -name 'CONFLICTS' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' )
RUST_FILES = $(BUILD_DIR)/Cargo.toml $(BUILD_DIR)/Cargo.lock $(shell find components-rs -name '*.c' -o -name '*.rs' -o -name 'Cargo.toml' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) $(shell find libdatadog/{build-common,datadog-ipc,datadog-ipc-macros,datadog-live-debugger,datadog-live-debugger-ffi,datadog-remote-config,datadog-sidecar,datadog-sidecar-ffi,datadog-sidecar-macros,libdd-alloc,libdd-common,libdd-common-ffi,libdd-crashtracker,libdd-crashtracker-ffi,libdd-data-pipeline,libdd-ddsketch,libdd-dogstatsd-client,libdd-library-config,libdd-library-config-ffi,libdd-log,libdd-telemetry,libdd-telemetry-ffi,libdd-tinybytes,libdd-trace-*,spawn_worker,tools/{cc_utils,sidecar_mockgen},libdd-trace-*,Cargo.toml} \( -type l -o -type f \) \( -path "*/src*" -o -path "*/examples*" -o -path "*Cargo.toml" -o -path "*/build.rs" -o -path "*/tests/dataservice.rs" -o -path "*/tests/service_functional.rs" \) -not -path "*/datadog-ipc/build.rs" -not -path "*/datadog-sidecar-ffi/build.rs")
RUST_FILES = $(BUILD_DIR)/Cargo.toml $(BUILD_DIR)/Cargo.lock $(shell find components-rs -name '*.c' -o -name '*.rs' -o -name 'Cargo.toml' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) $(shell find libdatadog/{build-common,datadog-ffe,datadog-ipc,datadog-ipc-macros,datadog-live-debugger,datadog-live-debugger-ffi,datadog-remote-config,datadog-sidecar,datadog-sidecar-ffi,datadog-sidecar-macros,libdd-alloc,libdd-common,libdd-common-ffi,libdd-crashtracker,libdd-crashtracker-ffi,libdd-data-pipeline,libdd-ddsketch,libdd-dogstatsd-client,libdd-library-config,libdd-library-config-ffi,libdd-log,libdd-telemetry,libdd-telemetry-ffi,libdd-tinybytes,libdd-trace-*,spawn_worker,tools/{cc_utils,sidecar_mockgen},libdd-trace-*,Cargo.toml} \( -type l -o -type f \) \( -path "*/src*" -o -path "*/examples*" -o -path "*Cargo.toml" -o -path "*/build.rs" -o -path "*/tests/dataservice.rs" -o -path "*/tests/service_functional.rs" \) -not -path "*/datadog-ipc/build.rs" -not -path "*/datadog-sidecar-ffi/build.rs")
ALL_OBJECT_FILES = $(C_FILES) $(RUST_FILES) $(BUILD_DIR)/Makefile
TEST_OPCACHE_FILES = $(shell find tests/opcache -name '*.php*' -o -name '.gitkeep' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' )
TEST_STUB_FILES = $(shell find tests/ext -type d -name 'stubs' -exec find '{}' -type f \; | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' )
Expand Down
260 changes: 131 additions & 129 deletions components-rs/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,19 +264,16 @@ typedef struct _zend_string _zend_string;

#define ddog_MultiTargetFetcher_DEFAULT_CLIENTS_LIMIT 100

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_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_DynamicConfigUpdateMode {
DDOG_DYNAMIC_CONFIG_UPDATE_MODE_READ,
Expand All @@ -285,16 +282,30 @@ 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_EvaluateAt {
DDOG_EVALUATE_AT_ENTRY,
DDOG_EVALUATE_AT_EXIT,
} ddog_EvaluateAt;
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_MetricKind {
DDOG_METRIC_KIND_COUNT,
Expand All @@ -303,37 +314,6 @@ 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 @@ -348,16 +328,20 @@ typedef enum ddog_MetricNamespace {
DDOG_METRIC_NAMESPACE_SIDECAR,
} ddog_MetricNamespace;

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_LIVE_DEBUGGER,
} ddog_RemoteConfigProduct;
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_RemoteConfigCapabilities {
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_ACTIVATION = 1,
Expand Down Expand Up @@ -403,8 +387,26 @@ typedef enum ddog_RemoteConfigCapabilities {
DDOG_REMOTE_CONFIG_CAPABILITIES_APM_TRACING_ENABLE_LIVE_DEBUGGING = 41,
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_DD_MULTICONFIG = 42,
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_TRACE_TAGGING_RULES = 43,
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 @@ -775,18 +777,18 @@ typedef struct ddog_DebuggerValue ddog_DebuggerValue;

#define ddog_EVALUATOR_RESULT_REDACTED (const void*)-2

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 enum ddog_FieldType {
DDOG_FIELD_TYPE_STATIC,
DDOG_FIELD_TYPE_ARG,
DDOG_FIELD_TYPE_LOCAL,
} ddog_FieldType;

typedef struct ddog_Entry ddog_Entry;

typedef struct ddog_HashMap_CowStr__Value ddog_HashMap_CowStr__Value;
Expand Down Expand Up @@ -915,6 +917,16 @@ 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 @@ -933,16 +945,6 @@ 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 @@ -996,6 +998,12 @@ 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 @@ -1009,12 +1017,6 @@ 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 @@ -1094,28 +1096,37 @@ 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;

/**
* 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 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;

/**
* This enum represents operations a the tracked library might be engaged in.
Expand All @@ -1140,12 +1151,6 @@ 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 @@ -1218,31 +1223,28 @@ 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;

/**
* 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_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 struct ddog_crasht_CrashInfo ddog_crasht_CrashInfo;

Expand Down
2 changes: 1 addition & 1 deletion components-rs/crashtracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_thread_name(struct ddog
* The `builder` can be null, but if non-null it must point to a Builder made by this module,
* which has not previously been dropped.
* All arguments must be valid.
* This method requires that the builder has a UUID, siginfo, and metadata set
* This method requires that the builder has a UUID and metadata set
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_upload_ping_to_endpoint(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
Expand Down
Loading
Loading