// Copyright (c) 2022 Sentry. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "SentryDataTypes.h" class ISentryBreadcrumb; class ISentryEvent; class ISentryUserFeedback; class ISentryUser; class ISentryTransaction; class ISentryTransactionContext; class ISentryId; class ISentryScope; class USentrySettings; class USentryBeforeSendHandler; class USentryTraceSampler; DECLARE_DELEGATE_OneParam(FSentryScopeDelegate, TSharedPtr); class ISentrySubsystem { public: virtual ~ISentrySubsystem() = default; virtual void InitWithSettings(const USentrySettings* settings, USentryBeforeSendHandler* beforeSendHandler, USentryTraceSampler* traceSampler) = 0; virtual void Close() = 0; virtual bool IsEnabled() = 0; virtual ESentryCrashedLastRun IsCrashedLastRun() = 0; virtual void AddBreadcrumb(TSharedPtr breadcrumb) = 0; virtual void AddBreadcrumbWithParams(const FString& Message, const FString& Category, const FString& Type, const TMap& Data, ESentryLevel Level) = 0; virtual void ClearBreadcrumbs() = 0; virtual TSharedPtr CaptureMessage(const FString& message, ESentryLevel level) = 0; virtual TSharedPtr CaptureMessageWithScope(const FString& message, const FSentryScopeDelegate& onConfigureScope, ESentryLevel level) = 0; virtual TSharedPtr CaptureEvent(TSharedPtr event) = 0; virtual TSharedPtr CaptureEventWithScope(TSharedPtr event, const FSentryScopeDelegate& onConfigureScope) = 0; virtual TSharedPtr CaptureException(const FString& type, const FString& message, int32 framesToSkip = 0) = 0; virtual TSharedPtr CaptureAssertion(const FString& type, const FString& message) = 0; virtual TSharedPtr CaptureEnsure(const FString& type, const FString& message) = 0; virtual void CaptureUserFeedback(TSharedPtr userFeedback) = 0; virtual void SetUser(TSharedPtr user) = 0; virtual void RemoveUser() = 0; virtual void ConfigureScope(const FSentryScopeDelegate& onConfigureScope) = 0; virtual void SetContext(const FString& key, const TMap& values) = 0; virtual void SetTag(const FString& key, const FString& value) = 0; virtual void RemoveTag(const FString& key) = 0; virtual void SetLevel(ESentryLevel level) = 0; virtual void StartSession() = 0; virtual void EndSession() = 0; virtual TSharedPtr StartTransaction(const FString& name, const FString& operation) = 0; virtual TSharedPtr StartTransactionWithContext(TSharedPtr context) = 0; virtual TSharedPtr StartTransactionWithContextAndTimestamp(TSharedPtr context, int64 timestamp) = 0; virtual TSharedPtr StartTransactionWithContextAndOptions(TSharedPtr context, const TMap& options) = 0; virtual TSharedPtr ContinueTrace(const FString& sentryTrace, const TArray& baggageHeaders) = 0; };