133 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			133 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								// Copyright (c) 2022 Sentry. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "SentryDataTypes.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "SentryScope.generated.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ISentryScope;
							 | 
						||
| 
								 | 
							
								class USentryBreadcrumb;
							 | 
						||
| 
								 | 
							
								class USentryAttachment;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Scope data to be sent with the event.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								UCLASS(BlueprintType)
							 | 
						||
| 
								 | 
							
								class SENTRY_API USentryScope : public UObject
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									GENERATED_BODY()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
									USentryScope();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Adds a breadcrumb to the current Scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void AddBreadcrumb(USentryBreadcrumb* Breadcrumb);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Clear all breadcrumbs of the current Scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void ClearBreadcrumbs();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Adds an attachment to the current Scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void AddAttachment(USentryAttachment* Attachment);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Clear all attachments of the current Scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void ClearAttachments();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets a global tag. Tags are searchable key/value string pairs attached to every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetTagValue(const FString& Key, const FString& Value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets a global tag. Tags are searchable key/value string pairs attached to every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									FString GetTagValue(const FString& Key) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Removes the tag for the specified key. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void RemoveTag(const FString& Key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets global tags. Tags are searchable key/value string pairs attached to every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetTags(const TMap<FString, FString>& Tags);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets a global tags. Tags are searchable key/value string pairs attached to every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									TMap<FString, FString> GetTags() const;	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets dist in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetDist(const FString& Dist);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets dist in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									FString GetDist() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets environment in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetEnvironment(const FString& Environment);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets environment in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									FString GetEnvironment() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets fingerprint in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetFingerprint(const TArray<FString>& Fingerprint);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets fingerprint in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									TArray<FString> GetFingerprint() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets the level in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetLevel(ESentryLevel Level);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets the level in the scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									ESentryLevel GetLevel() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets context values which will be used for enriching events. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetContext(const FString& Key, const TMap<FString, FString>& Values);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets context values which will be used for enriching events. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void RemoveContext(const FString& Key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets a global extra. These will be sent with every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetExtraValue(const FString& Key, const FString& Value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets a global extra. These will be sent with every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									FString GetExtraValue(const FString& Key) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Removes the extra for the specified key. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void RemoveExtra(const FString& Key);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Sets global extras. These will be sent with every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void SetExtras(const TMap<FString, FString>& Extras);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Gets global extras. These will be sent with every event. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintPure, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									TMap<FString, FString> GetExtras() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Clears the current scope. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									void Clear();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									void InitWithNativeImpl(TSharedPtr<ISentryScope> scopeImpl);
							 | 
						||
| 
								 | 
							
									TSharedPtr<ISentryScope> GetNativeImpl();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
									TSharedPtr<ISentryScope> ScopeNativeImpl;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DECLARE_DELEGATE_OneParam(FConfigureScopeNativeDelegate, USentryScope*);
							 | 
						||
| 
								 | 
							
								DECLARE_DYNAMIC_DELEGATE_OneParam(FConfigureScopeDelegate, USentryScope*, Scope);
							 |