From ff4a9adad9e583e4297892877d81ccab2b04f3ac Mon Sep 17 00:00:00 2001 From: Pedro Rauiz Estigarribia Gestal Date: Wed, 6 Nov 2024 08:41:03 -0300 Subject: [PATCH] Added support for Local Federation running and debugging workflow to microservice window; Added basic UI for micro storages - Restructured BeamK2 Operation nodes to work with sub-events in a better way. Also, removed SuccessNonSuccess mode (should be using SuccessErrorCancelled mode instead) - Fixed issue with BeamInventorySubsystem such that the inventory is properly merged now when notifications are received; - Added the ability to stop long-running CLI commands safely; - Fixed several issues in the CLI commands layer around log streams and error streams; - Updated Microservice Editor to properly received and store logs from running services; Microservice window also displays these logs correctly. - Added EditorBlueprint utility functions to help make a set of Toggle Buttons and Tabs (see MicroserviceInspector for usage example); - Fixed issue that caused BeamableWindowMessage to not be initialized correctly leading to some errors on start up; --- .beamable/connection-configuration.json | 2 +- BeamableUnreal.sln.DotSettings.user | 5 +- Config/DefaultEditor.ini | 27 +- .../LiveOpsDemoMS/BeamSourceGenConfig.json | 1 + .../Content/EWBP_ContentTileThumbnail.uasset | 4 +- .../EWBP_BeamManagement.uasset | 4 +- .../EBP_FederationIdTypePair.uasset | 3 + .../EWBPI_MicroserviceWindowTab.uasset | 3 + .../Microservices/EWBP_MS_LogEntry.uasset | 3 + ..._MicroserviceFederationInstanceCard.uasset | 3 + .../EWBP_MicroserviceFederationsTab.uasset | 3 + .../EWBP_MicroserviceInspector.uasset | 3 + .../EWBP_MicroserviceLogsAndMetricsTab.uasset | 3 + .../EWBP_MicroserviceSummaryCard.uasset | 4 +- .../Microservices/EWBP_Microservices.uasset | 4 +- .../EWBP_MicrostorageInspector.uasset | 3 + .../Microservices/EWBP_TeamShareTab.uasset | 3 + .../Editor/Utility/BPL_EditorUtilities.uasset | 3 + .../Private/BeamFlow/K2BeamNode_Operation.cpp | 143 +----- .../Private/BeamK2.cpp | 8 +- .../Public/BeamFlow/K2BeamNode_Operation.h | 32 +- .../Public/BeamK2.h | 4 +- .../Inventory/BeamInventorySubsystem.cpp | 190 ++++++-- .../Inventory/BeamInventorySubsystem.h | 2 +- .../Private/Subsystems/BeamEditor.cpp | 3 + .../Private/Subsystems/CLI/BeamCli.cpp | 13 + .../Private/Subsystems/CLI/BeamCliCommand.cpp | 205 ++++++-- .../Microservices/BeamMicroservicesEditor.cpp | 436 ++++++++++++++---- .../CLI/Autogen/BeamCliConfigCommand.cpp | 9 +- .../CLI/Autogen/BeamCliConfigCommand.h | 41 +- .../CLI/Autogen/BeamCliConfigRealmCommand.cpp | 9 +- .../CLI/Autogen/BeamCliConfigRealmCommand.h | 43 +- .../BeamCliConfigRealmRemoveCommand.cpp | 9 +- .../Autogen/BeamCliConfigRealmRemoveCommand.h | 43 +- .../Autogen/BeamCliConfigRealmSetCommand.cpp | 9 +- .../Autogen/BeamCliConfigRealmSetCommand.h | 43 +- .../Autogen/BeamCliContentBulkEditCommand.cpp | 4 +- .../Autogen/BeamCliContentBulkEditCommand.h | 3 +- .../BeamCliContentLocalManifestCommand.cpp | 9 +- .../BeamCliContentLocalManifestCommand.h | 43 +- .../Autogen/BeamCliContentPublishCommand.cpp | 9 +- .../Autogen/BeamCliContentPublishCommand.h | 43 +- .../CLI/Autogen/BeamCliContentPullCommand.cpp | 9 +- .../CLI/Autogen/BeamCliContentPullCommand.h | 43 +- .../Autogen/BeamCliContentResetCommand.cpp | 9 +- .../CLI/Autogen/BeamCliContentResetCommand.h | 43 +- .../Autogen/BeamCliDeploymentGetCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliDeploymentGetCommand.h | 94 ++++ .../Autogen/BeamCliDeploymentListCommand.cpp | 43 ++ .../Autogen/BeamCliDeploymentListCommand.h | 93 ++++ .../Autogen/BeamCliDeploymentPlanCommand.cpp | 77 ++++ .../Autogen/BeamCliDeploymentPlanCommand.h | 202 ++++++++ .../BeamCliDeploymentReleaseCommand.cpp | 77 ++++ .../Autogen/BeamCliDeploymentReleaseCommand.h | 203 ++++++++ ...cpp => BeamCliDeploymentStatusCommand.cpp} | 19 +- ...and.h => BeamCliDeploymentStatusCommand.h} | 44 +- .../Autogen/BeamCliFederationAddCommand.cpp | 9 +- .../CLI/Autogen/BeamCliFederationAddCommand.h | 41 +- .../BeamCliFederationDisableCommand.cpp | 9 +- .../Autogen/BeamCliFederationDisableCommand.h | 41 +- .../BeamCliFederationEnableCommand.cpp | 9 +- .../Autogen/BeamCliFederationEnableCommand.h | 41 +- .../Autogen/BeamCliFederationListCommand.cpp | 9 +- .../Autogen/BeamCliFederationListCommand.h | 47 +- .../BeamCliFederationLocalKeyCommand.cpp | 9 +- .../BeamCliFederationLocalKeyCommand.h | 41 +- ...SettingsGetIFederatedGameServerCommand.cpp | 43 ++ ...alSettingsGetIFederatedGameServerCommand.h | 85 ++++ ...SettingsSetIFederatedGameServerCommand.cpp | 43 ++ ...alSettingsSetIFederatedGameServerCommand.h | 86 ++++ .../BeamCliFederationRemoveCommand.cpp | 9 +- .../Autogen/BeamCliFederationRemoveCommand.h | 43 +- .../Autogen/BeamCliFederationSetCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliFederationSetCommand.h | 89 ++++ .../CLI/Autogen/BeamCliInitCommand.cpp | 9 +- .../CLI/Autogen/BeamCliInitCommand.h | 62 +-- .../Autogen/BeamCliListenPlayerCommand.cpp | 9 +- .../CLI/Autogen/BeamCliListenPlayerCommand.h | 43 +- .../Autogen/BeamCliListenServerCommand.cpp | 9 +- .../CLI/Autogen/BeamCliListenServerCommand.h | 43 +- .../CLI/Autogen/BeamCliLogoutCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliLogoutCommand.h | 82 ++++ .../CLI/Autogen/BeamCliMeCommand.cpp | 9 +- .../Subsystems/CLI/Autogen/BeamCliMeCommand.h | 41 +- .../Autogen/BeamCliOapiDownloadCommand.cpp | 4 +- .../CLI/Autogen/BeamCliOapiDownloadCommand.h | 47 +- .../BeamCliProfileCheckCountersCommand.cpp | 9 +- .../BeamCliProfileCheckCountersCommand.h | 45 +- .../BeamCliProfileCheckNbomberCommand.cpp | 9 +- .../BeamCliProfileCheckNbomberCommand.h | 45 +- .../BeamCliProjectAddUnityProjectCommand.cpp | 4 +- .../BeamCliProjectAddUnityProjectCommand.h | 41 +- .../Autogen/BeamCliProjectBuildCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectBuildCommand.h | 45 +- .../Autogen/BeamCliProjectDepsAddCommand.cpp | 4 +- .../Autogen/BeamCliProjectDepsAddCommand.h | 41 +- .../CLI/Autogen/BeamCliProjectDepsCommand.cpp | 4 +- .../CLI/Autogen/BeamCliProjectDepsCommand.h | 41 +- .../Autogen/BeamCliProjectDepsListCommand.cpp | 9 +- .../Autogen/BeamCliProjectDepsListCommand.h | 47 +- .../BeamCliProjectDepsRemoveCommand.cpp | 4 +- .../Autogen/BeamCliProjectDepsRemoveCommand.h | 41 +- .../Autogen/BeamCliProjectDisableCommand.cpp | 9 +- .../Autogen/BeamCliProjectDisableCommand.h | 3 +- .../Autogen/BeamCliProjectEnableCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectEnableCommand.h | 3 +- .../BeamCliProjectGenerateClientCommand.cpp | 20 +- .../BeamCliProjectGenerateClientCommand.h | 86 +++- .../BeamCliProjectGenerateEnvCommand.cpp | 9 +- .../BeamCliProjectGenerateEnvCommand.h | 3 +- ...eamCliProjectGeneratePropertiesCommand.cpp | 4 +- .../BeamCliProjectGeneratePropertiesCommand.h | 43 +- .../CLI/Autogen/BeamCliProjectListCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectListCommand.h | 41 +- .../CLI/Autogen/BeamCliProjectLogsCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectLogsCommand.h | 43 +- .../BeamCliProjectNewCommonLibCommand.cpp | 4 +- .../BeamCliProjectNewCommonLibCommand.h | 45 +- .../BeamCliProjectNewServiceCommand.cpp | 4 +- .../Autogen/BeamCliProjectNewServiceCommand.h | 4 +- .../BeamCliProjectNewStorageCommand.cpp | 4 +- .../Autogen/BeamCliProjectNewStorageCommand.h | 3 +- .../CLI/Autogen/BeamCliProjectOapiCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectOapiCommand.h | 43 +- .../BeamCliProjectOpenMongoCommand.cpp | 4 +- .../Autogen/BeamCliProjectOpenMongoCommand.h | 41 +- .../BeamCliProjectOpenSwaggerCommand.cpp | 4 +- .../BeamCliProjectOpenSwaggerCommand.h | 45 +- .../CLI/Autogen/BeamCliProjectPsCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectPsCommand.h | 3 +- .../BeamCliProjectReadSettingsCommand.cpp | 9 +- .../BeamCliProjectReadSettingsCommand.h | 43 +- .../BeamCliProjectRegenerateCommand.cpp | 4 +- .../Autogen/BeamCliProjectRegenerateCommand.h | 43 +- .../Autogen/BeamCliProjectRemoveCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliProjectRemoveCommand.h | 87 ++++ .../CLI/Autogen/BeamCliProjectRunCommand.cpp | 23 +- .../CLI/Autogen/BeamCliProjectRunCommand.h | 4 +- .../CLI/Autogen/BeamCliProjectStopCommand.cpp | 9 +- .../CLI/Autogen/BeamCliProjectStopCommand.h | 45 +- .../BeamCliProjectStorageEraseCommand.cpp | 60 +++ .../BeamCliProjectStorageEraseCommand.h | 128 +++++ .../BeamCliProjectStorageRestoreCommand.cpp | 60 +++ .../BeamCliProjectStorageRestoreCommand.h | 130 ++++++ .../BeamCliProjectStorageSnapshotCommand.cpp | 60 +++ .../BeamCliProjectStorageSnapshotCommand.h | 129 ++++++ .../Autogen/BeamCliProjectVersionCommand.cpp | 9 +- .../Autogen/BeamCliProjectVersionCommand.h | 3 +- .../BeamCliProjectWriteSettingCommand.cpp | 9 +- .../BeamCliProjectWriteSettingCommand.h | 49 +- .../CLI/Autogen/BeamCliServerReqCommand.cpp | 9 +- .../CLI/Autogen/BeamCliServerReqCommand.h | 45 +- .../CLI/Autogen/BeamCliServerServeCommand.cpp | 9 +- .../CLI/Autogen/BeamCliServerServeCommand.h | 3 +- .../Autogen/BeamCliServicesBuildCommand.cpp | 16 +- .../CLI/Autogen/BeamCliServicesBuildCommand.h | 3 +- .../Autogen/BeamCliServicesBundleCommand.cpp | 9 +- .../Autogen/BeamCliServicesBundleCommand.h | 2 +- .../Autogen/BeamCliServicesDeployCommand.cpp | 16 +- .../Autogen/BeamCliServicesDeployCommand.h | 5 +- .../BeamCliServicesDockerStartCommand.cpp | 43 ++ .../BeamCliServicesDockerStartCommand.h | 104 +++++ .../BeamCliServicesDockerStatusCommand.cpp | 43 ++ .../BeamCliServicesDockerStatusCommand.h | 94 ++++ ...mCliServicesGetConnectionStringCommand.cpp | 43 ++ ...eamCliServicesGetConnectionStringCommand.h | 89 ++++ .../BeamCliServicesManifestsCommand.cpp | 9 +- .../Autogen/BeamCliServicesManifestsCommand.h | 45 +- .../Autogen/BeamCliServicesPromoteCommand.cpp | 9 +- .../Autogen/BeamCliServicesPromoteCommand.h | 45 +- .../CLI/Autogen/BeamCliServicesPsCommand.cpp | 9 +- .../CLI/Autogen/BeamCliServicesPsCommand.h | 43 +- .../BeamCliServicesRegistryCommand.cpp | 9 +- .../Autogen/BeamCliServicesRegistryCommand.h | 41 +- .../BeamCliServicesResetContainerCommand.cpp | 9 +- .../BeamCliServicesResetContainerCommand.h | 43 +- .../BeamCliServicesResetImageCommand.cpp | 9 +- .../BeamCliServicesResetImageCommand.h | 43 +- .../CLI/Autogen/BeamCliServicesRunCommand.cpp | 16 +- .../CLI/Autogen/BeamCliServicesRunCommand.h | 47 +- .../BeamCliServicesServiceLogsCommand.cpp | 9 +- .../BeamCliServicesServiceLogsCommand.h | 43 +- .../BeamCliServicesServiceMetricsCommand.cpp | 9 +- .../BeamCliServicesServiceMetricsCommand.h | 45 +- .../Autogen/BeamCliServicesStopCommand.cpp | 4 +- .../CLI/Autogen/BeamCliServicesStopCommand.h | 43 +- .../BeamCliServicesTemplatesCommand.cpp | 9 +- .../Autogen/BeamCliServicesTemplatesCommand.h | 41 +- ...BeamCliServicesUpdateDockerfileCommand.cpp | 4 +- .../BeamCliServicesUpdateDockerfileCommand.h | 41 +- .../BeamCliServicesUploadApiCommand.cpp | 9 +- .../Autogen/BeamCliServicesUploadApiCommand.h | 41 +- .../Autogen/BeamCliTempClearLogsCommand.cpp | 9 +- .../CLI/Autogen/BeamCliTempClearLogsCommand.h | 51 +- .../BeamCliTokenFromRefreshCommand.cpp | 9 +- .../Autogen/BeamCliTokenFromRefreshCommand.h | 43 +- .../Autogen/BeamCliTokenInspectCommand.cpp | 16 +- .../CLI/Autogen/BeamCliTokenInspectCommand.h | 45 +- .../CLI/Autogen/BeamCliTokenListCommand.cpp | 9 +- .../CLI/Autogen/BeamCliTokenListCommand.h | 3 +- .../Autogen/BeamCliTokenNewGuestCommand.cpp | 9 +- .../CLI/Autogen/BeamCliTokenNewGuestCommand.h | 41 +- .../BeamCliUnityCopyDotnetSrcCommand.cpp | 9 +- .../BeamCliUnityCopyDotnetSrcCommand.h | 41 +- ...liUnityDownloadAllNugetPackagesCommand.cpp | 9 +- ...mCliUnityDownloadAllNugetPackagesCommand.h | 41 +- ...eamCliUnityDownloadNugetPackageCommand.cpp | 9 +- .../BeamCliUnityDownloadNugetPackageCommand.h | 41 +- .../BeamCliUnityGetVersionInfoCommand.cpp | 9 +- .../BeamCliUnityGetVersionInfoCommand.h | 41 +- .../Autogen/BeamCliUnityManifestCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliUnityManifestCommand.h | 106 +++++ .../BeamCliUnityReleaseSharedCodeCommand.cpp | 9 +- .../BeamCliUnityReleaseSharedCodeCommand.h | 41 +- .../Autogen/BeamCliUnityRestoreCommand.cpp | 43 ++ .../CLI/Autogen/BeamCliUnityRestoreCommand.h | 83 ++++ .../BeamCliUnityUpdateReferencesCommand.cpp | 4 +- .../BeamCliUnityUpdateReferencesCommand.h | 45 +- .../CLI/Autogen/BeamCliVersionCommand.cpp | 9 +- .../CLI/Autogen/BeamCliVersionCommand.h | 41 +- .../BeamCliVersionConstructCommand.cpp | 9 +- .../Autogen/BeamCliVersionConstructCommand.h | 51 +- .../StreamData/DeployablePlanStreamData.h | 78 ++++ .../DeploymentDiffSummaryStreamData.h | 92 ++++ .../DeploymentManifestJsonDiffStreamData.h | 50 ++ .../StreamData/FederationEntryStreamData.h | 40 ++ .../StreamData/FederationInstanceStreamData.h | 11 +- .../StreamData/GetStatusResponseStreamData.h | 49 ++ .../ManifestServiceEntryStreamData.h | 66 +++ .../ManifestStorageEntryStreamData.h | 45 ++ .../StreamData/ManifestViewStreamData.h | 73 +++ ...ptionalArrayOfServiceComponentStreamData.h | 40 ++ ...ayOfServiceDependencyReferenceStreamData.h | 40 ++ ...ArrayOfServiceStorageReferenceStreamData.h | 41 ++ ...nalArrayOfServiceStorageStatusStreamData.h | 40 ++ .../StreamData/OptionalLongStreamData.h | 40 ++ .../StreamData/OptionalStringStreamData.h | 40 ++ .../StreamData/ServiceComponentStreamData.h | 35 ++ .../ServiceDependencyReferenceStreamData.h | 40 ++ .../ServiceFederationChangeStreamData.h | 45 ++ .../ServiceImageIdChangeStreamData.h | 45 ++ .../StreamData/ServiceReferenceStreamData.h | 95 ++++ .../ServiceStorageReferenceStreamData.h | 60 +++ .../ServiceStorageStatusStreamData.h | 50 ++ .../UnityAssemblyReferenceDataStreamData.h | 40 ++ .../Public/Subsystems/CLI/BeamCli.h | 16 +- .../Public/Subsystems/CLI/BeamCliCommand.h | 68 ++- .../Microservices/BeamMicroservicesEditor.h | 107 ++++- ...ealMicroserviceClients_GenerationPass.json | 2 +- README.md | 6 +- 250 files changed, 6932 insertions(+), 1938 deletions(-) create mode 100644 Microservices/services/LiveOpsDemoMS/BeamSourceGenConfig.json create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EBP_FederationIdTypePair.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBPI_MicroserviceWindowTab.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MS_LogEntry.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationInstanceCard.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationsTab.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceInspector.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceLogsAndMetricsTab.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicrostorageInspector.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_TeamShareTab.uasset create mode 100644 Plugins/BeamableCore/Content/Editor/Utility/BPL_EditorUtilities.uasset create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.h rename Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/{BeamCliFederationListenCommand.cpp => BeamCliDeploymentStatusCommand.cpp} (61%) rename Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/{BeamCliFederationListenCommand.h => BeamCliDeploymentStatusCommand.h} (70%) create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.cpp create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/GetStatusResponseStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestServiceEntryStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestStorageEntryStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h create mode 100644 Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h diff --git a/.beamable/connection-configuration.json b/.beamable/connection-configuration.json index 7552de64..e27d4057 100644 --- a/.beamable/connection-configuration.json +++ b/.beamable/connection-configuration.json @@ -1,5 +1,5 @@ { "host": "https://dev.api.beamable.com", "cid": "1731504735486980", - "pid": "DE_1743192982278144" + "pid": "DE_1731504735486981" } \ No newline at end of file diff --git a/BeamableUnreal.sln.DotSettings.user b/BeamableUnreal.sln.DotSettings.user index 830317df..91579840 100644 --- a/BeamableUnreal.sln.DotSettings.user +++ b/BeamableUnreal.sln.DotSettings.user @@ -1,2 +1,5 @@  - ForceIncluded \ No newline at end of file + ForceIncluded + ForceIncluded + ForceIncluded + ForceIncluded \ No newline at end of file diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini index 5d45fa96..90ca39c2 100644 --- a/Config/DefaultEditor.ini +++ b/Config/DefaultEditor.ini @@ -1,28 +1,11 @@ -[/Script/BeamableCoreEditor.BeamableEditorSettings] -+DeveloperUserSlots=MainEditorDeveloper -PerSlotDeveloperProjectData=(("MainEditorDeveloper", (CustomerName="uetest_0001",CustomerAlias="uetest_0001",AllRealms=((CID="1548264605446156",PID="DE_1548264605446159",ProjectName="game",RealmName="game-prod",RealmSecret="60392784-d8e1-40d4-8ad2-24a0f0f6d672"),(CID="1548264605446156",PID="DE_1548264605446158",ParentPID=(Val="DE_1548264605446159",IsSet=True),ProjectName="game",RealmName="game-staging",RealmSecret="080bb1e8-8cbc-4dac-a251-333e81cc7016"),(CID="1548264605446156",PID="DE_1548264605446157",ParentPID=(Val="DE_1548264605446158",IsSet=True),ProjectName="game",RealmName="game-dev",RealmSecret="108a8595-6218-48f1-b67d-297248a926ef"))))) -BeamableMainWindow=/BeamableCore/Editor/EWBP_BeamableWindow.EWBP_BeamableWindow - -[/Script/BeamableCoreEditor.BeamEditorSettings] -BeamableMainWindow=/BeamableCore/Editor/EWBP_BeamableWindow.EWBP_BeamableWindow -!CookedManifestsPath=__ClearArray__ -!CookedManifestsPath=__ClearArray__ -!UncookedManifestsPath=__ClearArray__ -!UncookedManifestsPath=__ClearArray__ -PerSlotDeveloperProjectData=() -OptionalTypePinColors=() -+CookedManifestsPath=(Path="/Game/Beamable/Content/Manifests/Cooked") -+UncookedManifestsPath=(Path="/Game/Beamable/Content/Manifests/Uncooked") - [/Script/BeamableCoreRuntimeEditor.BeamEditorSettings] -!CookedManifestsPath=__ClearArray__ -!UncookedManifestsPath=__ClearArray__ -PerSlotDeveloperProjectData=() -OptionalTypePinColors=() -BeamableMainWindow=/BeamableCore/Editor/EWBP_BeamableWindow.EWBP_BeamableWindow +CookedManifestsPath=(Path="/Game/Beamable/Content/Manifests/Cooked") -+UncookedManifestsPath=(Path="/Game/Beamable/Content/Manifests/Uncooked") bDisableInEngineEditing=False LocalContentViewConfigs=(("/Script/CoreUObject.Class'/Script/BeamableCore.BeamItemContent'", (BorderColor=(R=0.283149,G=0.181164,B=0.502886,A=1.000000),TypeForContentObject="/BeamableCore/Editor/Icons/IconBeam_Item.IconBeam_Item")),("/Script/CoreUObject.Class'/Script/BeamableCore.BeamCurrencyContent'", (BorderColor=(R=0.283149,G=0.181164,B=0.502886,A=1.000000),TypeForContentObject="/BeamableCore/Editor/Icons/IconBeam_Currency.IconBeam_Currency")),("/Script/CoreUObject.Class'/Script/BeamableCore.BeamGameTypeContent'", (BorderColor=(R=0.283149,G=0.181164,B=0.502886,A=1.000000),TypeForContentObject="/BeamableCore/Editor/Icons/IconBeam_GameType.IconBeam_GameType"))) LocalContentStatusIcons=((Beam_LocalContentCreated, "/BeamableCore/Editor/Icons/IconStatus_Added.IconStatus_Added"),(Beam_LocalContentDeleted, "/BeamableCore/Editor/Icons/IconStatus_Deleted.IconStatus_Deleted"),(Beam_LocalContentModified, "/BeamableCore/Editor/Icons/IconStatus_Modified.IconStatus_Modified"),(Beam_LocalContentUpToDate, "/BeamableCore/Editor/Icons/IconStatus_NC.IconStatus_NC")) +PerSlotDeveloperProjectData=(("MainEditorDeveloper", (CustomerName="ue-beam-sdk",CustomerAlias="ue-beam-sdk",AllRealms=((CID=(AsString="1731504735486980",AsLong=1731504735486980),PID=(AsString="DE_1731504735486983"),ProjectName="demo",RealmName="demo-prod"),(CID=(AsString="1731504735486980",AsLong=1731504735486980),PID=(AsString="DE_1731504735486982"),ParentPID=(Val=(AsString="DE_1731504735486983"),IsSet=True),ProjectName="demo",RealmName="demo-staging"),(CID=(AsString="1731504735486980",AsLong=1731504735486980),PID=(AsString="DE_1731504735486981"),ParentPID=(Val=(AsString="DE_1731504735486982"),IsSet=True),ProjectName="demo",RealmName="demo-dev"),(CID=(AsString="1731504735486980",AsLong=1731504735486980),PID=(AsString="DE_1743192982278144"),ParentPID=(Val=(AsString="DE_1731504735486981"),IsSet=True),ProjectName="demo",RealmName="hathora-demo"))))) +OptionalTypePinColors=() +BeamableMainWindow=/BeamableCore/Editor/EWBP_BeamableWindow.EWBP_BeamableWindow + +[/Script/AdvancedPreviewScene.SharedProfiles] diff --git a/Microservices/services/LiveOpsDemoMS/BeamSourceGenConfig.json b/Microservices/services/LiveOpsDemoMS/BeamSourceGenConfig.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/Microservices/services/LiveOpsDemoMS/BeamSourceGenConfig.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Content/EWBP_ContentTileThumbnail.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Content/EWBP_ContentTileThumbnail.uasset index abdb6b38..a69aafcb 100644 --- a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Content/EWBP_ContentTileThumbnail.uasset +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Content/EWBP_ContentTileThumbnail.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:586c4ffb3c1b6bfc44b6a459cadaa9462eae20496b667674a5a4e06e1427a310 -size 299624 +oid sha256:b640ff462f19ba8478ffe6883d81238220a3183576d6da2aa3684931c65d80bb +size 299083 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/EWBP_BeamManagement.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/EWBP_BeamManagement.uasset index f2056dd0..bd9950cd 100644 --- a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/EWBP_BeamManagement.uasset +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/EWBP_BeamManagement.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78caf05366518f07acf2570475526056d99084ef231fd37c0a491ae134d60a38 -size 494757 +oid sha256:db9dddefd6d9d7d11d5e8558402adb9ffec597e25c12b8e549e00854a44ef188 +size 495684 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EBP_FederationIdTypePair.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EBP_FederationIdTypePair.uasset new file mode 100644 index 00000000..0bad368f --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EBP_FederationIdTypePair.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93768abb6b2bf57c5ea0ac08bb75814378a2f8e725223000d173839755632365 +size 10642 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBPI_MicroserviceWindowTab.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBPI_MicroserviceWindowTab.uasset new file mode 100644 index 00000000..701e629a --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBPI_MicroserviceWindowTab.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b208ad6224183225450b8669a6b3405f307f43ab51e71519352cf0ba499f0b53 +size 10759 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MS_LogEntry.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MS_LogEntry.uasset new file mode 100644 index 00000000..b53c1647 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MS_LogEntry.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07d320eb13f3adc3c1b9bb880bd783060d88ffe59060eeafd03f283b5a27f88 +size 110080 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationInstanceCard.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationInstanceCard.uasset new file mode 100644 index 00000000..0000a163 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationInstanceCard.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0e7506ce3f26bf4dcf5cd1fa3c6db61875ca4a3c9b0f5b36641b6e1fb43acc4 +size 119808 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationsTab.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationsTab.uasset new file mode 100644 index 00000000..7d8d3358 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceFederationsTab.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3805546f67d85441f5a7aef21933ebbdffab985fb8ee8a53b646c2bebbb46510 +size 237168 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceInspector.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceInspector.uasset new file mode 100644 index 00000000..0d11aaf5 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceInspector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b571f8cf00714c602f634686956b13dc80012b106af599dfc0d373596becdc0 +size 316463 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceLogsAndMetricsTab.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceLogsAndMetricsTab.uasset new file mode 100644 index 00000000..4c114222 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceLogsAndMetricsTab.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:009bb7fe6bc570b52249b563536f34665b99cda2836ad0ece45741c08efc037f +size 240727 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceSummaryCard.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceSummaryCard.uasset index ffac7ba3..90eceda4 100644 --- a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceSummaryCard.uasset +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicroserviceSummaryCard.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49df998824048d1af33129231a2987f0e088f239a9e497496f4251744156a11b -size 316564 +oid sha256:c2fd78beb57e0abe6cdaae2a653d36b12be1d3535c8d1d9a30ef41f0d1f817c3 +size 253271 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_Microservices.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_Microservices.uasset index b61b9d12..9244217d 100644 --- a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_Microservices.uasset +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_Microservices.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eaabdf48c471fce63cd126a2ca290fd1721a81269adf35255890b8f646e69f4c -size 229937 +oid sha256:771541dc367b430efae2706a16b4239907563f3076e095f144d3e03b25dd6d9a +size 286208 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicrostorageInspector.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicrostorageInspector.uasset new file mode 100644 index 00000000..3ee37a11 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_MicrostorageInspector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:364423c2686271a3bf6d0d0cb2092aba1b1330cea3b583964f7934c578f4c53f +size 83031 diff --git a/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_TeamShareTab.uasset b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_TeamShareTab.uasset new file mode 100644 index 00000000..b35bd972 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/BeamableWindowWidgets/Microservices/EWBP_TeamShareTab.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e213f9a616cb988ecdaa3d540305a0421ac8d2eeb272b4d5dcde4e664ceb71a2 +size 100104 diff --git a/Plugins/BeamableCore/Content/Editor/Utility/BPL_EditorUtilities.uasset b/Plugins/BeamableCore/Content/Editor/Utility/BPL_EditorUtilities.uasset new file mode 100644 index 00000000..fd13cd89 --- /dev/null +++ b/Plugins/BeamableCore/Content/Editor/Utility/BPL_EditorUtilities.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea526f698292d44d4d0f5dab146468ece6bfa38402102acb1cdcf458847d1600 +size 78705 diff --git a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamFlow/K2BeamNode_Operation.cpp b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamFlow/K2BeamNode_Operation.cpp index 3d607bc8..603dfa5f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamFlow/K2BeamNode_Operation.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamFlow/K2BeamNode_Operation.cpp @@ -35,8 +35,7 @@ void UK2BeamNode_Operation::BuildPinToolTipMap(TMap& OutTooltipM OutTooltipMap.Add(OP_Operation_UserSlots, TEXT("The user slot for the user performing this operation. Only relevant if developing a game with local multiplayer.")); OutTooltipMap.Add(OP_Operation_Event, TEXT("The data for the raised operation event. Use this to understand what happened and react accordingly.")); - OutTooltipMap.Add(OP_Operation_Expanded_OnSuccess, TEXT("This flow only runs for events of type SUCCESS.")); - OutTooltipMap.Add(OP_Operation_Expanded_OnOthers, TEXT("This flow runs for all events that don't have specific flows for them. Think of it as a 'default' case in the switch statement.")); + OutTooltipMap.Add(OP_Operation_Expanded_OnSuccess, TEXT("This flow only runs for events of type SUCCESS.")); OutTooltipMap.Add(OP_Operation_Expanded_OnError, TEXT("This flow runs for events of type ERROR.")); OutTooltipMap.Add(OP_Operation_Expanded_OnCancelled, TEXT("This flow runs for events of type CANCELLED.")); @@ -132,20 +131,11 @@ void UK2BeamNode_Operation::PostEditChangeProperty(FPropertyChangedEvent& Proper { Super::PostEditChangeProperty(PropertyChangedEvent); const auto ExpandModePropName = GET_MEMBER_NAME_CHECKED(UK2BeamNode_Operation, CurrentExpandedMode); - const auto SuccessSubEventsPropName = GET_MEMBER_NAME_CHECKED(UK2BeamNode_Operation, RelevantSuccessEventIds); - const auto ErrorSubEventsPropName = GET_MEMBER_NAME_CHECKED(UK2BeamNode_Operation, RelevantErrorEventIds); - const auto CancelledSubEventsPropName = GET_MEMBER_NAME_CHECKED(UK2BeamNode_Operation, RelevantCancelledEventIds); if (PropertyChangedEvent.Property) { const auto CppName = PropertyChangedEvent.Property->GetNameCPP(); const auto bChangedExpandedMode = CppName.Equals(ExpandModePropName.ToString()); - const auto bRelevantSubEvent = CurrentExpandedMode == OnSubEvents && ( - CppName.Equals(SuccessSubEventsPropName.ToString()) || - CppName.Equals(ErrorSubEventsPropName.ToString()) || - CppName.Equals(CancelledSubEventsPropName.ToString()) - ); - - const auto bShouldRebuildPins = bChangedExpandedMode || bRelevantSubEvent; + const auto bShouldRebuildPins = bChangedExpandedMode; if (bShouldRebuildPins) { if (bIsInBeamFlowMode) @@ -270,29 +260,7 @@ void UK2BeamNode_Operation::EnforceBeamFlowModePins() EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Exec, OP_Operation_OnOperationEvent, PinTooltipMap[OP_Operation_OnOperationEvent]); EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Struct, OP_Operation_Event, PinTooltipMap[OP_Operation_Event], {}, FBeamOperationEvent::StaticStruct()); break; - } - case Success_NonSuccess: - { - // Remove all pins except the ones this mode cares about - RemoveAllPinsExcept(this, [this](const UEdGraphNode*, const UEdGraphPin* Pin) - { - const TArray AllowedPins{ - UEdGraphSchema_K2::PN_Then, - OP_Operation_Handle, - OP_Operation_UserSlots, - OP_Operation_Expanded_OnSuccess, - OP_Operation_Expanded_OnOthers, - OP_Operation_Event, - }; - return Pin->Direction == EGPD_Input || AllowedPins.Contains(Pin->PinName); - }); - - EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Struct, OP_Operation_UserSlots, PinTooltipMap[OP_Operation_UserSlots], Params, FUserSlot::StaticStruct()); - EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Exec, OP_Operation_Expanded_OnSuccess, PinTooltipMap[OP_Operation_Expanded_OnSuccess]); - EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Exec, OP_Operation_Expanded_OnOthers, PinTooltipMap[OP_Operation_Expanded_OnOthers]); - EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Struct, OP_Operation_Event, PinTooltipMap[OP_Operation_Event], {}, FBeamOperationEvent::StaticStruct()); - break; - } + } case Success_Error_Cancelled: { // Remove all pins except the ones this mode cares about @@ -332,20 +300,13 @@ void UK2BeamNode_Operation::EnforceBeamFlowModePins() TArray ErrorTypeSubEvents = GetOperationEventIds(OET_ERROR); TArray CancelledTypeSubEvents = GetOperationEventIds(OET_CANCELLED); - const auto EnforceRelevantEventPins = [this](const TArray& AvailableSubEvents, const TArray& RelevantSubEvents, const FName& BaseExecPinName, - int& AddedCount, TArray& CreatedFlowPins, TArray& NotRelevantSubEvents) + const auto EnforceRelevantEventPins = [this](const TArray& AvailableSubEvents, const FName& BaseExecPinName, int& AddedCount, TArray& CreatedFlowPins) { for (int i = 0; i < AvailableSubEvents.Num(); ++i) { const auto& SubEvent = AvailableSubEvents[i]; const auto& SubEventName = SubEvent.ToString(); - if (!RelevantSubEvents.Contains(SubEvent)) - { - NotRelevantSubEvents.Add(SubEvent); - continue; - } - // If we have the event name as default, we just name it as the regular operation. Otherwise we name it const auto ExecPinName = SubEvent == NAME_None ? BaseExecPinName : FName(FString::Printf(TEXT("%s - %s"), *BaseExecPinName.ToString(), *SubEventName)); const auto ExecPinTooltip = PinTooltipMap[ExecPinName]; @@ -359,9 +320,7 @@ void UK2BeamNode_Operation::EnforceBeamFlowModePins() // Enforce the sub events for each type are added in order. auto RelevantEventsAdded = 0; SuccessEventFlowPinNames.Empty(); - IrrelevantSuccessEventIds.Empty(); - EnforceRelevantEventPins(SuccessTypeSubEvents, RelevantSuccessEventIds, OP_Operation_Expanded_OnSuccess, - RelevantEventsAdded, SuccessEventFlowPinNames, IrrelevantSuccessEventIds); + EnforceRelevantEventPins(SuccessTypeSubEvents, OP_Operation_Expanded_OnSuccess, RelevantEventsAdded, SuccessEventFlowPinNames); for (int i = 0; i < SuccessEventFlowPinNames.Num(); ++i) { PinsToKeep.Add(SuccessEventFlowPinNames[i]); @@ -372,30 +331,19 @@ void UK2BeamNode_Operation::EnforceBeamFlowModePins() EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Struct, OP_Operation_UserSlots, PinTooltipMap[OP_Operation_UserSlots], Params, FUserSlot::StaticStruct()); ErrorEventFlowPinNames.Empty(); - IrrelevantErrorEventIds.Empty(); - EnforceRelevantEventPins(ErrorTypeSubEvents, RelevantErrorEventIds, OP_Operation_Expanded_OnError, - RelevantEventsAdded, ErrorEventFlowPinNames, IrrelevantErrorEventIds); + EnforceRelevantEventPins(ErrorTypeSubEvents, OP_Operation_Expanded_OnError, RelevantEventsAdded, ErrorEventFlowPinNames); for (int i = 0; i < ErrorEventFlowPinNames.Num(); ++i) { PinsToKeep.Add(ErrorEventFlowPinNames[i]); } CancelledEventFlowPinNames.Empty(); - IrrelevantCancelledEventIds.Empty(); - EnforceRelevantEventPins(CancelledTypeSubEvents, RelevantCancelledEventIds, OP_Operation_Expanded_OnCancelled, - RelevantEventsAdded, CancelledEventFlowPinNames, IrrelevantCancelledEventIds); + EnforceRelevantEventPins(CancelledTypeSubEvents, OP_Operation_Expanded_OnCancelled, RelevantEventsAdded, CancelledEventFlowPinNames); for (int i = 0; i < CancelledEventFlowPinNames.Num(); ++i) { PinsToKeep.Add(CancelledEventFlowPinNames[i]); } - // If we are not handling all errors, we have a catch all that takes in the raw EventData string as it's parameter pin. - if (RelevantEventsAdded < SuccessTypeSubEvents.Num() + ErrorTypeSubEvents.Num() + CancelledTypeSubEvents.Num()) - { - EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Exec, OP_Operation_Expanded_OnOthers, PinTooltipMap[OP_Operation_Expanded_OnOthers]); - PinsToKeep.Add(OP_Operation_Expanded_OnOthers); - } - // We always expose the Event Data --- this is the entire `FBeamOperationEvent` struct and is valid in all flows here. EnforcePinExistence(this, EGPD_Output, UEdGraphSchema_K2::PC_Struct, OP_Operation_Event, PinTooltipMap[OP_Operation_Event], {}, FBeamOperationEvent::StaticStruct()); PinsToKeep.Add(OP_Operation_Event); @@ -444,33 +392,7 @@ void UK2BeamNode_Operation::ExpandBeamFlowMode(FKismetCompilerContext& CompilerC SetUpPinsForOnCompleteBeamFlow(CompilerContext, SourceGraph, CallOperationFunction, OutPerFlowNodes[1], OutPerFlowEventNodes[1], CompleteFlowPin, ResultPin, UserSlotsPin); break; - } - case Success_NonSuccess: - { - // Gets the relevant pins - const auto HandlePin = FindPin(OP_Operation_Handle); - const auto UserSlotsPin = FindPin(OP_Operation_UserSlots); // This can be either an array pin or a single pin --- depends on whether or not this operation involves multiple users. - const auto SuccessFlowPin = FindPin(OP_Operation_Expanded_OnSuccess); - const auto OthersFlowPin = FindPin(OP_Operation_Expanded_OnOthers); - - const TArray StartingGraphs{ThenPin, SuccessFlowPin, OthersFlowPin}; - const TArray RelevantFunctionNames{GET_FUNCTION_NAME_CHECKED(UBeamRequestTracker, WaitAll)}; - TArray> OutPerFlowNodes; - TArray> OutPerFlowEventNodes; - GetPerBeamFlowNodes(CompilerContext, this, StartingGraphs, RelevantFunctionNames, OutPerFlowNodes, OutPerFlowEventNodes); - - // Validate that the Synchronous Flow does not use Pins that are not available for them. - ValidateOutputPinUsage(CompilerContext, {UserSlotsPin}, {Operation_ResultPinInSynchronousFlowMessage, Operation_UserSlotsPinInSynchronousFlowMessage}, - OutPerFlowNodes[0]); - - // Make sure all output pins in Node node relevant to the complete callback that are connected to nodes in the synchronous flow are correctly configured. - SetUpPinsForSynchronousFlow(CompilerContext, OutPerFlowNodes[0], OutPerFlowEventNodes[0], CallOperationFunction, ThenPin, HandlePin); - - // Make sure all output pins in Node node relevant to the complete callback that are connected to nodes in the complete flow are correctly configured. - SetUpPinsForSuccessNotSuccessBeamFlow(CompilerContext, SourceGraph, CallOperationFunction, SuccessFlowPin, UserSlotsPin, OthersFlowPin, OutPerFlowNodes, - OutPerFlowEventNodes); - break; - } + } case Success_Error_Cancelled: { // Gets the relevant pins @@ -508,11 +430,10 @@ void UK2BeamNode_Operation::ExpandBeamFlowMode(FKismetCompilerContext& CompilerC // Gets the relevant pins const auto HandlePin = FindPin(OP_Operation_Handle); const auto UserSlotsPin = FindPin(OP_Operation_UserSlots); // This can be either an array pin or a single pin --- depends on whether or not this operation involves multiple users. - const auto OthersFlowPin = FindPin(OP_Operation_Expanded_OnOthers); - const auto OthersDataPin = FindPin(OP_Operation_Event); + + const auto EventPin = FindPin(OP_Operation_Event); - TArray StartingGraphs{ThenPin,}; - if (OthersFlowPin) StartingGraphs.Add(OthersFlowPin); + TArray StartingGraphs{ThenPin,}; for (const auto& Pin : SuccessEventFlowPinNames) StartingGraphs.Add(FindPin(Pin)); for (const auto& Pin : ErrorEventFlowPinNames) StartingGraphs.Add(FindPin(Pin)); for (const auto& Pin : CancelledEventFlowPinNames) StartingGraphs.Add(FindPin(Pin)); @@ -524,16 +445,16 @@ void UK2BeamNode_Operation::ExpandBeamFlowMode(FKismetCompilerContext& CompilerC // Validate that the Synchronous Flow does not use Pins that are not available for them. TArray InvalidSynchronousFlowPins = {UserSlotsPin,}; - if (OthersDataPin) InvalidSynchronousFlowPins.Add(OthersDataPin); + if (EventPin) InvalidSynchronousFlowPins.Add(EventPin); TArray InvalidSynchronousFlowPinsValidationErrors = {Operation_UserSlotsPinInSynchronousFlowMessage,}; - if (OthersDataPin) InvalidSynchronousFlowPinsValidationErrors.Add(Operation_DataPinInSynchronousFlowMessage); + if (EventPin) InvalidSynchronousFlowPinsValidationErrors.Add(Operation_DataPinInSynchronousFlowMessage); ValidateOutputPinUsage(CompilerContext, InvalidSynchronousFlowPins, InvalidSynchronousFlowPinsValidationErrors, OutPerFlowNodes[0]); // Make sure all output pins in Node node relevant to the complete callback that are connected to nodes in the synchronous flow are correctly configured. SetUpPinsForSynchronousFlow(CompilerContext, OutPerFlowNodes[0], OutPerFlowEventNodes[0], CallOperationFunction, ThenPin, HandlePin); // Make sure all output pins in Node node relevant to the complete callback that are connected to nodes in the complete flow are correctly configured. - SetUpPinsForSubEventsBeamFlow(CompilerContext, SourceGraph, CallOperationFunction, OthersFlowPin, OthersDataPin, OutPerFlowNodes, OutPerFlowEventNodes); + SetUpPinsForSubEventsBeamFlow(CompilerContext, SourceGraph, CallOperationFunction, EventPin, OutPerFlowNodes, OutPerFlowEventNodes); break; } default: break; @@ -733,8 +654,7 @@ void UK2BeamNode_Operation::SetUpPinsForSuccessErrorCancelledBeamFlow(FKismetCom } void UK2BeamNode_Operation::SetUpPinsForSubEventsBeamFlow(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UK2Node_CallFunction* CallOperationFunction, - UEdGraphPin* const OthersFlowPin, UEdGraphPin* const OthersDataPin, - const TArray>& PerFlowNodes, const TArray>& PerFlowEventNodes) + UEdGraphPin* const EventStructPin, const TArray>& PerFlowNodes, const TArray>& PerFlowEventNodes) { const UEdGraphSchema_K2* K2Schema = GetDefault(); @@ -753,24 +673,22 @@ void UK2BeamNode_Operation::SetUpPinsForSubEventsBeamFlow(FKismetCompilerContext BreakOperationResultNode->FindPin(GET_MEMBER_NAME_CHECKED(FBeamOperationEvent, EventType))); // Expand the Success SubEvents - ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, OthersFlowPin, SuccessEventFlowPinNames, - RelevantSuccessEventIds, IrrelevantSuccessEventIds, BreakOperationResultNode, + ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, GetOperationEventIds(OET_SUCCESS), SuccessEventFlowPinNames, BreakOperationResultNode, SwitchEnum->FindPin(StaticEnum()->GetNameByValue(OET_SUCCESS))); // Expand the Error SubEvents - ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, OthersFlowPin, ErrorEventFlowPinNames, - RelevantErrorEventIds, IrrelevantErrorEventIds, BreakOperationResultNode, + ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, GetOperationEventIds(OET_ERROR), ErrorEventFlowPinNames, BreakOperationResultNode, SwitchEnum->FindPin(StaticEnum()->GetNameByValue(OET_ERROR))); + // Expand the Cancelled SubEvents - ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, OthersFlowPin, CancelledEventFlowPinNames, - RelevantCancelledEventIds, IrrelevantCancelledEventIds, BreakOperationResultNode, + ExpandBeamFlowSubEvents(CompilerContext, SourceGraph, K2Schema, GetOperationEventIds(OET_CANCELLED), CancelledEventFlowPinNames, BreakOperationResultNode, SwitchEnum->FindPin(StaticEnum()->GetNameByValue(OET_CANCELLED))); for (int i = 0; i < PerFlowNodes.Num(); ++i) { - // Replace the connections of any of the nodes' pins with any matching pin in the first list with its corresponding pin in the second list. - const TArray NodePins{OthersDataPin}; + // Replace the connections of the nodes' pins with any matching pin in the first list with its corresponding pin in the second list. + const TArray NodePins{EventStructPin}; const TArray IntermediatePins{OperationEventPin}; const auto Flow = PerFlowNodes[i]; @@ -786,37 +704,26 @@ void UK2BeamNode_Operation::SetUpPinsForSubEventsBeamFlow(FKismetCompilerContext } void UK2BeamNode_Operation::ExpandBeamFlowSubEvents(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, - UEdGraphPin* const OthersFlowPin, const TArray& EventsFlowPinNames, const TArray& RelevantEventIds, - const TArray& IrrelevantEventIds, + const TArray& EventIds, const TArray& EventsFlowPinNames, UK2Node_BreakStruct* const BreakOperationResultNode, UEdGraphPin* const SubEventSwitchExecPin) { const auto SubTypeCodePin = BreakOperationResultNode->FindPin(GET_MEMBER_NAME_CHECKED(FBeamOperationEvent, EventId)); - // Switch on it out of the EventIds pin of the EventType switch - const auto SubEventSwitch = CreateSwitchNameNode(this, CompilerContext, SourceGraph, K2Schema, RelevantEventIds, SubEventSwitchExecPin, SubTypeCodePin); + // Switch on it out of the EventIds pin of the EventType switch + const auto SubEventSwitch = CreateSwitchNameNode(this, CompilerContext, SourceGraph, K2Schema, EventIds, SubEventSwitchExecPin, SubTypeCodePin); for (int i = 0; i < EventsFlowPinNames.Num(); ++i) { const auto FlowPin = FindPin(EventsFlowPinNames[i]); // Get the intermediate pins we'll need to connect to all the places our custom node's output pins are connected to. // If we expect a string, than we forward the raw event data string. Otherwise... - const auto SubEventValue = RelevantEventIds[i]; + const auto SubEventValue = EventIds[i]; auto IntermediateSubEventFlowPin = SubEventSwitch->FindPin(SubEventValue); // Get the flow pins const auto SuccessFlowMoved = CompilerContext.MovePinLinksToIntermediate(*FlowPin, *IntermediateSubEventFlowPin); check(!SuccessFlowMoved.IsFatal()); } - - // Move the execution flow of all non-captured cases to the others flow --- only if it exists. - if (OthersFlowPin) - { - for (int i = 0; i < IrrelevantEventIds.Num(); ++i) - { - const auto IntermediateNonRelevantFlowPin = SubEventSwitch->FindPin(IrrelevantEventIds[i]); - const auto NonRelevantFlowMoved = CompilerContext.CopyPinLinksToIntermediate(*OthersFlowPin, *IntermediateNonRelevantFlowPin); - } - } } #undef LOCTEXT_NAMESPACE diff --git a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamK2.cpp b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamK2.cpp index c7add231..6e8d7faf 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamK2.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Private/BeamK2.cpp @@ -7,6 +7,7 @@ #include "K2Node_GetArrayItem.h" #include "K2Node_MakeArray.h" #include "K2Node_SwitchInteger.h" +#include "K2Node_SwitchName.h" #include "K2Node_SwitchString.h" #include "KismetCompiler.h" @@ -419,15 +420,14 @@ UK2Node_SwitchEnum* BeamK2::CreateSwitchEnumNode(UEdGraphNode* CustomNode, FKism return SwitchEnum; } -UK2Node_SwitchString* BeamK2::CreateSwitchNameNode(UEdGraphNode* CustomNode, FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, TArray const StringOptions, +UK2Node_SwitchName* BeamK2::CreateSwitchNameNode(UEdGraphNode* CustomNode, FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, TArray const StringOptions, UEdGraphPin* ExecFlowPin, UEdGraphPin* SwitchOnValuePin) { - UK2Node_SwitchString* Switch = CompilerContext.SpawnIntermediateNode(CustomNode, SourceGraph); + UK2Node_SwitchName* Switch = CompilerContext.SpawnIntermediateNode(CustomNode, SourceGraph); // This is the equivalent of the SetEnum call --- we can't use it since it's not exposed for other modules. It seems unclear as to why that wouldn't be accessible... Switch->PinNames = StringOptions; - Switch->bHasDefaultPin = true; - Switch->bIsCaseSensitive = false; + Switch->bHasDefaultPin = true; Switch->AllocateDefaultPins(); K2Schema->TryCreateConnection(Switch->GetSelectionPin(), SwitchOnValuePin); diff --git a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamFlow/K2BeamNode_Operation.h b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamFlow/K2BeamNode_Operation.h index 7b50e342..463f8487 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamFlow/K2BeamNode_Operation.h +++ b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamFlow/K2BeamNode_Operation.h @@ -16,8 +16,7 @@ class UK2Node_Event; UENUM(BlueprintType) enum EOperationNodeModes { - OnCompleted, - Success_NonSuccess, + OnCompleted, Success_Error_Cancelled, OnSubEvents }; @@ -38,8 +37,7 @@ class BEAMABLECOREBLUEPRINTNODES_API UK2BeamNode_Operation : public UK2BeamNode_ const FName OP_Operation_Expanded_OnSuccess = FName(TEXT("OnSuccess")); const FName OP_Operation_Expanded_OnError = FName(TEXT("OnError")); - const FName OP_Operation_Expanded_OnCancelled = FName(TEXT("OnCancelled")); - const FName OP_Operation_Expanded_OnOthers = FName(TEXT("OnOthers")); + const FName OP_Operation_Expanded_OnCancelled = FName(TEXT("OnCancelled")); const FString Operation_InvalidPinInFlowMessage = LOCTEXT("InvalidPinInFlowOfBeamOperationNode_Error", "Node @@ in {0} Flow is attempting to use the {1} Pin! That is only available on {2} Flow(s)!") @@ -65,23 +63,6 @@ class BEAMABLECOREBLUEPRINTNODES_API UK2BeamNode_Operation : public UK2BeamNode_ UPROPERTY(EditAnywhere, Category="Beam Flow|Operations") TEnumAsByte CurrentExpandedMode{OnCompleted}; - /** - * @brief We keep track of the sub events we care about. By default, we care about the final success/error/cancel event that the operation emits. - * All cases that you don't explicitly care about when you declare your own operation-specific enum are handled by a catch-all "others" flow. - */ - UPROPERTY(EditAnywhere, Category="Beam Flow|Operations") - TArray RelevantSuccessEventIds{NAME_None}; - UPROPERTY(EditAnywhere, Category="Beam Flow|Operations") - TArray RelevantErrorEventIds{NAME_None}; - UPROPERTY(EditAnywhere, Category="Beam Flow|Operations") - TArray RelevantCancelledEventIds{NAME_None}; - UPROPERTY() - TArray IrrelevantSuccessEventIds; - UPROPERTY() - TArray IrrelevantErrorEventIds; - UPROPERTY() - TArray IrrelevantCancelledEventIds; - UPROPERTY() TArray SuccessEventFlowPinNames; UPROPERTY() @@ -175,14 +156,11 @@ class BEAMABLECOREBLUEPRINTNODES_API UK2BeamNode_Operation : public UK2BeamNode_ TArray> OutPerFlowNodes, TArray> OutPerFlowEventNodes); void SetUpPinsForSubEventsBeamFlow(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UK2Node_CallFunction* CallOperationFunction, - UEdGraphPin* OthersFlowPin, UEdGraphPin* OthersDataPin, const TArray>& PerFlowNodes, + UEdGraphPin* EventStructPin, const TArray>& PerFlowNodes, const TArray>& PerFlowEventNodes); - void ExpandBeamFlowSubEvents(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, - UEdGraphPin* OthersFlowPin, - const TArray& EventsFlowPinNames, - const TArray& RelevantEventIds, - const TArray& IrrelevantEventIds, UK2Node_BreakStruct* BreakOperationResultNode, UEdGraphPin* SubEventSwitchExecPin); + void ExpandBeamFlowSubEvents(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, + const TArray& EventIds, const TArray& EventsFlowPinNames, UK2Node_BreakStruct* BreakOperationResultNode, UEdGraphPin* SubEventSwitchExecPin); }; #undef LOCTEXT_NAMESPACE diff --git a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamK2.h b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamK2.h index 1fba22b9..1f45dbe8 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamK2.h +++ b/Plugins/BeamableCore/Source/BeamableCoreBlueprintNodes/Public/BeamK2.h @@ -5,11 +5,11 @@ #include "K2Node_IfThenElse.h" #include "K2Node_MakeArray.h" #include "K2Node_SwitchEnum.h" +#include "K2Node_SwitchName.h" #include "Kismet2/BlueprintEditorUtils.h" #define LOCTEXT_NAMESPACE "BeamK2" -class UK2Node_SwitchString; namespace BeamK2 { @@ -68,7 +68,7 @@ namespace BeamK2 /** * @brief Utility that creates a correctly configured SwitchString node following the given "ExecFlowPin" and switching on the given "SwitchOnValuePin". */ - UK2Node_SwitchString* CreateSwitchNameNode(UEdGraphNode* CustomNode, FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, TArray const StringOptions, + UK2Node_SwitchName* CreateSwitchNameNode(UEdGraphNode* CustomNode, FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph, const UEdGraphSchema_K2* K2Schema, TArray const StringOptions, UEdGraphPin* ExecFlowPin, UEdGraphPin* SwitchOnValuePin); /** diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntime/Private/Subsystems/Inventory/BeamInventorySubsystem.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntime/Private/Subsystems/Inventory/BeamInventorySubsystem.cpp index 84c4e250..e07d5351 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntime/Private/Subsystems/Inventory/BeamInventorySubsystem.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntime/Private/Subsystems/Inventory/BeamInventorySubsystem.cpp @@ -335,17 +335,18 @@ void UBeamInventorySubsystem::OnUserSignedIn_Implementation(const FUserSlot& Use { UPostInventoryRequest* Req = UPostInventoryRequest::Make(BeamRealmUser.GamerTag, FOptionalArrayOfString{InventoryRefreshNotificationMessage.Scopes}, GetTransientPackage(), {}); - const FOnPostInventoryFullResponse PostInventoryHandler = FOnPostInventoryFullResponse::CreateLambda([this](const FBeamFullResponse& Resp) - { - FBeamRealmUser RealmUser; - if (GEngine->GetEngineSubsystem()->GetUserDataAtSlot(Resp.Context.UserSlot, RealmUser, this)) + const FOnPostInventoryFullResponse PostInventoryHandler = FOnPostInventoryFullResponse::CreateLambda( + [this, InventoryRefreshNotificationMessage](const FBeamFullResponse& Resp) { - FBeamInventoryState& Inventory = *Inventories.Find(RealmUser.GamerTag); - const UInventoryView* InventoryView = Resp.SuccessData; - MergeInventoryViewIntoState(InventoryView, Inventory); - InvokeOnInventoryRefreshed(Inventory.OwnerPlayerGamerTag, Inventory.OwnerPlayer); - } - }); + FBeamRealmUser RealmUser; + if (GEngine->GetEngineSubsystem()->GetUserDataAtSlot(Resp.Context.UserSlot, RealmUser, this)) + { + FBeamInventoryState& Inventory = *Inventories.Find(RealmUser.GamerTag); + const UInventoryView* InventoryView = Resp.SuccessData; + MergeInventoryViewIntoState(InventoryView, Inventory, InventoryRefreshNotificationMessage.Scopes); + InvokeOnInventoryRefreshed(Inventory.OwnerPlayerGamerTag, Inventory.OwnerPlayer); + } + }); FBeamRequestContext Ctx; InventoryApi->CPP_PostInventory(UserSlot, Req, PostInventoryHandler, Ctx, {}, this); }); @@ -603,7 +604,7 @@ bool UBeamInventorySubsystem::FetchInventoryForSlot(FUserSlot Player, FBeamOpera if (Resp.State == RS_Success) { FBeamInventoryState& Inventory = *Inventories.Find(UserData.GamerTag); - MergeInventoryViewIntoState(Resp.SuccessData, Inventory); + MergeInventoryViewIntoState(Resp.SuccessData, Inventory, {}); InvokeOnInventoryRefreshed(Inventory.OwnerPlayerGamerTag, Inventory.OwnerPlayer); Runtime->RequestTrackerSystem->TriggerOperationSuccess(Op, TEXT("")); return; @@ -630,7 +631,7 @@ bool UBeamInventorySubsystem::FetchInventoryForPlayer(FUserSlot RequestingSlot, if (Resp.State == RS_Success) { FBeamInventoryState& Inventory = *Inventories.Find(GamerTag); - MergeInventoryViewIntoState(Resp.SuccessData, Inventory); + MergeInventoryViewIntoState(Resp.SuccessData, Inventory, {}); InvokeOnInventoryRefreshed(Inventory.OwnerPlayerGamerTag, Inventory.OwnerPlayer); Runtime->RequestTrackerSystem->TriggerOperationSuccess(Op, TEXT("")); return; @@ -713,46 +714,159 @@ bool UBeamInventorySubsystem::CommitInventoryUpdate(FUserSlot Player, FBeamOpera return true; } -void UBeamInventorySubsystem::MergeInventoryViewIntoState(const UInventoryView* InventoryView, FBeamInventoryState& Inventory) +void UBeamInventorySubsystem::MergeInventoryViewIntoState(const UInventoryView* InventoryView, FBeamInventoryState& Inventory, TArray Scopes) { - for (const auto Currency : InventoryView->Currencies) + TArray LocalCurrencyIds; + Inventory.Currencies.GetKeys(LocalCurrencyIds); + + // First we get all the ContentIds/Ptr pairs for all the currencies in the received InventoryView + struct FReceivedCurrencyData { - const auto CurrencyContentId = FBeamContentId{Currency->Id}; - if (Inventory.Currencies.Contains(CurrencyContentId)) + FBeamContentId Id; + UCurrencyView* ViewPtr; + + bool operator==(const FReceivedCurrencyData& RHS) const { - Inventory.Currencies[CurrencyContentId] = Currency->Amount; + return Id == RHS.Id; } - else + + bool operator!=(const FReceivedCurrencyData& RHS) const + { + return Id != RHS.Id; + } + }; + TArray ReceivedCurrencies; + for (const auto ReceivedCurrency : InventoryView->Currencies) + ReceivedCurrencies.Add({ReceivedCurrency->Id, ReceivedCurrency}); + + // Then, we iterate over all local currencies we have and: + // - Remove all whose ContentId fail to match one of the CurrencyViews we received in the InventoryView + // - Update the local state of each currency whose ContentId matches one of the CurrencyViews we received as part of the InventoryView. + // As we do the above, we remove matched CurrencyViews from the list of ReceivedCurrencies. + for (const auto& LocalCurrencyId : LocalCurrencyIds) + { + auto bLocalCurrencyMatchesChangedScope = false; + for (const auto& ChangedScope : Scopes) + { + bLocalCurrencyMatchesChangedScope |= LocalCurrencyId.AsString.StartsWith(ChangedScope); + } + + // If I care about this scope, now I need to decide if I should remove the Local item (because it is not inside ReceivedCurrencies) OR if I should replace its local data. + if (bLocalCurrencyMatchesChangedScope) + { + const auto Key = FReceivedCurrencyData{LocalCurrencyId, nullptr}; + if (const auto FoundCurrencyView = ReceivedCurrencies.FindByKey(Key)) + { + Inventory.Currencies[LocalCurrencyId] = FoundCurrencyView->ViewPtr->Amount; + ReceivedCurrencies.Remove(Key); + } + else + { + Inventory.Currencies.Remove(LocalCurrencyId); + } + } + } + + // Now that ReceivedCurrencies only has the currencies that we did not know about locally, we can just iterate and add them. + for (const auto& Currency : ReceivedCurrencies) + { + const auto CurrencyContentId = Currency.Id; + Inventory.Currencies.Add(CurrencyContentId, Currency.ViewPtr->Amount); + } + + // Now we are done merging currencies. + + struct FReceivedItemInstanceData + { + const FString& Id; + const int64& InstanceId; + const UItem* ViewPtr; + + bool operator==(const FReceivedItemInstanceData& RHS) const + { + return Id == RHS.Id && InstanceId == RHS.InstanceId; + } + + bool operator!=(const FReceivedItemInstanceData& RHS) const + { + return Id != RHS.Id || InstanceId != RHS.InstanceId; + } + }; + + // First we grab a list of all the local InstanceId/UItem pairs we have in our local state. + TArray LocalItems; + for (const auto& Kvp : Inventory.Items) + { + for (const auto& ItemState : Kvp.Value) { - Inventory.Currencies.Add(CurrencyContentId, Currency->Amount); + LocalItems.Add({Kvp.Key.AsString, ItemState.InstanceId, nullptr}); } } - Inventory.Items.Empty(); - - for (const auto PerItemIdGroup : InventoryView->Items) + // Then, we gather all the individual InstanceId/UItem pairs we got back in this UInventoryView. + TArray ReceivedItemInstances; + for (const auto& ReceivedItemGroup : InventoryView->Items) { - const auto ItemContentId = FBeamContentId{PerItemIdGroup->Id}; + for (const auto& ReceivedItem : ReceivedItemGroup->Items) + ReceivedItemInstances.Add({ReceivedItemGroup->Id, ReceivedItem->Id, ReceivedItem}); + } - if (!Inventory.Items.Contains(ItemContentId)) - Inventory.Items.Add(ItemContentId, {}); + // Then, we iterate over all local currencies we have and: + // - Remove all whose ContentId fail to match one of the CurrencyViews we received in the InventoryView + // - Update the local state of each currency whose ContentId matches one of the CurrencyViews we received as part of the InventoryView. + // As we do the above, we remove matched CurrencyViews from the list of ReceivedCurrencies. + for (const auto& LocalItem : LocalItems) + { + auto bLocalItemMatchesChangedScope = false; + for (const auto& ChangedScope : Scopes) + { + bLocalItemMatchesChangedScope |= LocalItem.Id.StartsWith(ChangedScope); + } - auto& ItemsState = *Inventory.Items.Find(ItemContentId); - for (UItem* Item : PerItemIdGroup->Items) + // If I care about this scope, now I need to decide if I should remove the Local item (because it is not inside ReceivedItemInstances) OR if I should replace its local data. + if (bLocalItemMatchesChangedScope) { - FBeamItemState State; - State.ContentId = ItemContentId; - State.InstanceId = Item->Id; - State.CreatedAt = Item->CreatedAt.IsSet ? FDateTime::FromUnixTimestamp(Item->CreatedAt.Val) : FDateTime::UtcNow(); - State.UpdatedAt = Item->UpdatedAt.IsSet ? FDateTime::FromUnixTimestamp(Item->UpdatedAt.Val) : FDateTime::UtcNow(); - State.FederatedId = Item->ProxyId.IsSet ? Item->ProxyId.Val : TEXT(""); - for (const auto Property : Item->Properties) State.Properties.Add(Property->Name, Property->Value); - - // Swap whatever exists there with the same id we just received. - ItemsState.Remove(State); - ItemsState.Add(State); + if (const auto& FoundItemView = ReceivedItemInstances.FindByKey(LocalItem)) + { + FBeamItemState State; + State.ContentId = FoundItemView->Id; + State.InstanceId = FoundItemView->InstanceId; + State.CreatedAt = FoundItemView->ViewPtr->CreatedAt.IsSet ? FDateTime::FromUnixTimestamp(FoundItemView->ViewPtr->CreatedAt.Val) : FDateTime::UtcNow(); + State.UpdatedAt = FoundItemView->ViewPtr->UpdatedAt.IsSet ? FDateTime::FromUnixTimestamp(FoundItemView->ViewPtr->UpdatedAt.Val) : FDateTime::UtcNow(); + State.FederatedId = FoundItemView->ViewPtr->ProxyId.IsSet ? FoundItemView->ViewPtr->ProxyId.Val : TEXT(""); + for (const auto Property : FoundItemView->ViewPtr->Properties) State.Properties.Add(Property->Name, Property->Value); + + // Swap whatever exists there with the same id we just received. + auto& ItemsState = *Inventory.Items.Find(State.ContentId); + ItemsState.Remove(State); + ItemsState.Add(State); + + // Remove from the list of received item instances so that we can add the remaining ones. + ReceivedItemInstances.Remove(LocalItem); + } + else + { + Inventory.Items[LocalItem.Id].Remove(FBeamItemState{LocalItem.Id, LocalItem.InstanceId}); + } } } + + // Now that we have replaced/removed all the existing items, we just add the ones that are left. + for (const auto& ReceivedItemInstance : ReceivedItemInstances) + { + FBeamItemState State; + State.ContentId = ReceivedItemInstance.Id; + State.InstanceId = ReceivedItemInstance.InstanceId; + State.CreatedAt = ReceivedItemInstance.ViewPtr->CreatedAt.IsSet ? FDateTime::FromUnixTimestamp(ReceivedItemInstance.ViewPtr->CreatedAt.Val) : FDateTime::UtcNow(); + State.UpdatedAt = ReceivedItemInstance.ViewPtr->UpdatedAt.IsSet ? FDateTime::FromUnixTimestamp(ReceivedItemInstance.ViewPtr->UpdatedAt.Val) : FDateTime::UtcNow(); + State.FederatedId = ReceivedItemInstance.ViewPtr->ProxyId.IsSet ? ReceivedItemInstance.ViewPtr->ProxyId.Val : TEXT(""); + for (const auto& Property : ReceivedItemInstance.ViewPtr->Properties) State.Properties.Add(Property->Name, Property->Value); + + // Swap whatever exists there with the same id we just received. + auto& ItemsState = *Inventory.Items.Find(State.ContentId); + ItemsState.Remove(State); + ItemsState.Add(State); + } } void UBeamInventorySubsystem::InvokeOnInventoryRefreshed(const FBeamGamerTag& GamerTag, const FUserSlot OwnerPlayer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntime/Public/Subsystems/Inventory/BeamInventorySubsystem.h b/Plugins/BeamableCore/Source/BeamableCoreRuntime/Public/Subsystems/Inventory/BeamInventorySubsystem.h index 315944a9..65046253 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntime/Public/Subsystems/Inventory/BeamInventorySubsystem.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntime/Public/Subsystems/Inventory/BeamInventorySubsystem.h @@ -347,7 +347,7 @@ class BEAMABLECORERUNTIME_API UBeamInventorySubsystem : public UBeamRuntimeSubsy bool CommitInventoryUpdate(FUserSlot Player, FBeamOperationHandle Op); UFUNCTION() - void MergeInventoryViewIntoState(const UInventoryView* InventoryView, FBeamInventoryState& Inventory); + void MergeInventoryViewIntoState(const UInventoryView* InventoryView, FBeamInventoryState& Inventory, TArray Scopes); UFUNCTION() void InvokeOnInventoryRefreshed(const FBeamGamerTag& GamerTag, const FUserSlot OwnerPlayer); diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/BeamEditor.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/BeamEditor.cpp index 4d48e04b..5eecf560 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/BeamEditor.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/BeamEditor.cpp @@ -92,6 +92,9 @@ void UBeamEditor::Initialize(FSubsystemCollectionBase& Collection) const auto SoftPathToDefaultBoostrapper = FSoftObjectPath{DefaultBootstrapper->GetPathName()}; if (!EditorUtilitySubsystem->StartupObjects.Contains(SoftPathToDefaultBoostrapper)) EditorUtilitySubsystem->StartupObjects.Add(SoftPathToDefaultBoostrapper); + + // Make sure we have a window message object... + ClearBeamableWindowMessage(); } void UBeamEditor::Deinitialize() diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCli.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCli.cpp index 70196053..80e4e8d7 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCli.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCli.cpp @@ -216,6 +216,19 @@ void UBeamCli::RunCommandSync(UBeamCliCommand* Command, const TArray& P RunningProcesses.Add(Command); } +void UBeamCli::OnCommandCompleted(UBeamCliCommand* Command) +{ + RunningProcesses.Remove(Command); +} + +void UBeamCli::StopCommand(UBeamCliCommand* Command) +{ + if(RunningProcesses.Remove(Command)) + { + Command->Stop(); + } +} + FString UBeamCli::GetPathToCli() const { check(IsInstalled()) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCliCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCliCommand.cpp index a85f79c6..1b93b31e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCliCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/CLI/BeamCliCommand.cpp @@ -2,6 +2,57 @@ const FString UBeamCliCommand::PathToLocalCli = FString(TEXT("dotnet")); +void UBeamCliLogEntry::BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const +{ + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); +} + +void UBeamCliLogEntry::BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const +{ + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); +} + +void UBeamCliLogEntry::BeamDeserializeProperties(const TSharedPtr& Bag) +{ + LogLevel = Bag->GetStringField(TEXT("logLevel")); + Message = Bag->GetStringField(TEXT("message")); + Timestamp = Bag->GetIntegerField(TEXT("timestamp")); +} + +void FBeamCliError::BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const +{ + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("invocation"), Invocation); + Serializer->WriteValue(TEXT("exitCode"), ExitCode); + Serializer->WriteValue(TEXT("typeName"), TypeName); + Serializer->WriteValue(TEXT("fullTypeName"), FullTypeName); + Serializer->WriteValue(TEXT("stackTrace"), StackTrace); +} + +void FBeamCliError::BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const +{ + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("invocation"), Invocation); + Serializer->WriteValue(TEXT("exitCode"), ExitCode); + Serializer->WriteValue(TEXT("typeName"), TypeName); + Serializer->WriteValue(TEXT("fullTypeName"), FullTypeName); + Serializer->WriteValue(TEXT("stackTrace"), StackTrace); +} + +void FBeamCliError::BeamDeserializeProperties(const TSharedPtr& Bag) +{ + Message = Bag->GetStringField(TEXT("message")); + Invocation = Bag->GetStringField(TEXT("invocation")); + ExitCode = Bag->GetIntegerField(TEXT("exitCode")); + TypeName = Bag->GetStringField(TEXT("typeName")); + FullTypeName = Bag->GetStringField(TEXT("fullTypeName")); + StackTrace = Bag->GetStringField(TEXT("stackTrace")); +} + FString UBeamCliCommand::PrepareParams(FString Params) { return Params.Append(" -q"); @@ -22,7 +73,7 @@ void UBeamCliCommand::Run(const TArray& CommandParams, const FBeamOpera void UBeamCliCommand::RunSync(const TArray& CommandParams, const FBeamOperationHandle& Op) { Run(CommandParams, Op); - + // Busy wait until this finishes. while (CmdProcess->Update()) { @@ -35,6 +86,7 @@ void UBeamCliCommand::RunServer(const FString Uri, const TArray& Comman Editor = GEditor->GetEditorSubsystem(); Cli = GEditor->GetEditorSubsystem(); + checkf(Cli->IsInstalled(), TEXT("The Beamable CLI must be installed for any CLI commands to be run.")) FString CommandLineToExecute = GetCommand(); @@ -52,41 +104,140 @@ void UBeamCliCommand::RunServer(const FString Uri, const TArray& Comman CmdRequest->SetURL(Uri / TEXT("execute")); CmdRequest->SetContentAsString(ReqContent); CmdRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json")); - CmdRequest->OnProcessRequestComplete().BindLambda([this, Op, CommandLineToExecute](TSharedPtr, TSharedPtr HttpResponse, bool) + + CmdRequest->OnRequestProgress64().BindLambda([this, Op, CommandLineToExecute](TSharedPtr HttpRequest, int64, int64 BytesReceived) { - const auto RespCode = HttpResponse->GetResponseCode(); - if (RespCode >= 200 && RespCode < 300) + const auto HttpResponse = HttpRequest->GetResponse(); + if (HttpResponse.IsValid()) { - auto MessageJson = HttpResponse->GetContentAsString(); - MessageJson.RemoveAt(0, FString(TEXT("data: ")).Len()); - - UE_LOG(LogBeamCli, Display, TEXT("BeamCli Server - Executed command. CMD=%s, RESPONSE=%s"), *CommandLineToExecute, *MessageJson); - - auto Bag = FJsonDataBag(); - if (Bag.FromJson(MessageJson)) + auto PotentialMessages = HttpResponse->GetContentAsString(); + PotentialMessages.ReplaceInline(TEXT("\u200b"),TEXT("")); + + // We process all the message but... we hash them to make sure we haven't processed them already... + TArray PotentialJsons; + const auto Messages = PotentialMessages.ParseIntoArrayLines(PotentialJsons); + for (auto i = 0; i < Messages; i++) { - UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Processing JSON message. CMD=%s, JSON=%s"), *CommandLineToExecute, *MessageJson); + auto Json = PotentialJsons[i]; + Json.RemoveFromStart(TEXT("data: ")); + + UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Processing JSON message. CMD=%s, JSON=%s"), *CommandLineToExecute, *Json); + auto Bag = FJsonDataBag(); + if (!ProcessedMessageIndices.Contains(i)) + { + if (Bag.FromJson(Json)) + { + ProcessedMessageIndices.Add(i); + UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Processing JSON message. CMD=%s, JSON=%s"), *CommandLineToExecute, *Json); + + const auto ReceivedStreamType = Bag.GetString(TEXT("type")); + const auto Timestamp = static_cast(Bag.GetField(TEXT("ts"))->AsNumber()); + const auto DataJson = Bag.JsonObject->GetObjectField(TEXT("data")).ToSharedRef(); + + // If the command itself handles the data, we don't fall back to these other handlings + if (!HandleStreamReceived(Op, ReceivedStreamType, Timestamp, DataJson, true)) + { + if (ReceivedStreamType.Equals(TEXT("logs"))) + { + UBeamCliLogEntry* Data = NewObject(); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + LogEntries.Add(Data); + LogEntriesTimestamps.Add(Timestamp); + + if (OnLogEntriesStreamOutput) + { + AsyncTask(ENamedThreads::GameThread, [this, Data, Timestamp, Op] + { + OnLogEntriesStreamOutput(Data, Timestamp, Op); + }); + } + } + else if (ReceivedStreamType.StartsWith(TEXT("error"))) + { + FBeamCliError Data = FBeamCliError{}; + Data.OuterOwner = this; + Data.BeamDeserializeProperties(DataJson); + + Errors.Add(Data); + ErrorsTimestamps.Add(Timestamp); + + if (OnErrorsStreamOutput) + { + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnErrorsStreamOutput(Errors, ErrorsTimestamps, Op); + }); + } + } + } + } + else + { + UE_LOG(LogBeamCli, Warning, TEXT("BeamCli Server - Ignoring non-JSON message. CMD=%s, JSON=%s"), *CommandLineToExecute, *Json); + } + } + } + } + }); + CmdRequest->OnProcessRequestComplete().BindLambda([this, Op, CommandLineToExecute](TSharedPtr Req, TSharedPtr Resp, bool) + { + if (!Resp.IsValid()) + { + if (Req.IsValid()) + { + if (Req->GetFailureReason() == EHttpFailureReason::Cancelled) + { + HandleStreamCompleted(Op, 0, true); + UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Command Cancelled. CMD=%s"), *CommandLineToExecute); + return; + } + } - const auto ReceivedStreamType = Bag.GetString(TEXT("type")); - const auto Timestamp = static_cast(Bag.GetField(TEXT("ts"))->AsNumber()); - const auto DataJson = Bag.JsonObject->GetObjectField(TEXT("data")).ToSharedRef(); + UE_LOG(LogBeamCli, Error, TEXT("BeamCli Server - Unexpected error in executing command. CMD=%s"), *CommandLineToExecute); + HandleStreamCompleted(Op, 999, true); + return; + } + + const auto RespCode = Resp->GetResponseCode(); + if (RespCode >= 200 && RespCode < 300) + { + auto AllMessages = Resp->GetContentAsString(); + AllMessages.TrimEndInline(); - HandleStreamReceived(Op, ReceivedStreamType, Timestamp, DataJson, true); + HandleStreamCompleted(Op, 0, true); + UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Executed command. CMD=%s, ALL_MESSAGES=%s"), *CommandLineToExecute, *AllMessages); + } + else + { + if (Req->GetFailureReason() == EHttpFailureReason::Cancelled) + { HandleStreamCompleted(Op, 0, true); + UE_LOG(LogBeamCli, Verbose, TEXT("BeamCli Server - Command Cancelled. CMD=%s"), *CommandLineToExecute); } else { - UE_LOG(LogBeamCli, Warning, TEXT("BeamCli Server - Ignoring non-JSON message. CMD=%s, JSON=%s"), *CommandLineToExecute, *MessageJson); + UE_LOG(LogBeamCli, Error, TEXT("BeamCli Server - Error in executing command. CMD=%s, ALL_MESSAGES=%s"), *CommandLineToExecute, *Resp->GetContentAsString()); + HandleStreamCompleted(Op, 1, true); } } - else - { - UE_LOG(LogBeamCli, Error, TEXT("BeamCli Server - Error in executing command. CMD=%s, RESPONSE=%s"), *CommandLineToExecute, *HttpResponse->GetContentAsString()); - HandleStreamCompleted(Op, 1, true); - } }); - CmdRequest->ProcessRequest(); + CmdRequest->ProcessRequest(); +} + +void UBeamCliCommand::Stop() +{ + if (CmdProcess) + { + CmdProcess->Stop(); + } + + if (CmdRequest) + { + CmdRequest->CancelRequest(); + } } void UBeamCliCommand::PrepareCommandProcess(const TArray& CommandParams, const FBeamOperationHandle& Op) @@ -132,15 +283,16 @@ void UBeamCliCommand::PrepareCommandProcess(const TArray& CommandParams CmdProcess->OnCompleted().BindLambda([this, Op](int ResultCode) { HandleStreamCompleted(Op, ResultCode, false); + this->Cli->OnCommandCompleted(this); }); } bool UBeamCliCommand::IsDone() const { - if(CmdProcess.IsValid()) + if (CmdProcess.IsValid()) return CmdProcess->Update(); - if(CmdRequest.IsValid()) + if (CmdRequest.IsValid()) return CmdRequest->GetStatus() != EHttpRequestStatus::NotStarted && CmdRequest->GetStatus() != EHttpRequestStatus::Processing; return false; @@ -183,8 +335,9 @@ FString UBeamCliCommand::GetCommand() return TEXT(""); } -void UBeamCliCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + return false; } void UBeamCliCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/Microservices/BeamMicroservicesEditor.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/Microservices/BeamMicroservicesEditor.cpp index 46259f4d..8e70e99b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/Microservices/BeamMicroservicesEditor.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Private/Subsystems/Microservices/BeamMicroservicesEditor.cpp @@ -5,10 +5,28 @@ #include "Subsystems/CLI/Autogen/BeamCliFederationListCommand.h" #include "Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h" +#include "Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.h" #include "Subsystems/CLI/Autogen/BeamCliProjectRunCommand.h" #include "Subsystems/CLI/Autogen/BeamCliProjectStopCommand.h" +#include "Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.h" #include "Subsystems/CLI/Autogen/BeamCliServicesStopCommand.h" +TArray UBeamMicroserviceLocalEditorView::GetFilteredLogs(TArray VisibleLogTypes, FString TextFilter) +{ + TArray Entries; + Entries.Reserve(Logs.Num()); + for (const auto& Log : Logs) + { + const auto bMatchesLogType = VisibleLogTypes.Contains(Log->LogLevel); + const auto bMatchesTextFilter = TextFilter.IsEmpty() || Log->Message.Contains(TextFilter); + + if (bMatchesLogType && bMatchesTextFilter) + Entries.Add(Log); + } + + return Entries; +} + void UBeamMicroservicesEditor::Initialize(FSubsystemCollectionBase& Collection) { Super::Initialize(Collection); @@ -23,6 +41,16 @@ void UBeamMicroservicesEditor::Deinitialize() FEditorDelegates::EndPIE.Remove(EndPIE); } +FBeamOperationHandle UBeamMicroservicesEditor::OnRealmInitialized(FBeamRealmHandle NewRealm) +{ + // Refresh the editor user's email as that is the name of the Local Target. + FBeamRealmUser EditorUser; + Editor->GetMainEditorSlot(EditorUser); + LocalTarget = EditorUser.Email; + + return Super::OnRealmInitialized(NewRealm); +} + void UBeamMicroservicesEditor::OnReady() { Super::OnReady(); @@ -142,9 +170,13 @@ bool UBeamMicroservicesEditor::TryGetFilteredListOfServices(TArray Incl ServiceView->BeamoId = MicroserviceData.Key; ServiceView->RunningState = MicroserviceData.Value.RunningState; ServiceView->ServiceGroups = MicroserviceData.Value.ServiceGroups; - ServiceView->ServiceType = MicroService; + ServiceView->ServiceType = MicroserviceData.Value.ServiceType; + MicroserviceData.Value.TargetsToRoutingKeys.GetKeys(ServiceView->AvailableTargets); + ServiceView->LocalTarget = LocalTarget; ServiceView->SelectedTarget = MicroserviceData.Value.CurrentTarget; + ServiceView->FederationData = TMap(MicroserviceData.Value.TargetsToFederations); + ServiceView->Logs = MicroserviceData.Value.Logs; FilteredServices.Add(ServiceView); } @@ -175,9 +207,13 @@ bool UBeamMicroservicesEditor::OpenSwaggerDocs(FString BeamoId) return false; } + TArray Params; // Prepare the command and validate that you are not trying to open a swagger docs for a service that is not available const auto RoutingKey = LocalMicroservice->TargetsToRoutingKeys[LocalMicroservice->CurrentTarget]; - TArray Params{BeamoId, TEXT("--routing-key"), RoutingKey}; + if (!RoutingKey.IsEmpty()) + Params.Append({BeamoId, TEXT("--routing-key"), RoutingKey}); + else + Params.Append({BeamoId, TEXT("--routing-key"), TEXT("\"\"")}); // Run the command const auto OpenSwaggerCommand = NewObject(); @@ -185,25 +221,75 @@ bool UBeamMicroservicesEditor::OpenSwaggerDocs(FString BeamoId) return true; } +bool UBeamMicroservicesEditor::OpenMongoExpress(FString BeamoId) +{ + const auto LocalMicroservice = LocalMicroserviceData.Find(BeamoId); + if (LocalMicroservice->ServiceType != MicroStorage) + { + UE_LOG(LogBeamMicroservices, Warning, TEXT("Service is not a Storage. BEAMO_ID=%s"), *BeamoId); + return false; + } + + TArray Params{BeamoId}; + + // Run the command + const auto OpenMongoExpressCommand = NewObject(); + Cli->RunCommandServer(OpenMongoExpressCommand, Params, {}); + return true; +} + +bool UBeamMicroservicesEditor::ClearMongoLocalData(FString BeamoId) +{ + const auto LocalMicroservice = LocalMicroserviceData.Find(BeamoId); + if (LocalMicroservice->ServiceType != MicroStorage) + { + UE_LOG(LogBeamMicroservices, Warning, TEXT("Service is not a Storage. BEAMO_ID=%s"), *BeamoId); + return false; + } + + TArray Params{BeamoId}; + + // Run the command + const auto OpenMongoExpressCommand = NewObject(); + Cli->RunCommandServer(OpenMongoExpressCommand, Params, {}); + return true; +} + +bool UBeamMicroservicesEditor::ClearLogs(FString BeamoId) +{ + if (FLocalMicroserviceData* LocalMicroservice = LocalMicroserviceData.Find(BeamoId)) + { + LocalMicroservice->Logs.Reset(); + OnLocalMicroserviceUpdate.Broadcast(); + return true; + } + return false; +} + bool UBeamMicroservicesEditor::IsCurrentRoutingKeyValid(FString BeamoId) { const auto LocalMicroservice = LocalMicroserviceData.Find(BeamoId); if (!LocalMicroservice) return false; - return LocalMicroservice->TargetsToRoutingKeys.Contains(LocalMicroservice->CurrentTarget); + // For local targets, we only consider them valid if they are running. + const auto Target = LocalMicroservice->CurrentTarget; + if (LocalTarget == Target) + return LocalMicroservice->TargetsToRoutingKeys.Contains(Target) && LocalMicroservice->RunningState != Stopped; + + return LocalMicroservice->TargetsToRoutingKeys.Contains(Target); } -bool UBeamMicroservicesEditor::SetCurrentRoutingKey(FString BeamoId, FString Key) +bool UBeamMicroservicesEditor::SetCurrentRoutingKey(FString BeamoId, FString Target) { const auto LocalMicroservice = LocalMicroserviceData.Find(BeamoId); if (!ensureAlwaysMsgf(LocalMicroservice, TEXT("BeamoId not found in local microservices data. BEAMO_ID=%s"), *BeamoId)) return false; - if (!ensureAlwaysMsgf(LocalMicroservice->TargetsToRoutingKeys.Contains(Key), TEXT("RoutingKey not found in list of avaialable routing keys. BEAMO_ID=%s, ROUTING_KEY=%s"), *BeamoId, *Key)) + if (!ensureAlwaysMsgf(LocalMicroservice->TargetsToRoutingKeys.Contains(Target), TEXT("RoutingKey not found in list of avaialable routing keys. BEAMO_ID=%s, ROUTING_KEY=%s"), *BeamoId, *Target)) return false; - LocalMicroservice->CurrentTarget = Key; + LocalMicroservice->CurrentTarget = Target; return true; } @@ -229,6 +315,152 @@ FString UBeamMicroservicesEditor::ConstructRoutingKeyMap() } +void UBeamMicroservicesEditor::OnUpdateLocalStateReceived(const TArray& Stream, const TArray&, const FBeamOperationHandle&) +{ + const UBeamCliProjectPsStreamData* ProjectStatusChange = Stream.Last(); + + for (const auto& Service : ProjectStatusChange->Services) + { + const auto BeamoId = Service->Service; + + const auto ServiceType = Service->ServiceType.Contains("service") ? MicroService : MicroStorage; + // Handle Microservice's being turned on. + if (!LocalMicroserviceData.Contains(Service->Service)) + { + UE_LOG(LogBeamMicroservices, Display, TEXT("Detected microservice. Registering it with the editor. BEAMO_ID=%s"), *BeamoId); + auto NewServiceDetected = FLocalMicroserviceData{ + BeamoId, ServiceType, Service->Groups, + Stopped, + false, + {}, + {}, + {}, + {}, + // We keep up 5.000 log lines in the history. + {} + }; + NewServiceDetected.Logs.Reserve(5000); + LocalMicroserviceData.Add(BeamoId, NewServiceDetected); + } + + // Get a reference to the data so we can update it... + FLocalMicroserviceData& MicroserviceData = LocalMicroserviceData.FindChecked(BeamoId); + + // Make sure the Groups are up-to-date + MicroserviceData.ServiceGroups = Service->Groups; + + // Reset the targets so that we can always rebuild them from the latest information + MicroserviceData.TargetsToRoutingKeys.Reset(); + MicroserviceData.TargetsToFederations.Reset(); + + // Find out if the service is running and collect available routing keys + for (const auto& AvailableRoute : Service->AvailableRoutes) + { + const auto RoutingKey = AvailableRoute->RoutingKey; + + // Let's get the federation data for this target. + FLocalFederationPerTargetData TargetData; + for (UFederationInstanceStreamData* Federation : AvailableRoute->Federations) + { + FLocalFederationIdData FederationIdData; + FederationIdData.FederationId = Federation->FederationId; + for (int i = 0; i < Federation->FederationTypes.Num(); ++i) + { + const auto FederationType = Federation->FederationTypes[i]; + const auto FederationLocalSettings = Federation->LocalSettings[i]; + + FLocalFederationData FedData; + FedData.Type = static_cast(StaticEnum()->GetValueByNameString("BEAM_" + FederationType, EGetByNameFlags::CheckAuthoredName)); + switch (FedData.Type) + { + case EFederationType::BEAM_IFederatedGameServer: + FedData.LocalSettings_FederatedGamerServer = NewObject(); + FedData.LocalSettings_FederatedGamerServer->BeamDeserialize(FederationLocalSettings); + break; + default: + break; + } + + FederationIdData.Federations.Add(FedData); + } + + TargetData.Federations.Add(FederationIdData); + } + + // If we know there are no running instances of the service, we still want to display the local user's target on the list so that the user can configure it. + if (ServiceType == MicroService && !AvailableRoute->KnownToBeRunning) + { + MicroserviceData.RunningState = Stopped; + + // Keep track of the federation data for each selectable target. + MicroserviceData.TargetsToRoutingKeys.Add(LocalTarget, RoutingKey); + + // Keep track of the federation data for each selectable target. + TargetData.Target = LocalTarget; + MicroserviceData.TargetsToFederations.Add(LocalTarget, TargetData); + + // Stop the tail log command if its there + StopLogTail(&MicroserviceData); + } + // This is how we know if micro-storages are up and running. + else if (ServiceType == MicroStorage && AvailableRoute->KnownToBeRunning) + { + MicroserviceData.RunningState = RunningOnDocker; + } + // This is how we know if a micro storage is not running (we don't get instances for them). + else if (ServiceType == MicroStorage && !AvailableRoute->KnownToBeRunning) + { + MicroserviceData.RunningState = Stopped; + } + + // For each running instance with this routing key + for (const auto& Instance : AvailableRoute->Instances) + { + // Empty email, means this instance is the "realm" instance. + const auto Target = Instance->StartedByAccountEmail == TEXT("") ? TEXT("realm") : Instance->StartedByAccountEmail; + MicroserviceData.TargetsToRoutingKeys.Add(Target, RoutingKey); + + // Keep track of the federation data for each selectable target. + TargetData.Target = Target; + MicroserviceData.TargetsToFederations.Add(Target, TargetData); + + // Let's keep track of the local-dev's state + if (Target == LocalTarget) + { + // The service is running on the host machine + if (AvailableRoute->KnownToBeRunning && Instance->LatestHostEvent) + { + MicroserviceData.RunningState = RunningOnHost; + SetupLogTail(&MicroserviceData); + } + + // The service is running on docker + else if (AvailableRoute->KnownToBeRunning && Instance->LatestDockerEvent) + { + MicroserviceData.RunningState = RunningOnDocker; + SetupLogTail(&MicroserviceData); + } + + // If the service is the LocalService, change the target for that service to be the one for this service instance. + if (RoutingKey == LocalRoutingKey) + { + MicroserviceData.CurrentTarget = Instance->StartedByAccountEmail; + } + } + } + } + + if (!IsCurrentRoutingKeyValid(BeamoId)) + { + if (MicroserviceData.TargetsToRoutingKeys.Contains(TEXT("realm"))) MicroserviceData.CurrentTarget = "realm"; + else MicroserviceData.CurrentTarget = LocalTarget; + } + } + + OnLocalMicroserviceUpdate.Broadcast(); +} + + void UBeamMicroservicesEditor::DeployMicroservices(const TArray& EnableBeamoIds, const TArray& DisableBeamoIds, const FBeamOperationHandle& Op) const { const auto ServicesDeploy = NewObject(); @@ -275,26 +507,25 @@ void UBeamMicroservicesEditor::RunHostMicroservices(const TArray& Beamo { const auto Cmd = NewObject(); - // Handle completing the operation - Cmd->OnCompleted = [this, BeamoIds](const int& ResultCode, const FBeamOperationHandle& Operation) + // Grab the logs for the service... + Cmd->OnLogEntriesStreamOutput = [this, BeamoIds](UBeamCliLogEntry* Log, const int64, const FBeamOperationHandle& Op) { - if (ResultCode == 0) + for (FString BeamoId : BeamoIds) { - for (FString BeamoId : BeamoIds) - { - if (ensureAlwaysMsgf(LocalMicroserviceData.Contains(BeamoId), TEXT("You should never see this."))) - { - LocalMicroserviceData.Find(BeamoId)->RunningState = RunningOnHost; - } - } - RequestTracker->TriggerOperationSuccess(Operation, TEXT("")); + auto LoggingService = LocalMicroserviceData.Find(BeamoId); + AppendToLogs(LoggingService, {Log}); } - else - RequestTracker->TriggerOperationError(Operation, FString::FromInt(ResultCode)); + }; + + // Handle completing the operation + Cmd->OnCompleted = [this, BeamoIds](const int& ResultCode, const FBeamOperationHandle& Operation) + { + if (ResultCode == 0) RequestTracker->TriggerOperationSuccess(Operation, TEXT("")); + else RequestTracker->TriggerOperationError(Operation, FString::FromInt(ResultCode)); }; // Set up ids - TArray Params = {}; + TArray Params = {TEXT("--detach"), TEXT("--emit-log-streams"), TEXT("--no-client-gen")}; if (!BeamoIds.IsEmpty()) { const auto Ids = FString::Printf(TEXT("--ids %s"), *FString::Join(BeamoIds, TEXT(" "))); @@ -322,9 +553,11 @@ void UBeamMicroservicesEditor::RunDockerMicroservices(const TArray& Bea // Update the local state of microservice data if (FMath::IsNearlyEqual(ProgressData->LocalDeployProgress, 100.0)) { - if (ensureAlwaysMsgf(LocalMicroserviceData.Contains(ProgressData->BeamoId), TEXT("You should never see this."))) + const auto BeamoId = ProgressData->BeamoId; + if (ensureAlwaysMsgf(LocalMicroserviceData.Contains(BeamoId), TEXT("You should never see this."))) { - LocalMicroserviceData.Find(ProgressData->BeamoId)->RunningState = RunningOnDocker; + auto RunningService = LocalMicroserviceData.Find(BeamoId); + RunningService->RunningState = RunningOnDocker; } } }; @@ -351,10 +584,34 @@ void UBeamMicroservicesEditor::RunDockerMicroservices(const TArray& Bea Cli->RunCommandServer(ServicesDeploy, Params, Op); } +void UBeamMicroservicesEditor::RunStorageObject(const TArray& BeamoIds, const FBeamOperationHandle& Op) +{ + //UBeamCLiProject +} + void UBeamMicroservicesEditor::StopHostMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op) { const auto Cmd = NewObject(); + // Stop the tail log command if it's there + for (const auto& BeamoId : BeamoIds) + { + if (auto Service = LocalMicroserviceData.Find(BeamoId)) + { + StopLogTail(Service); + } + } + + // Get the log output + Cmd->OnLogEntriesStreamOutput = [this, BeamoIds](UBeamCliLogEntry* Entry, const int64&, const FBeamOperationHandle&) + { + for (FString BeamoId : BeamoIds) + { + auto Service = LocalMicroserviceData.Find(BeamoId); + AppendToLogs(Service, {Entry}); + } + }; + // Handle completing the operation Cmd->OnCompleted = [this, BeamoIds](const int& ResultCode, const FBeamOperationHandle& Operation) { @@ -364,7 +621,8 @@ void UBeamMicroservicesEditor::StopHostMicroservices(const TArray& Beam { if (ensureAlwaysMsgf(LocalMicroserviceData.Contains(BeamoId), TEXT("You should never see this."))) { - LocalMicroserviceData.Find(BeamoId)->RunningState = Stopped; + auto Service = LocalMicroserviceData.Find(BeamoId); + Service->RunningState = Stopped; } } RequestTracker->TriggerOperationSuccess(Operation, TEXT("")); @@ -382,6 +640,7 @@ void UBeamMicroservicesEditor::StopHostMicroservices(const TArray& Beam // Set up ids const auto Ids = FString::Printf(TEXT("--ids %s"), *FString::Join(BeamoIds, TEXT(" "))); Params.Add(Ids); + Params.Add(TEXT("--emit-log-streams")); // Kick of command. @@ -390,10 +649,29 @@ void UBeamMicroservicesEditor::StopHostMicroservices(const TArray& Beam void UBeamMicroservicesEditor::StopDockerMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op) { - const auto ServicesDeploy = NewObject(); + const auto Cmd = NewObject(); + // Stop the tail log command if it's there + for (const auto& BeamoId : BeamoIds) + { + if (auto Service = LocalMicroserviceData.Find(BeamoId)) + { + StopLogTail(Service); + } + } + + // Get the log output + Cmd->OnLogEntriesStreamOutput = [this, BeamoIds](UBeamCliLogEntry* Entry, const int64&, const FBeamOperationHandle&) + { + for (FString BeamoId : BeamoIds) + { + auto Service = LocalMicroserviceData.Find(BeamoId); + AppendToLogs(Service, {Entry}); + } + }; + // Handle completing the operation - ServicesDeploy->OnCompleted = [this, BeamoIds](const int& ResultCode, const FBeamOperationHandle& Operation) + Cmd->OnCompleted = [this, BeamoIds](const int& ResultCode, const FBeamOperationHandle& Operation) { if (ResultCode == 0) { @@ -401,7 +679,10 @@ void UBeamMicroservicesEditor::StopDockerMicroservices(const TArray& Be { if (ensureAlwaysMsgf(LocalMicroserviceData.Contains(BeamoId), TEXT("You should never see this."))) { - LocalMicroserviceData.Find(BeamoId)->RunningState = Stopped; + auto Service = LocalMicroserviceData.Find(BeamoId); + Service->RunningState = Stopped; + Cli->StopCommand(Service->TailLogsCommand); + Service->TailLogsCommand = nullptr; } } RequestTracker->TriggerOperationSuccess(Operation, TEXT("")); @@ -422,89 +703,56 @@ void UBeamMicroservicesEditor::StopDockerMicroservices(const TArray& Be // Set up ids const auto Ids = FString::Printf(TEXT("--ids %s"), *FString::Join(BeamoIds, TEXT(" "))); Params.Add(Ids); + Params.Add(TEXT("--emit-log-streams")); // Kick of command. - Cli->RunCommandServer(ServicesDeploy, Params, Op); + Cli->RunCommandServer(Cmd, Params, Op); } -void UBeamMicroservicesEditor::OnUpdateLocalStateReceived(const TArray& Stream, const TArray&, const FBeamOperationHandle&) + +void UBeamMicroservicesEditor::SetupLogTail(FLocalMicroserviceData* RunningService) { - for (const UBeamCliProjectPsStreamData* ProjectStatusChange : Stream) + const auto BeamoId = RunningService->BeamoId; + if (!RunningService->TailLogsCommand) { - for (const auto& Service : ProjectStatusChange->Services) + RunningService->TailLogsCommand = NewObject(); + RunningService->TailLogsCommand->OnStreamOutput = [this, BeamoId](const TArray& Arr, const TArray&, const FBeamOperationHandle&) { - const auto BeamoId = Service->Service; - - if (!LocalMicroserviceData.Contains(Service->Service)) + auto LoggingService = LocalMicroserviceData.Find(BeamoId); + TArray Entries; + for (const auto& LogStream : Arr) { - UE_LOG(LogBeamMicroservices, Display, TEXT("Detected microservice. Registering it with the editor. BEAMO_ID=%s"), *BeamoId); - LocalMicroserviceData.Add(BeamoId, FLocalMicroserviceData{ - BeamoId, Service->Groups, - Stopped, - false, - {}, - {} - }); - } - - // Get a reference to the data so we can update it... - FLocalMicroserviceData& MicroserviceData = LocalMicroserviceData.FindChecked(BeamoId); + UBeamCliLogEntry* Log = NewObject(); + Log->LogLevel = LogStream->LogLevel; + Log->Message = LogStream->Message; + FDefaultValueHelper::ParseInt64(LogStream->TimeStamp, Log->Timestamp); - // Make sure the Groups are up-to-date - MicroserviceData.ServiceGroups = Service->Groups; + Entries.Add(Log); + } + AppendToLogs(LoggingService, Entries); + }; + Cli->RunCommandServer(RunningService->TailLogsCommand, {BeamoId}, {}); + } +} - // Reset the targets so that we can always rebuild them from the latest information - MicroserviceData.TargetsToRoutingKeys.Reset(); +void UBeamMicroservicesEditor::AppendToLogs(FLocalMicroserviceData* RunningService, const TArray& Log) +{ + if (RunningService->Logs.Num() > 10000) + RunningService->Logs.RemoveAt(0, Log.Num()); - // Find out if the service is running and collect available routing keys - for (const auto& AvailableRoute : Service->AvailableRoutes) - { - const auto RoutingKey = AvailableRoute->RoutingKey; + RunningService->Logs.Append(Log); - for (const auto& Instance : AvailableRoute->Instances) - { - // Empty email, means this instance is the "realm" instance. - if (Instance->StartedByAccountEmail == TEXT("")) - { - // We add the routing key - MicroserviceData.TargetsToRoutingKeys.Add(TEXT("realm"), RoutingKey); - } - else - { - // Add the routing key - MicroserviceData.TargetsToRoutingKeys.Add(Instance->StartedByAccountEmail, RoutingKey); - - // The service is running on the host machine - if (Instance->LatestHostEvent) - { - MicroserviceData.RunningState = RunningOnHost; - } - - // The service is running on docker - if (Instance->LatestDockerEvent) - { - MicroserviceData.RunningState = RunningOnDocker; - } - - // If the service is the LocalService, change the target for that service to be the one for this service instance. - if (RoutingKey == LocalRoutingKey) - { - MicroserviceData.CurrentTarget = Instance->StartedByAccountEmail; - } - } - } - } + OnLocalMicroserviceUpdate.Broadcast(); +} - if (!IsCurrentRoutingKeyValid(BeamoId)) - { - if (MicroserviceData.TargetsToRoutingKeys.Contains(TEXT("realm"))) MicroserviceData.CurrentTarget = "realm"; - else MicroserviceData.CurrentTarget = ""; - } - } +void UBeamMicroservicesEditor::StopLogTail(FLocalMicroserviceData* RunningService) +{ + if (RunningService->TailLogsCommand) + { + Cli->StopCommand(RunningService->TailLogsCommand); + RunningService->TailLogsCommand = nullptr; } - - OnLocalMicroserviceUpdate.Broadcast(); } void UBeamMicroservicesEditor::SplitByHostOrDocker(const TArray& BeamoIds, TArray& DockerBeamoIds, TArray& HostBeamoIds) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.cpp index 23ba72da..db1d22ee 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliConfigCommand::GetCommand() return FString(TEXT("config")); } -void UBeamCliConfigCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliConfigCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliConfigStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliConfigCommand::HandleStreamReceived(FBeamOperationHandle Op, FStrin AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliConfigCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.h index fb593ce4..1d84e740 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigCommand.h @@ -56,25 +56,26 @@ class UBeamCliConfigStreamData : public UObject, public IBeamJsonSerializableUOb Beamable.Tools config [command] [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information Commands: realm Get current realm config values @@ -95,7 +96,7 @@ class UBeamCliConfigCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.cpp index 99b2f181..85ab690b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliConfigRealmCommand::GetCommand() return FString(TEXT("config realm")); } -void UBeamCliConfigRealmCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliConfigRealmCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliConfigRealmStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliConfigRealmCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliConfigRealmCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.h index a0599d25..7eb8bd0e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmCommand.h @@ -41,26 +41,27 @@ class UBeamCliConfigRealmStreamData : public UObject, public IBeamJsonSerializab Beamable.Tools config realm [command] [options] Options: - --namespaces A list of realm config namespaces to filter - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --namespaces A list of realm config namespaces to filter + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information Commands: remove Remove realm config values @@ -80,7 +81,7 @@ class UBeamCliConfigRealmCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.cpp index a1a0ce1f..70679a22 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliConfigRealmRemoveCommand::GetCommand() return FString(TEXT("config realm remove")); } -void UBeamCliConfigRealmRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliConfigRealmRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliConfigRealmRemoveStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliConfigRealmRemoveCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliConfigRealmRemoveCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.h index c9d22bc7..aac309d4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmRemoveCommand.h @@ -41,26 +41,27 @@ class UBeamCliConfigRealmRemoveStreamData : public UObject, public IBeamJsonSeri Beamable.Tools config realm remove [options] Options: - --keys A list of realm config keys in a namespace|key format - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --keys A list of realm config keys in a namespace|key format + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -77,7 +78,7 @@ class UBeamCliConfigRealmRemoveCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.cpp index 2c9c8a63..166393d8 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliConfigRealmSetCommand::GetCommand() return FString(TEXT("config realm set")); } -void UBeamCliConfigRealmSetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliConfigRealmSetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliConfigRealmSetStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliConfigRealmSetCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliConfigRealmSetCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.h index a8831889..2c11ebbf 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliConfigRealmSetCommand.h @@ -41,26 +41,27 @@ class UBeamCliConfigRealmSetStreamData : public UObject, public IBeamJsonSeriali Beamable.Tools config realm set [options] Options: - --key-values A list of realm config key/value pairs in a 'namespace|key::value' format - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --key-values A list of realm config key/value pairs in a 'namespace|key::value' format + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -77,7 +78,7 @@ class UBeamCliConfigRealmSetCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.cpp index e55eed49..819c1b0a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliContentBulkEditCommand::GetCommand() return FString(TEXT("content bulk-edit")); } -void UBeamCliContentBulkEditCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliContentBulkEditCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliContentBulkEditCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.h index f1cc414f..3044b4a2 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentBulkEditCommand.h @@ -32,6 +32,7 @@ --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -50,7 +51,7 @@ class UBeamCliContentBulkEditCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.cpp index cafb2fe8..c7227e23 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliContentLocalManifestCommand::GetCommand() return FString(TEXT("content local-manifest")); } -void UBeamCliContentLocalManifestCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliContentLocalManifestCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliContentLocalManifestStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliContentLocalManifestCommand::HandleStreamReceived(FBeamOperationHan AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliContentLocalManifestCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.h index 320e3a0b..d75ef4e9 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentLocalManifestCommand.h @@ -42,26 +42,27 @@ class UBeamCliContentLocalManifestStreamData : public UObject, public IBeamJsonS Beamable.Tools content local-manifest [options] Options: - --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliContentLocalManifestCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.cpp index 2959a8c1..921b63ff 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliContentPublishCommand::GetCommand() return FString(TEXT("content publish")); } -void UBeamCliContentPublishCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliContentPublishCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliContentPublishStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliContentPublishCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliContentPublishCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.h index 7269bd97..7412154d 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPublishCommand.h @@ -42,26 +42,27 @@ class UBeamCliContentPublishStreamData : public UObject, public IBeamJsonSeriali Beamable.Tools content publish [options] Options: - --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliContentPublishCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.cpp index 5af21a41..0ba140e0 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliContentPullCommand::GetCommand() return FString(TEXT("content pull")); } -void UBeamCliContentPullCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliContentPullCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliContentPullStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliContentPullCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliContentPullCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.h index 2f4b6ec2..8ba37c8f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentPullCommand.h @@ -42,26 +42,27 @@ class UBeamCliContentPullStreamData : public UObject, public IBeamJsonSerializab Beamable.Tools content pull [options] Options: - --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliContentPullCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.cpp index b8097d29..0740c46a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliContentResetCommand::GetCommand() return FString(TEXT("content reset")); } -void UBeamCliContentResetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliContentResetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliContentResetStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliContentResetCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliContentResetCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.h index 30627e9a..ac571b82 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliContentResetCommand.h @@ -42,26 +42,27 @@ class UBeamCliContentResetStreamData : public UObject, public IBeamJsonSerializa Beamable.Tools content reset [options] Options: - --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --manifest-ids Inform a subset of ','-separated manifest ids for which to return data. By default, will return all manifests [] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliContentResetCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.cpp new file mode 100644 index 00000000..c669ad44 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliDeploymentGetCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliDeploymentGetCommand::GetCommand() +{ + return FString(TEXT("deployment get")); +} + +bool UBeamCliDeploymentGetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliDeploymentGetStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliDeploymentGetCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.h new file mode 100644 index 00000000..6495aeb1 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentGetCommand.h @@ -0,0 +1,94 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "BeamCliDeploymentGetCommand.generated.h" + + +UCLASS() +class UBeamCliDeploymentGetStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + UManifestViewStreamData* ManifestView = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeUObject("manifestView", ManifestView, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeUObject("manifestView", ManifestView, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeUObject("manifestView", Bag, ManifestView, OuterOwner); + } +}; + + +/** + Description: + Get a specific deployment + +Usage: + Beamable.Tools deployment get [options] + +Options: + -a, --show-archived Include archived (removed) services + -o, --out, --to-file A file path to save the plan + -i, --id Find only the single manifest that matches the given id + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliDeploymentGetCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.cpp new file mode 100644 index 00000000..1ef6c0ca --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliDeploymentListCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliDeploymentListCommand::GetCommand() +{ + return FString(TEXT("deployment list")); +} + +bool UBeamCliDeploymentListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliDeploymentListStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliDeploymentListCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.h new file mode 100644 index 00000000..5421e1ad --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentListCommand.h @@ -0,0 +1,93 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "BeamCliDeploymentListCommand.generated.h" + + +UCLASS() +class UBeamCliDeploymentListStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray Deployments = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("deployments"), Deployments, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("deployments"), Deployments, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("deployments")), Deployments, OuterOwner); + } +}; + + +/** + Description: + List the deployments + +Usage: + Beamable.Tools deployment list [options] + +Options: + --limit The limit of resources. A value of -1 means no limit [default: -1] + -a, --show-archived Include archived (removed) services + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliDeploymentListCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.cpp new file mode 100644 index 00000000..ae9ae8eb --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.cpp @@ -0,0 +1,77 @@ +#include "BeamCliDeploymentPlanCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliDeploymentPlanCommand::GetCommand() +{ + return FString(TEXT("deployment plan")); +} + +bool UBeamCliDeploymentPlanCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliDeploymentPlanStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeBuildErrors) && OnBuildErrorsStreamOutput) + { + UBeamCliDeploymentPlanBuildErrorsStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + BuildErrorsStream.Add(Data); + BuildErrorsTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnBuildErrorsStreamOutput(BuildErrorsStream, BuildErrorsTimestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeProgress) && OnProgressStreamOutput) + { + UBeamCliDeploymentPlanProgressStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + ProgressStream.Add(Data); + ProgressTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnProgressStreamOutput(ProgressStream, ProgressTimestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliDeploymentPlanCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.h new file mode 100644 index 00000000..7fcc0a21 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentPlanCommand.h @@ -0,0 +1,202 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" +#include "Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ProjectErrorReportBuildErrorsStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ProjectErrorResultBuildErrorsStreamData.h" +#include "BeamCliDeploymentPlanCommand.generated.h" + + +UCLASS() +class UBeamCliDeploymentPlanStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool Success = {}; + UPROPERTY() + UDeployablePlanStreamData* Plan = {}; + UPROPERTY() + FString PlanPath = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("success"), Success); + UBeamJsonUtils::SerializeUObject("plan", Plan, Serializer); + Serializer->WriteValue(TEXT("planPath"), PlanPath); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("success"), Success); + UBeamJsonUtils::SerializeUObject("plan", Plan, Serializer); + Serializer->WriteValue(TEXT("planPath"), PlanPath); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Success = Bag->GetBoolField(TEXT("success")); + UBeamJsonUtils::DeserializeUObject("plan", Bag, Plan, OuterOwner); + PlanPath = Bag->GetStringField(TEXT("planPath")); + } +}; + + +UCLASS() +class UBeamCliDeploymentPlanBuildErrorsStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString ServiceId = {}; + UPROPERTY() + UProjectErrorReportBuildErrorsStreamData* Report = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("serviceId"), ServiceId); + UBeamJsonUtils::SerializeUObject("report", Report, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("serviceId"), ServiceId); + UBeamJsonUtils::SerializeUObject("report", Report, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + ServiceId = Bag->GetStringField(TEXT("serviceId")); + UBeamJsonUtils::DeserializeUObject("report", Bag, Report, OuterOwner); + } +}; + + +UCLASS() +class UBeamCliDeploymentPlanProgressStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Name = {}; + UPROPERTY() + float Ratio = {}; + UPROPERTY() + bool IsKnownLength = {}; + UPROPERTY() + FString ServiceName = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + Serializer->WriteValue(TEXT("ratio"), Ratio); + Serializer->WriteValue(TEXT("isKnownLength"), IsKnownLength); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + Serializer->WriteValue(TEXT("ratio"), Ratio); + Serializer->WriteValue(TEXT("isKnownLength"), IsKnownLength); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Name = Bag->GetStringField(TEXT("name")); + FDefaultValueHelper::ParseFloat(Bag->GetStringField(TEXT("ratio")), Ratio); + IsKnownLength = Bag->GetBoolField(TEXT("isKnownLength")); + ServiceName = Bag->GetStringField(TEXT("serviceName")); + } +}; + + +/** + Description: + Plan a deployment for later release + +Usage: + Beamable.Tools deployment plan [options] + +Options: + -c, --comment Associates this comment along with the published Manifest. You'll be able to read it via the Beamable Portal [] + -sc, --service-comments Any number of strings in the format BeamoId::Comment + Associates each comment to the given Beamo Id if it's among the published services. You'll be able to read it via the Beamable Portal [] + -m, --from-manifest, --manifest A manifest json file to use to create a plan + -i, --from-manifest-id, --manifest-id A manifest id to download and use to create a plan + -h, --health, --run-health-checks Run health checks on services + --redeploy, --restart, --roll Restart existing deployed services + --merge Create a Release that adds your current local environment to the existing remote services. Existing deployed services will not be removed + --replace Create a Release that completely overrides the existing remote services. Existing deployed services that are not present locally will be removed (default) + -o, --out, --to-file A file path to save the plan + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliDeploymentPlanCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + inline static FString StreamTypeBuildErrors = FString(TEXT("buildErrors")); + UPROPERTY() TArray BuildErrorsStream; + UPROPERTY() TArray BuildErrorsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnBuildErrorsStreamOutput; + + inline static FString StreamTypeProgress = FString(TEXT("progress")); + UPROPERTY() TArray ProgressStream; + UPROPERTY() TArray ProgressTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnProgressStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.cpp new file mode 100644 index 00000000..c8aa3df9 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.cpp @@ -0,0 +1,77 @@ +#include "BeamCliDeploymentReleaseCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliDeploymentReleaseCommand::GetCommand() +{ + return FString(TEXT("deployment release")); +} + +bool UBeamCliDeploymentReleaseCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliDeploymentReleaseStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeBuildErrors) && OnBuildErrorsStreamOutput) + { + UBeamCliDeploymentReleaseBuildErrorsStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + BuildErrorsStream.Add(Data); + BuildErrorsTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnBuildErrorsStreamOutput(BuildErrorsStream, BuildErrorsTimestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeProgress) && OnProgressStreamOutput) + { + UBeamCliDeploymentReleaseProgressStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + ProgressStream.Add(Data); + ProgressTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnProgressStreamOutput(ProgressStream, ProgressTimestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliDeploymentReleaseCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.h new file mode 100644 index 00000000..fc8f3239 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentReleaseCommand.h @@ -0,0 +1,203 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" +#include "Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ProjectErrorReportBuildErrorsStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ProjectErrorResultBuildErrorsStreamData.h" +#include "BeamCliDeploymentReleaseCommand.generated.h" + + +UCLASS() +class UBeamCliDeploymentReleaseStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool Success = {}; + UPROPERTY() + UDeployablePlanStreamData* Plan = {}; + UPROPERTY() + FString PlanPath = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("success"), Success); + UBeamJsonUtils::SerializeUObject("plan", Plan, Serializer); + Serializer->WriteValue(TEXT("planPath"), PlanPath); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("success"), Success); + UBeamJsonUtils::SerializeUObject("plan", Plan, Serializer); + Serializer->WriteValue(TEXT("planPath"), PlanPath); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Success = Bag->GetBoolField(TEXT("success")); + UBeamJsonUtils::DeserializeUObject("plan", Bag, Plan, OuterOwner); + PlanPath = Bag->GetStringField(TEXT("planPath")); + } +}; + + +UCLASS() +class UBeamCliDeploymentReleaseBuildErrorsStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString ServiceId = {}; + UPROPERTY() + UProjectErrorReportBuildErrorsStreamData* Report = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("serviceId"), ServiceId); + UBeamJsonUtils::SerializeUObject("report", Report, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("serviceId"), ServiceId); + UBeamJsonUtils::SerializeUObject("report", Report, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + ServiceId = Bag->GetStringField(TEXT("serviceId")); + UBeamJsonUtils::DeserializeUObject("report", Bag, Report, OuterOwner); + } +}; + + +UCLASS() +class UBeamCliDeploymentReleaseProgressStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Name = {}; + UPROPERTY() + float Ratio = {}; + UPROPERTY() + bool IsKnownLength = {}; + UPROPERTY() + FString ServiceName = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + Serializer->WriteValue(TEXT("ratio"), Ratio); + Serializer->WriteValue(TEXT("isKnownLength"), IsKnownLength); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + Serializer->WriteValue(TEXT("ratio"), Ratio); + Serializer->WriteValue(TEXT("isKnownLength"), IsKnownLength); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Name = Bag->GetStringField(TEXT("name")); + FDefaultValueHelper::ParseFloat(Bag->GetStringField(TEXT("ratio")), Ratio); + IsKnownLength = Bag->GetBoolField(TEXT("isKnownLength")); + ServiceName = Bag->GetStringField(TEXT("serviceName")); + } +}; + + +/** + Description: + Perform a release, this will modify remote running services + +Usage: + Beamable.Tools deployment release [options] + +Options: + -c, --comment Associates this comment along with the published Manifest. You'll be able to read it via the Beamable Portal [] + -sc, --service-comments Any number of strings in the format BeamoId::Comment + Associates each comment to the given Beamo Id if it's among the published services. You'll be able to read it via the Beamable Portal [] + -m, --from-manifest, --manifest A manifest json file to use to create a plan + -i, --from-manifest-id, --manifest-id A manifest id to download and use to create a plan + -h, --health, --run-health-checks Run health checks on services + --redeploy, --restart, --roll Restart existing deployed services + --merge Create a Release that adds your current local environment to the existing remote services. Existing deployed services will not be removed + --replace Create a Release that completely overrides the existing remote services. Existing deployed services that are not present locally will be removed (default) + -p, --from-plan, --plan The file path to a pre-generated plan file using the `deploy plan` command + -lp, --from-latest-plan, --last-plan, --latest-plan Use the most recent plan generated from the plan command + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliDeploymentReleaseCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + inline static FString StreamTypeBuildErrors = FString(TEXT("buildErrors")); + UPROPERTY() TArray BuildErrorsStream; + UPROPERTY() TArray BuildErrorsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnBuildErrorsStreamOutput; + + inline static FString StreamTypeProgress = FString(TEXT("progress")); + UPROPERTY() TArray ProgressStream; + UPROPERTY() TArray ProgressTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnProgressStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.cpp similarity index 61% rename from Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.cpp rename to Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.cpp index d53ffc6c..333ed22c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.cpp @@ -1,18 +1,19 @@ -#include "BeamCliFederationListenCommand.h" +#include "BeamCliDeploymentStatusCommand.h" #include "BeamLogging.h" #include "Serialization/JsonSerializerMacros.h" -FString UBeamCliFederationListenCommand::GetCommand() +FString UBeamCliDeploymentStatusCommand::GetCommand() { - return FString(TEXT("federation listen")); + return FString(TEXT("deployment status")); } -void UBeamCliFederationListenCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliDeploymentStatusCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { - UBeamCliFederationListenStreamData* Data = NewObject(this); + UBeamCliDeploymentStatusStreamData* Data = NewObject(this); Data->OuterOwner = this; Data->BeamDeserializeProperties(DataJson); @@ -22,11 +23,15 @@ void UBeamCliFederationListenCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } -void UBeamCliFederationListenCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +void UBeamCliDeploymentStatusCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) { if (OnCompleted) { diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.h similarity index 70% rename from Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.h rename to Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.h index 1f842357..78a23e97 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListenCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliDeploymentStatusCommand.h @@ -2,56 +2,51 @@ #include "Subsystems/CLI/BeamCliCommand.h" #include "Serialization/BeamJsonUtils.h" -#include "Subsystems/CLI/Autogen/StreamData/RunningServiceStreamData.h" -#include "Subsystems/CLI/Autogen/StreamData/RunningFederationStreamData.h" -#include "BeamCliFederationListenCommand.generated.h" +#include "Subsystems/CLI/Autogen/StreamData/GetStatusResponseStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStatusStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h" +#include "BeamCliDeploymentStatusCommand.generated.h" UCLASS() -class UBeamCliFederationListenStreamData : public UObject, public IBeamJsonSerializableUObject +class UBeamCliDeploymentStatusStreamData : public UObject, public IBeamJsonSerializableUObject { GENERATED_BODY() public: UPROPERTY() - FString Cid = {}; - UPROPERTY() - FString Pid = {}; - UPROPERTY() - TArray Services = {}; + UGetStatusResponseStreamData* Status = {}; virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override { - Serializer->WriteValue(TEXT("Cid"), Cid); - Serializer->WriteValue(TEXT("Pid"), Pid); - UBeamJsonUtils::SerializeArray(TEXT("Services"), Services, Serializer); + UBeamJsonUtils::SerializeUObject("status", Status, Serializer); } virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override { - Serializer->WriteValue(TEXT("Cid"), Cid); - Serializer->WriteValue(TEXT("Pid"), Pid); - UBeamJsonUtils::SerializeArray(TEXT("Services"), Services, Serializer); + UBeamJsonUtils::SerializeUObject("status", Status, Serializer); } virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override { - Cid = Bag->GetStringField(TEXT("Cid")); - Pid = Bag->GetStringField(TEXT("Pid")); - UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("Services")), Services, OuterOwner); + UBeamJsonUtils::DeserializeUObject("status", Bag, Status, OuterOwner); } }; /** Description: - [INTERNAL] Listen for changes in the current realm's list of registered microservices + Show the current deployment status Usage: - Beamable.Tools federation listen [options] + Beamable.Tools deployment status [options] Options: + -a, --show-archived Include archived (removed) services --dryrun Should any networking happen? --cid Cid to use; will default to whatever is in the file system --pid Pid to use; will default to whatever is in the file system @@ -65,6 +60,7 @@ class UBeamCliFederationListenStreamData : public UObject, public IBeamJsonSeria --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -75,18 +71,18 @@ class UBeamCliFederationListenStreamData : public UObject, public IBeamJsonSeria */ UCLASS() -class UBeamCliFederationListenCommand : public UBeamCliCommand +class UBeamCliDeploymentStatusCommand : public UBeamCliCommand { GENERATED_BODY() public: inline static FString StreamType = FString(TEXT("stream")); - UPROPERTY() TArray Stream; + UPROPERTY() TArray Stream; UPROPERTY() TArray Timestamps; - TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.cpp index 9565c572..67b2f73c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationAddCommand::GetCommand() return FString(TEXT("federation add")); } -void UBeamCliFederationAddCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationAddCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationAddStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationAddCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationAddCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.h index 5efed4a6..4da8c4cf 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationAddCommand.h @@ -45,25 +45,26 @@ class UBeamCliFederationAddStreamData : public UObject, public IBeamJsonSerializ The type of federation to add Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -81,7 +82,7 @@ class UBeamCliFederationAddCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.cpp index 3ecc9b03..250bffd4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationDisableCommand::GetCommand() return FString(TEXT("federation disable")); } -void UBeamCliFederationDisableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationDisableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationDisableStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationDisableCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationDisableCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.h index c937db0e..f0d09a01 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationDisableCommand.h @@ -43,25 +43,26 @@ class UBeamCliFederationDisableStreamData : public UObject, public IBeamJsonSeri The service to disable federation Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -79,7 +80,7 @@ class UBeamCliFederationDisableCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.cpp index ca0bbcf7..69d2f2ca 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationEnableCommand::GetCommand() return FString(TEXT("federation enable")); } -void UBeamCliFederationEnableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationEnableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationEnableStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationEnableCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationEnableCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.h index a3967d6c..59bc2cd0 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationEnableCommand.h @@ -43,25 +43,26 @@ class UBeamCliFederationEnableStreamData : public UObject, public IBeamJsonSeria The service to disable federation Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -79,7 +80,7 @@ class UBeamCliFederationEnableCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.cpp index a9288f35..59855c77 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationListCommand::GetCommand() return FString(TEXT("federation list")); } -void UBeamCliFederationListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationListStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationListCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationListCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.h index 1725dc76..8815fc15 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationListCommand.h @@ -52,28 +52,29 @@ class UBeamCliFederationListStreamData : public UObject, public IBeamJsonSeriali Beamable.Tools federation list [options] Options: - --type Filter the federations by the type - --id Filter the federations by the service name - -fid, --fed-ids Filter the federation by its federation id - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --type Filter the federations by the type + --id Filter the federations by the service name + -fid, --fed-ids Filter the federation by its federation id + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -90,7 +91,7 @@ class UBeamCliFederationListCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.cpp index 2526ba9d..fa0b5471 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationLocalKeyCommand::GetCommand() return FString(TEXT("federation local-key")); } -void UBeamCliFederationLocalKeyCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationLocalKeyCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationLocalKeyStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationLocalKeyCommand::HandleStreamReceived(FBeamOperationHandl AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationLocalKeyCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h index 8a0cf552..16e33b3f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h @@ -41,25 +41,26 @@ class UBeamCliFederationLocalKeyStreamData : public UObject, public IBeamJsonSer Beamable.Tools federation local-key [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -76,7 +77,7 @@ class UBeamCliFederationLocalKeyCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.cpp new file mode 100644 index 00000000..4eea9a1f --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliFederationLocalSettingsGetIFederatedGameServerCommand::GetCommand() +{ + return FString(TEXT("federation local-settings get IFederatedGameServer")); +} + +bool UBeamCliFederationLocalSettingsGetIFederatedGameServerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliFederationLocalSettingsGetIFederatedGameServerStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliFederationLocalSettingsGetIFederatedGameServerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h new file mode 100644 index 00000000..897e50a0 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h @@ -0,0 +1,85 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.generated.h" + + +UCLASS() +class UBeamCliFederationLocalSettingsGetIFederatedGameServerStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray ContentIds = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("contentIds"), ContentIds, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("contentIds"), ContentIds, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("contentIds")), ContentIds, OuterOwner); + } +}; + + +/** + Description: + Get the local settings for the Beamable.Common.IFederatedGameServer`1[T] local routing key + +Usage: + Beamable.Tools federation local-settings get IFederatedGameServer [options] + +Options: + --beamo-id The Beamo ID for the microservice whose federation you want to configure [] + --fed-id The Federation ID for the federation instance you want to configure [] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliFederationLocalSettingsGetIFederatedGameServerCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.cpp new file mode 100644 index 00000000..44dbbc0b --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliFederationLocalSettingsSetIFederatedGameServerCommand::GetCommand() +{ + return FString(TEXT("federation local-settings set IFederatedGameServer")); +} + +bool UBeamCliFederationLocalSettingsSetIFederatedGameServerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliFederationLocalSettingsSetIFederatedGameServerStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliFederationLocalSettingsSetIFederatedGameServerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.h new file mode 100644 index 00000000..9fca69e6 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.h @@ -0,0 +1,86 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliFederationLocalSettingsSetIFederatedGameServerCommand.generated.h" + + +UCLASS() +class UBeamCliFederationLocalSettingsSetIFederatedGameServerStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray ContentIds = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("contentIds"), ContentIds, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("contentIds"), ContentIds, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("contentIds")), ContentIds, OuterOwner); + } +}; + + +/** + Description: + Get the local settings for the Beamable.Common.IFederatedGameServer`1[T] local routing key + +Usage: + Beamable.Tools federation local-settings set IFederatedGameServer [options] + +Options: + --beamo-id The Beamo ID for the microservice whose federation you want to configure [] + --fed-id The Federation ID for the federation instance you want to configure [] + --content-ids The ids for the services you wish to deploy. Ignoring this option deploys all services + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliFederationLocalSettingsSetIFederatedGameServerCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.cpp index a2609110..a6d9eed4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliFederationRemoveCommand::GetCommand() return FString(TEXT("federation remove")); } -void UBeamCliFederationRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliFederationRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliFederationRemoveStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliFederationRemoveCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliFederationRemoveCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.h index f18cc32c..659c13f3 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationRemoveCommand.h @@ -34,7 +34,7 @@ class UBeamCliFederationRemoveStreamData : public UObject, public IBeamJsonSeria /** Description: - Removes a federation to a particular microservice. + Removes a federation to a particular microservice Usage: Beamable.Tools federation remove [options] @@ -45,25 +45,26 @@ class UBeamCliFederationRemoveStreamData : public UObject, public IBeamJsonSeria The type of federation to remove. Empty string will remove all federations. This is applied as an "AND" filter with the `fed-id` argument Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -81,7 +82,7 @@ class UBeamCliFederationRemoveCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.cpp new file mode 100644 index 00000000..afed7a23 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliFederationSetCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliFederationSetCommand::GetCommand() +{ + return FString(TEXT("federation set")); +} + +bool UBeamCliFederationSetCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliFederationSetStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliFederationSetCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.h new file mode 100644 index 00000000..cfe1bb8a --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliFederationSetCommand.h @@ -0,0 +1,89 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliFederationSetCommand.generated.h" + + +UCLASS() +class UBeamCliFederationSetStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +/** + Description: + Set all federations for a particular service + +Usage: + Beamable.Tools federation set [options] + +Arguments: + The BeamoId of the microservice to add + +Options: + -c, --clear Erase all federations + --fed-id A federation id, must be in a parallel layout to the --fed-type option + --fed-type A federation type, must be in a parallel layout to the --fed-id option + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + + */ +UCLASS() +class UBeamCliFederationSetCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.cpp index b30c0428..0ecd90a1 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliInitCommand::GetCommand() return FString(TEXT("init")); } -void UBeamCliInitCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliInitCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliInitStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliInitCommand::HandleStreamReceived(FBeamOperationHandle Op, FString AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliInitCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.h index cc28e734..b971c70f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliInitCommand.h @@ -54,35 +54,37 @@ class UBeamCliInitStreamData : public UObject, public IBeamJsonSerializableUObje the folder that will be initialized as a beamable project. [default: .] Options: - --email, --username Specify user email address - --password User password - --host The host endpoint for beamable - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - --refresh-token Refresh token to use for the requests - --save-to-environment Save login refresh token to environment variable - --no-token-save Prevent auth tokens from being saved to disk. This replaces the legacy --save-to-file option [default: False] - --customer-scoped Make request customer scoped instead of product only - --print-to-console Prints out login request response to console - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --email, --username Specify user email address + --password User password + --host The host endpoint for beamable + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + --refresh-token Refresh token to use for the requests + --save-extra-paths Overwrite the stored extra paths for where to find projects [] + --save-to-environment Save login refresh token to environment variable + --no-token-save Prevent auth tokens from being saved to disk. This replaces the legacy --save-to-file option [default: False] + --customer-scoped Make request customer scoped instead of product only + --print-to-console Prints out login request response to console + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -100,7 +102,7 @@ class UBeamCliInitCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.cpp index cfc631e6..60177fa3 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliListenPlayerCommand::GetCommand() return FString(TEXT("listen player")); } -void UBeamCliListenPlayerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliListenPlayerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliListenPlayerStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliListenPlayerCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliListenPlayerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.h index 1376dca9..120897d7 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenPlayerCommand.h @@ -46,26 +46,27 @@ class UBeamCliListenPlayerStreamData : public UObject, public IBeamJsonSerializa Beamable.Tools listen player [options] Options: - -c, --context A regex to filter for notification channels [default: .*] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -c, --context A regex to filter for notification channels [default: .*] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliListenPlayerCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.cpp index b2f8775a..a65452c2 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliListenServerCommand::GetCommand() return FString(TEXT("listen server")); } -void UBeamCliListenServerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliListenServerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliListenServerStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliListenServerCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliListenServerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.h index f6fcef6f..c930df68 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliListenServerCommand.h @@ -46,26 +46,27 @@ class UBeamCliListenServerStreamData : public UObject, public IBeamJsonSerializa Beamable.Tools listen server [options] Options: - -n, --no-filter When true, do not send any approved list of messages, such that all server messages will be sent [default: False] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -n, --no-filter When true, do not send any approved list of messages, such that all server messages will be sent [default: False] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliListenServerCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.cpp new file mode 100644 index 00000000..0f7b84b7 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliLogoutCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliLogoutCommand::GetCommand() +{ + return FString(TEXT("logout")); +} + +bool UBeamCliLogoutCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliLogoutStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliLogoutCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.h new file mode 100644 index 00000000..d21e1591 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliLogoutCommand.h @@ -0,0 +1,82 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliLogoutCommand.generated.h" + + +UCLASS() +class UBeamCliLogoutStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +/** + Description: + Removes any saved credentials + +Usage: + Beamable.Tools logout [options] + +Options: + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliLogoutCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.cpp index bd66962b..5cd3ae34 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliMeCommand::GetCommand() return FString(TEXT("me")); } -void UBeamCliMeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliMeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliMeStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliMeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString Re AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliMeCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.h index 974f13cd..f24cf8b5 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliMeCommand.h @@ -71,25 +71,26 @@ class UBeamCliMeStreamData : public UObject, public IBeamJsonSerializableUObject Beamable.Tools me [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -106,7 +107,7 @@ class UBeamCliMeCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.cpp index 4b6ee2cd..25a1e5fa 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliOapiDownloadCommand::GetCommand() return FString(TEXT("oapi download")); } -void UBeamCliOapiDownloadCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliOapiDownloadCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliOapiDownloadCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.h index e41b2d97..e970ac69 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliOapiDownloadCommand.h @@ -15,28 +15,29 @@ Beamable.Tools oapi download [options] Options: - --output When null or empty, the generated code will be sent to standard-out. When there is a output value, the file or files will be written to the path [] - --filter Filter which open apis to generate. An empty string matches everything [] - --combine-into-one-document Combines all API documents into one. In order to achieve that it will need to rename some of the types because of duplicates, eg. GetManifestResponse - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --output When null or empty, the generated code will be sent to standard-out. When there is a output value, the file or files will be written to the path [] + --filter Filter which open apis to generate. An empty string matches everything [] + --combine-into-one-document Combines all API documents into one. In order to achieve that it will need to rename some of the types because of duplicates, eg. GetManifestResponse + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -50,7 +51,7 @@ class UBeamCliOapiDownloadCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.cpp index 465bac9d..5f569f31 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProfileCheckCountersCommand::GetCommand() return FString(TEXT("profile check-counters")); } -void UBeamCliProfileCheckCountersCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProfileCheckCountersCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProfileCheckCountersStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProfileCheckCountersCommand::HandleStreamReceived(FBeamOperationHan AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProfileCheckCountersCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.h index 5ca2c5c4..d09ea043 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckCountersCommand.h @@ -44,27 +44,28 @@ class UBeamCliProfileCheckCountersStreamData : public UObject, public IBeamJsonS The path to the dotnet-counters output json file Options: - --cpu-limit The max cpu spike limit % [default: 12] - --mem-limit The max mem spike limit MB [default: 160] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --cpu-limit The max cpu spike limit % [default: 12] + --mem-limit The max mem spike limit MB [default: 160] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliProfileCheckCountersCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.cpp index 2e72cd0a..13d94d34 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProfileCheckNbomberCommand::GetCommand() return FString(TEXT("profile check-nbomber")); } -void UBeamCliProfileCheckNbomberCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProfileCheckNbomberCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProfileCheckNbomberStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProfileCheckNbomberCommand::HandleStreamReceived(FBeamOperationHand AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProfileCheckNbomberCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.h index 9280f992..8c34eed6 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProfileCheckNbomberCommand.h @@ -44,27 +44,28 @@ class UBeamCliProfileCheckNbomberStreamData : public UObject, public IBeamJsonSe The path to the nbomber output csv file Options: - --fail-limit The max number of failed requests [default: 0] - --p95-limit The max p95 in ms [default: 2500] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --fail-limit The max number of failed requests [default: 0] + --p95-limit The max p95 in ms [default: 2500] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliProfileCheckNbomberCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.cpp index 033f656f..0ddc5fa4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectAddUnityProjectCommand::GetCommand() return FString(TEXT("project add-unity-project")); } -void UBeamCliProjectAddUnityProjectCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectAddUnityProjectCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectAddUnityProjectCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.h index 701e741b..096f8521 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectAddUnityProjectCommand.h @@ -18,25 +18,26 @@ Relative path to the Unity project Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -51,7 +52,7 @@ class UBeamCliProjectAddUnityProjectCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.cpp index 0d089145..5cea1e50 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectBuildCommand::GetCommand() return FString(TEXT("project build")); } -void UBeamCliProjectBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectBuildStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectBuildCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.h index f02c9616..d40238ea 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectBuildCommand.h @@ -47,27 +47,28 @@ class UBeamCliProjectBuildStreamData : public UObject, public IBeamJsonSerializa Beamable.Tools project build [options] Options: - -w, --watch When true, the command will run forever and watch the state of the program - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -w, --watch When true, the command will run forever and watch the state of the program + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -84,7 +85,7 @@ class UBeamCliProjectBuildCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.cpp index bae5e01e..3f349a84 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectDepsAddCommand::GetCommand() return FString(TEXT("project deps add")); } -void UBeamCliProjectDepsAddCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectDepsAddCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectDepsAddCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.h index 2fe5f5a8..8ee330f9 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsAddCommand.h @@ -19,25 +19,26 @@ The storage that will be a dependency of the given microservice Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -52,7 +53,7 @@ class UBeamCliProjectDepsAddCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.cpp index 888683a4..6d4cba58 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectDepsCommand::GetCommand() return FString(TEXT("project deps")); } -void UBeamCliProjectDepsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectDepsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectDepsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.h index 41f8e3fe..ecb7169a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsCommand.h @@ -15,25 +15,26 @@ Beamable.Tools project deps [command] [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information Commands: add Add a given storage as a dependency of a microservice @@ -51,7 +52,7 @@ class UBeamCliProjectDepsCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.cpp index dbb7aa25..1b153fab 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectDepsListCommand::GetCommand() return FString(TEXT("project deps list")); } -void UBeamCliProjectDepsListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectDepsListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectDepsListStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectDepsListCommand::HandleStreamReceived(FBeamOperationHandle O AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectDepsListCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.h index d34dcfaf..f089528f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsListCommand.h @@ -42,28 +42,29 @@ class UBeamCliProjectDepsListStreamData : public UObject, public IBeamJsonSerial Beamable.Tools project deps list [options] Options: - --service The name of the service to list the dependencies of - --all If this is passed and set to True, then all references of the service will be listed - --non-beamo If this is passed and set to True, then all references that are not storages or microservices will be listed - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --service The name of the service to list the dependencies of + --all If this is passed and set to True, then all references of the service will be listed + --non-beamo If this is passed and set to True, then all references that are not storages or microservices will be listed + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -80,7 +81,7 @@ class UBeamCliProjectDepsListCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.cpp index 38193a9c..95c472ea 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectDepsRemoveCommand::GetCommand() return FString(TEXT("project deps remove")); } -void UBeamCliProjectDepsRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectDepsRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectDepsRemoveCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.h index 31391953..5c8c4210 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDepsRemoveCommand.h @@ -19,25 +19,26 @@ The dependency that will be removed from that service Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -52,7 +53,7 @@ class UBeamCliProjectDepsRemoveCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.cpp index 8ba57a4c..3c4d0a38 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectDisableCommand::GetCommand() return FString(TEXT("project disable")); } -void UBeamCliProjectDisableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectDisableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectDisableStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectDisableCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectDisableCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.h index 77686876..8353a41e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectDisableCommand.h @@ -58,6 +58,7 @@ class UBeamCliProjectDisableStreamData : public UObject, public IBeamJsonSeriali --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -79,7 +80,7 @@ class UBeamCliProjectDisableCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.cpp index 478cf93d..87f69a3e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectEnableCommand::GetCommand() return FString(TEXT("project enable")); } -void UBeamCliProjectEnableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectEnableCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectEnableStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectEnableCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectEnableCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.h index 0827531f..7a8a2268 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectEnableCommand.h @@ -58,6 +58,7 @@ class UBeamCliProjectEnableStreamData : public UObject, public IBeamJsonSerializ --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -79,7 +80,7 @@ class UBeamCliProjectEnableCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.cpp index 56e15dfb..6279476f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.cpp @@ -8,9 +8,27 @@ FString UBeamCliProjectGenerateClientCommand::GetCommand() return FString(TEXT("project generate-client")); } -void UBeamCliProjectGenerateClientCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectGenerateClientCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliProjectGenerateClientStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; } void UBeamCliProjectGenerateClientCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.h index 563f48f2..ebd8a0e4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateClientCommand.h @@ -6,6 +6,37 @@ #include "BeamCliProjectGenerateClientCommand.generated.h" +UCLASS() +class UBeamCliProjectGenerateClientStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString BeamoId = {}; + UPROPERTY() + FString FilePath = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("filePath"), FilePath); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("filePath"), FilePath); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + BeamoId = Bag->GetStringField(TEXT("beamoId")); + FilePath = Bag->GetStringField(TEXT("filePath")); + } +}; + /** Description: @@ -18,27 +49,33 @@ The .dll filepath for the built microservice Options: - --output-dir Directory to write the output client at - --output-links When true, generate the source client files to all associated projects [default: True] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --without-group, --without-groups A set of BeamServiceGroup tags that will exclude the associated services. Exclusion takes precedence over inclusion + --with-group, --with-groups A set of BeamServiceGroup tags that will include the associated services + --output-dir Directory to write the output client at + --output-links When true, generate the source client files to all associated projects [default: True] + --existing-fed-ids A set of existing federation ids + --existing-fed-type-names A set of existing class names for federations + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -50,10 +87,13 @@ class UBeamCliProjectGenerateClientCommand : public UBeamCliCommand GENERATED_BODY() public: - + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.cpp index 772a7d35..9b9d0929 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectGenerateEnvCommand::GetCommand() return FString(TEXT("project generate-env")); } -void UBeamCliProjectGenerateEnvCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectGenerateEnvCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectGenerateEnvStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectGenerateEnvCommand::HandleStreamReceived(FBeamOperationHandl AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectGenerateEnvCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.h index 6386c1ce..a368c938 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGenerateEnvCommand.h @@ -63,6 +63,7 @@ class UBeamCliProjectGenerateEnvStreamData : public UObject, public IBeamJsonSer --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -85,7 +86,7 @@ class UBeamCliProjectGenerateEnvCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.cpp index 6e114d74..7e165971 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectGeneratePropertiesCommand::GetCommand() return FString(TEXT("project generate-properties")); } -void UBeamCliProjectGeneratePropertiesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectGeneratePropertiesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectGeneratePropertiesCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.h index 1ca9cf2e..897df4c8 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectGeneratePropertiesCommand.h @@ -22,26 +22,27 @@ - "DIR.PROPS" = $([System.IO.Path]::GetDirectoryName(`$(DirectoryBuildPropsPath)`)) Options: - --build-dir A path relative to the given solution directory, that will be used to store the projects /bin and /obj directories. Note: the given path will have the project's assembly name and the bin or obj folder appended - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --build-dir A path relative to the given solution directory, that will be used to store the projects /bin and /obj directories. Note: the given path will have the project's assembly name and the bin or obj folder appended + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -56,7 +57,7 @@ class UBeamCliProjectGeneratePropertiesCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.cpp index 28f3540a..469f9a46 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectListCommand::GetCommand() return FString(TEXT("project list")); } -void UBeamCliProjectListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectListStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectListCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectListCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.h index 9734a324..083b8d6a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectListCommand.h @@ -46,25 +46,26 @@ class UBeamCliProjectListStreamData : public UObject, public IBeamJsonSerializab Beamable.Tools project list [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -81,7 +82,7 @@ class UBeamCliProjectListCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.cpp index 0c86b6ca..4b27bed6 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectLogsCommand::GetCommand() return FString(TEXT("project logs")); } -void UBeamCliProjectLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectLogsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectLogsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.h index 41ef7270..e18ec7a0 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.h @@ -59,26 +59,27 @@ class UBeamCliProjectLogsStreamData : public UObject, public IBeamJsonSerializab The name of the service to view logs for Options: - --reconnect If the service stops, and reconnect is enabled, then the logs command will wait for the service to restart and then reattach to logs [default: True] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --reconnect If the service stops, and reconnect is enabled, then the logs command will wait for the service to restart and then reattach to logs [default: True] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -96,7 +97,7 @@ class UBeamCliProjectLogsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.cpp index 602f4fdb..3a5bfa9a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectNewCommonLibCommand::GetCommand() return FString(TEXT("project new common-lib")); } -void UBeamCliProjectNewCommonLibCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectNewCommonLibCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectNewCommonLibCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.h index a89d2ffe..89913633 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewCommonLibCommand.h @@ -18,27 +18,28 @@ The name of the new library project Options: - --sln Relative path to the .sln file to use for the new project. If the .sln file does not exist, it will be created. When no option is configured, if this command is executing inside a .beamable folder, then the first .sln found in .beamable/.. will be used. If no .sln is found, the .sln path will be .sln. If no .beamable folder exists, then the /.sln will be used [default: BeamableUnreal.sln] - --output-path The path where the project is going to be created - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --sln Relative path to the .sln file to use for the new project. If the .sln file does not exist, it will be created. When no option is configured, if this command is executing inside a .beamable folder, then the first .sln found in .beamable/.. will be used. If no .sln is found, the .sln path will be .sln. If no .beamable folder exists, then the /.sln will be used [default: BeamableUnreal.sln] + --output-path The path where the project is going to be created + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -53,7 +54,7 @@ class UBeamCliProjectNewCommonLibCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.cpp index 0ca7c1c1..86b9a71e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectNewServiceCommand::GetCommand() return FString(TEXT("project new service")); } -void UBeamCliProjectNewServiceCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectNewServiceCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectNewServiceCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.h index d9154dc7..82102843 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewServiceCommand.h @@ -23,7 +23,6 @@ --link-to The name of the storage to link this service to --groups Specify BeamableGroups for this service --generate-common If passed, will create a common library for this project - --beamable-dev INTERNAL This enables a sane workflow for beamable developers to be happy and productive [default: False] --dryrun Should any networking happen? --cid Cid to use; will default to whatever is in the file system --pid Pid to use; will default to whatever is in the file system @@ -38,6 +37,7 @@ --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -57,7 +57,7 @@ class UBeamCliProjectNewServiceCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.cpp index d844faf8..cb9db039 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectNewStorageCommand::GetCommand() return FString(TEXT("project new storage")); } -void UBeamCliProjectNewStorageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectNewStorageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectNewStorageCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.h index 8d2b49a6..7c6b44ed 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectNewStorageCommand.h @@ -36,6 +36,7 @@ --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -55,7 +56,7 @@ class UBeamCliProjectNewStorageCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.cpp index 8217aec2..e0c04cba 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectOapiCommand::GetCommand() return FString(TEXT("project oapi")); } -void UBeamCliProjectOapiCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectOapiCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectOapiStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectOapiCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectOapiCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.h index bd105ac1..5155fe9c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOapiCommand.h @@ -51,26 +51,27 @@ class UBeamCliProjectOapiStreamData : public UObject, public IBeamJsonSerializab Beamable.Tools project oapi [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -87,7 +88,7 @@ class UBeamCliProjectOapiCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.cpp index 69a11ff5..8d1708af 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectOpenMongoCommand::GetCommand() return FString(TEXT("project open-mongo")); } -void UBeamCliProjectOpenMongoCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectOpenMongoCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectOpenMongoCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.h index 54ca2aee..a51c689d 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenMongoCommand.h @@ -18,25 +18,26 @@ Name of the storage to open mongo-express to [] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -51,7 +52,7 @@ class UBeamCliProjectOpenMongoCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.cpp index 8249ef08..3e352e76 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectOpenSwaggerCommand::GetCommand() return FString(TEXT("project open-swagger")); } -void UBeamCliProjectOpenSwaggerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectOpenSwaggerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectOpenSwaggerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.h index 0d399ea5..a0fad1be 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.h @@ -18,27 +18,28 @@ Name of the service to open swagger to [] Options: - -k, --routing-key The routing key for the service instance we want. If not passed, defaults to the local service [default: desktop-54b40oj_f52ec40b04998c126ef3095036e1fb65] - -r, --remote When set, enforces the routing key to be the one for the service deployed to the realm. Cannot be specified when --routing-key is also set - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -k, --routing-key The routing key for the service instance we want. If not passed, defaults to the local service [default: desktop-54b40oj_2f6b9064aeb63292d9fff0bba2c3b7a6] + -r, --remote When set, enforces the routing key to be the one for the service deployed to the realm. Cannot be specified when --routing-key is also set + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -53,7 +54,7 @@ class UBeamCliProjectOpenSwaggerCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.cpp index b94520ca..a3514950 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectPsCommand::GetCommand() return FString(TEXT("project ps")); } -void UBeamCliProjectPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectPsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FSt AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectPsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.h index f8a297a0..9b54571f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectPsCommand.h @@ -75,6 +75,7 @@ class UBeamCliProjectPsStreamData : public UObject, public IBeamJsonSerializable --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -96,7 +97,7 @@ class UBeamCliProjectPsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.cpp index 06f36726..4569b922 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectReadSettingsCommand::GetCommand() return FString(TEXT("project read-settings")); } -void UBeamCliProjectReadSettingsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectReadSettingsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectReadSettingsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectReadSettingsCommand::HandleStreamReceived(FBeamOperationHand AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectReadSettingsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.h index 1531580f..d167db7f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectReadSettingsCommand.h @@ -42,26 +42,27 @@ class UBeamCliProjectReadSettingsStreamData : public UObject, public IBeamJsonSe Beamable.Tools project read-settings [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliProjectReadSettingsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.cpp index f19239d5..4d94bf0b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliProjectRegenerateCommand::GetCommand() return FString(TEXT("project regenerate")); } -void UBeamCliProjectRegenerateCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectRegenerateCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliProjectRegenerateCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.h index ed07db41..cf917468 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRegenerateCommand.h @@ -20,26 +20,27 @@ The path to where the files will be copied to [] Options: - --sln Relative path to the .sln file to use for the new project. If the .sln file does not exist, it will be created. When no option is configured, if this command is executing inside a .beamable folder, then the first .sln found in .beamable/.. will be used. If no .sln is found, the .sln path will be .sln. If no .beamable folder exists, then the /.sln will be used [default: BeamableUnreal.sln] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --sln Relative path to the .sln file to use for the new project. If the .sln file does not exist, it will be created. When no option is configured, if this command is executing inside a .beamable folder, then the first .sln found in .beamable/.. will be used. If no .sln is found, the .sln path will be .sln. If no .beamable folder exists, then the /.sln will be used [default: BeamableUnreal.sln] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -54,7 +55,7 @@ class UBeamCliProjectRegenerateCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.cpp new file mode 100644 index 00000000..fde60271 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliProjectRemoveCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliProjectRemoveCommand::GetCommand() +{ + return FString(TEXT("project remove")); +} + +bool UBeamCliProjectRemoveCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliProjectRemoveStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliProjectRemoveCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.h new file mode 100644 index 00000000..9af07a7f --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRemoveCommand.h @@ -0,0 +1,87 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliProjectRemoveCommand.generated.h" + + +UCLASS() +class UBeamCliProjectRemoveStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +/** + Description: + Removes the local source code for a service or storage + +Usage: + Beamable.Tools project remove [options] + +Options: + --sln Relative path to the .sln file to use for the new project. If the .sln file does not exist, it will be created. When no option is configured, if this command is executing inside a .beamable folder, then the first .sln found in .beamable/.. will be used. If no .sln is found, the .sln path will be .sln. If no .beamable folder exists, then the /.sln will be used [default: BeamableUnreal.sln] + --service-directory Relative path to directory where project should be created. Defaults to "SOLUTION_DIR/services" + --ids The list of services to include, defaults to all local services (separated by whitespace) + --without-group, --without-groups A set of BeamServiceGroup tags that will exclude the associated services. Exclusion takes precedence over inclusion + --with-group, --with-groups A set of BeamServiceGroup tags that will include the associated services + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliProjectRemoveCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.cpp index 8aaf91e5..f78318a9 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectRunCommand::GetCommand() return FString(TEXT("project run")); } -void UBeamCliProjectRunCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectRunCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectRunStreamData* Data = NewObject(this); @@ -22,9 +23,12 @@ void UBeamCliProjectRunCommand::HandleStreamReceived(FBeamOperationHandle Op, FS AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeBuildErrors) && OnBuildErrorsStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeBuildErrors) && OnBuildErrorsStreamOutput) { UBeamCliProjectRunBuildErrorsStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -36,9 +40,12 @@ if(ReceivedStreamType.Equals(StreamTypeBuildErrors) && OnBuildErrorsStreamOutput AsyncTask(ENamedThreads::GameThread, [this, Op] { OnBuildErrorsStreamOutput(BuildErrorsStream, BuildErrorsTimestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeErrorRunFailErrorOutput) && OnErrorRunFailErrorOutputStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeErrorRunFailErrorOutput) && OnErrorRunFailErrorOutputStreamOutput) { UBeamCliProjectRunErrorRunFailErrorOutputStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -50,8 +57,12 @@ if(ReceivedStreamType.Equals(StreamTypeErrorRunFailErrorOutput) && OnErrorRunFai AsyncTask(ENamedThreads::GameThread, [this, Op] { OnErrorRunFailErrorOutputStreamOutput(ErrorRunFailErrorOutputStream, ErrorRunFailErrorOutputTimestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectRunCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.h index 8e3b5828..6765ef5a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectRunCommand.h @@ -150,6 +150,7 @@ class UBeamCliProjectRunErrorRunFailErrorOutputStreamData : public UObject, publ --with-group, --with-groups A set of BeamServiceGroup tags that will include the associated services --force With this flag, we restart any running services. Without it, we skip running services --detach With this flag, the service will run the background after it has reached basic startup + --no-client-gen We compile services that need compiling before running. This will disable the client-code generation part of the compilation --dryrun Should any networking happen? --cid Cid to use; will default to whatever is in the file system --pid Pid to use; will default to whatever is in the file system @@ -164,6 +165,7 @@ class UBeamCliProjectRunErrorRunFailErrorOutputStreamData : public UObject, publ --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -195,7 +197,7 @@ class UBeamCliProjectRunCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnErrorRunFailErrorOutputStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.cpp index 3677bdb0..aa1a8dc7 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectStopCommand::GetCommand() return FString(TEXT("project stop")); } -void UBeamCliProjectStopCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectStopCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectStopStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectStopCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectStopCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.h index 7a4c69e7..58baf170 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStopCommand.h @@ -50,27 +50,28 @@ class UBeamCliProjectStopStreamData : public UObject, public IBeamJsonSerializab Beamable.Tools project stop [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - -k, --kill-task Kill the task instead of sending a graceful shutdown signal via the socket [default: False] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + -k, --kill-task Kill the task instead of sending a graceful shutdown signal via the socket [default: False] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -87,7 +88,7 @@ class UBeamCliProjectStopCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.cpp new file mode 100644 index 00000000..b51cdc68 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.cpp @@ -0,0 +1,60 @@ +#include "BeamCliProjectStorageEraseCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliProjectStorageEraseCommand::GetCommand() +{ + return FString(TEXT("project storage erase")); +} + +bool UBeamCliProjectStorageEraseCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliProjectStorageEraseStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeMongoLogs) && OnMongoLogsStreamOutput) + { + UBeamCliProjectStorageEraseMongoLogsStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + MongoLogsStream.Add(Data); + MongoLogsTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnMongoLogsStreamOutput(MongoLogsStream, MongoLogsTimestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliProjectStorageEraseCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.h new file mode 100644 index 00000000..c79f29bc --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageEraseCommand.h @@ -0,0 +1,128 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliProjectStorageEraseCommand.generated.h" + + +UCLASS() +class UBeamCliProjectStorageEraseStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +UCLASS() +class UBeamCliProjectStorageEraseMongoLogsStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString LogLevel = {}; + UPROPERTY() + FString Message = {}; + UPROPERTY() + int64 Timestamp = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + LogLevel = Bag->GetStringField(TEXT("logLevel")); + Message = Bag->GetStringField(TEXT("message")); + FDefaultValueHelper::ParseInt64(Bag->GetStringField(TEXT("timestamp")), Timestamp); + } +}; + + +/** + Description: + Clear the data for a storage object + +Usage: + Beamable.Tools project storage erase [options] + +Arguments: + the beamoId for the storage object + +Options: + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + + */ +UCLASS() +class UBeamCliProjectStorageEraseCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + inline static FString StreamTypeMongoLogs = FString(TEXT("mongoLogs")); + UPROPERTY() TArray MongoLogsStream; + UPROPERTY() TArray MongoLogsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnMongoLogsStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.cpp new file mode 100644 index 00000000..834ff5ae --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.cpp @@ -0,0 +1,60 @@ +#include "BeamCliProjectStorageRestoreCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliProjectStorageRestoreCommand::GetCommand() +{ + return FString(TEXT("project storage restore")); +} + +bool UBeamCliProjectStorageRestoreCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliProjectStorageRestoreStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeMongoLogs) && OnMongoLogsStreamOutput) + { + UBeamCliProjectStorageRestoreMongoLogsStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + MongoLogsStream.Add(Data); + MongoLogsTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnMongoLogsStreamOutput(MongoLogsStream, MongoLogsTimestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliProjectStorageRestoreCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.h new file mode 100644 index 00000000..3720a8b2 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageRestoreCommand.h @@ -0,0 +1,130 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliProjectStorageRestoreCommand.generated.h" + + +UCLASS() +class UBeamCliProjectStorageRestoreStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +UCLASS() +class UBeamCliProjectStorageRestoreMongoLogsStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString LogLevel = {}; + UPROPERTY() + FString Message = {}; + UPROPERTY() + int64 Timestamp = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + LogLevel = Bag->GetStringField(TEXT("logLevel")); + Message = Bag->GetStringField(TEXT("message")); + FDefaultValueHelper::ParseInt64(Bag->GetStringField(TEXT("timestamp")), Timestamp); + } +}; + + +/** + Description: + Restore a storage object from a snapshot folder + +Usage: + Beamable.Tools project storage restore [options] + +Arguments: + The beamoId for the storage object + +Options: + -m, --merge When true, merges the snapshot into the existing data + -i, --input The input for the snapshot [default: snapshot] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + + */ +UCLASS() +class UBeamCliProjectStorageRestoreCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + inline static FString StreamTypeMongoLogs = FString(TEXT("mongoLogs")); + UPROPERTY() TArray MongoLogsStream; + UPROPERTY() TArray MongoLogsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnMongoLogsStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.cpp new file mode 100644 index 00000000..234bdf47 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.cpp @@ -0,0 +1,60 @@ +#include "BeamCliProjectStorageSnapshotCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliProjectStorageSnapshotCommand::GetCommand() +{ + return FString(TEXT("project storage snapshot")); +} + +bool UBeamCliProjectStorageSnapshotCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliProjectStorageSnapshotStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + if(ReceivedStreamType.Equals(StreamTypeMongoLogs) && OnMongoLogsStreamOutput) + { + UBeamCliProjectStorageSnapshotMongoLogsStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + MongoLogsStream.Add(Data); + MongoLogsTimestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnMongoLogsStreamOutput(MongoLogsStream, MongoLogsTimestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliProjectStorageSnapshotCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.h new file mode 100644 index 00000000..98254380 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectStorageSnapshotCommand.h @@ -0,0 +1,129 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliProjectStorageSnapshotCommand.generated.h" + + +UCLASS() +class UBeamCliProjectStorageSnapshotStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +UCLASS() +class UBeamCliProjectStorageSnapshotMongoLogsStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString LogLevel = {}; + UPROPERTY() + FString Message = {}; + UPROPERTY() + int64 Timestamp = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("logLevel"), LogLevel); + Serializer->WriteValue(TEXT("message"), Message); + Serializer->WriteValue(TEXT("timestamp"), Timestamp); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + LogLevel = Bag->GetStringField(TEXT("logLevel")); + Message = Bag->GetStringField(TEXT("message")); + FDefaultValueHelper::ParseInt64(Bag->GetStringField(TEXT("timestamp")), Timestamp); + } +}; + + +/** + Description: + Create a snapshot of a local Storage Object + +Usage: + Beamable.Tools project storage snapshot [options] + +Arguments: + The beamoId for the storage object + +Options: + -o, --output The output for the snapshot [default: snapshot] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + + */ +UCLASS() +class UBeamCliProjectStorageSnapshotCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + inline static FString StreamTypeMongoLogs = FString(TEXT("mongoLogs")); + UPROPERTY() TArray MongoLogsStream; + UPROPERTY() TArray MongoLogsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnMongoLogsStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.cpp index 6a822f1a..3d6d39ed 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectVersionCommand::GetCommand() return FString(TEXT("project version")); } -void UBeamCliProjectVersionCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectVersionCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectVersionStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectVersionCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectVersionCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.h index a4234a14..6e6b8a05 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectVersionCommand.h @@ -66,6 +66,7 @@ class UBeamCliProjectVersionStreamData : public UObject, public IBeamJsonSeriali --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -87,7 +88,7 @@ class UBeamCliProjectVersionCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.cpp index 8104c9d9..3c659a5f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliProjectWriteSettingCommand::GetCommand() return FString(TEXT("project write-setting")); } -void UBeamCliProjectWriteSettingCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliProjectWriteSettingCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliProjectWriteSettingStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliProjectWriteSettingCommand::HandleStreamReceived(FBeamOperationHand AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliProjectWriteSettingCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.h index 8065fb7b..e20418ec 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliProjectWriteSettingCommand.h @@ -43,29 +43,30 @@ class UBeamCliProjectWriteSettingStreamData : public UObject, public IBeamJsonSe The BeamoId to write the settings for Options: - -s, --skip, --skip-build If options are modified, the project needs to be re-built so that the embedded resource is available on the next execution of the service. However, this build operation may be skipped when this option is set - -k, --key The keys of the settings. The count must match the count of the --value options - -d, --delete-key The keys of the settings to be deleted. If the key is also set in a --key option, the key will not be deleted - -v, --value The values of the settings. The count must match the count of the --key options - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -s, --skip, --skip-build If options are modified, the project needs to be re-built so that the embedded resource is available on the next execution of the service. However, this build operation may be skipped when this option is set + -k, --key The keys of the settings. The count must match the count of the --value options + -d, --delete-key The keys of the settings to be deleted. If the key is also set in a --key option, the key will not be deleted + -v, --value The values of the settings. The count must match the count of the --key options + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -83,7 +84,7 @@ class UBeamCliProjectWriteSettingCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.cpp index 8d5a4558..9e594523 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServerReqCommand::GetCommand() return FString(TEXT("server req")); } -void UBeamCliServerReqCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServerReqCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServerReqStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServerReqCommand::HandleStreamReceived(FBeamOperationHandle Op, FSt AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServerReqCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.h index 3a4f67dc..7b2e51ee 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerReqCommand.h @@ -40,27 +40,28 @@ class UBeamCliServerReqStreamData : public UObject, public IBeamJsonSerializable Beamable.Tools server req [options] Options: - --port The port where the CLI server is running [default: 8342] - --cli The CLI command to execute - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --port The port where the CLI server is running [default: 8342] + --cli The CLI command to execute + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -77,7 +78,7 @@ class UBeamCliServerReqCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.cpp index 0e7564f2..9dbe05a3 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServerServeCommand::GetCommand() return FString(TEXT("server serve")); } -void UBeamCliServerServeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServerServeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServerServeStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServerServeCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServerServeCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.h index 7ec51f10..ca9be34b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServerServeCommand.h @@ -66,6 +66,7 @@ class UBeamCliServerServeStreamData : public UObject, public IBeamJsonSerializab --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -88,7 +89,7 @@ class UBeamCliServerServeCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.cpp index 4a17f369..9d8f1e43 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesBuildCommand::GetCommand() return FString(TEXT("services build")); } -void UBeamCliServicesBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesBuildStreamData* Data = NewObject(this); @@ -22,9 +23,12 @@ void UBeamCliServicesBuildCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeProgress) && OnProgressStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeProgress) && OnProgressStreamOutput) { UBeamCliServicesBuildProgressStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -36,8 +40,12 @@ if(ReceivedStreamType.Equals(StreamTypeProgress) && OnProgressStreamOutput) AsyncTask(ENamedThreads::GameThread, [this, Op] { OnProgressStreamOutput(ProgressStream, ProgressTimestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesBuildCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.h index df31f287..d06176a4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBuildCommand.h @@ -110,6 +110,7 @@ class UBeamCliServicesBuildProgressStreamData : public UObject, public IBeamJson --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -136,7 +137,7 @@ class UBeamCliServicesBuildCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnProgressStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.cpp index 7497ae07..0ccdc43a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesBundleCommand::GetCommand() return FString(TEXT("services bundle")); } -void UBeamCliServicesBundleCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesBundleCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesBundleStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesBundleCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesBundleCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.h index d826623b..21730c8c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesBundleCommand.h @@ -78,7 +78,7 @@ class UBeamCliServicesBundleCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.cpp index f12f1283..fed20516 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesDeployCommand::GetCommand() return FString(TEXT("services deploy")); } -void UBeamCliServicesDeployCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesDeployCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesDeployStreamData* Data = NewObject(this); @@ -22,9 +23,12 @@ void UBeamCliServicesDeployCommand::HandleStreamReceived(FBeamOperationHandle Op AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeRemoteProgress) && OnRemoteProgressStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeRemoteProgress) && OnRemoteProgressStreamOutput) { UBeamCliServicesDeployRemoteProgressStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -36,8 +40,12 @@ if(ReceivedStreamType.Equals(StreamTypeRemoteProgress) && OnRemoteProgressStream AsyncTask(ENamedThreads::GameThread, [this, Op] { OnRemoteProgressStreamOutput(RemoteProgressStream, RemoteProgressTimestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesDeployCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.h index 6b88e081..d727d76d 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDeployCommand.h @@ -77,7 +77,7 @@ class UBeamCliServicesDeployRemoteProgressStreamData : public UObject, public IB /** Description: - Deploys services remotely to the current realm + [INTERNAL] Deploys services remotely to the current realm Usage: Beamable.Tools services deploy [options] @@ -103,6 +103,7 @@ class UBeamCliServicesDeployRemoteProgressStreamData : public UObject, public IB --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -129,7 +130,7 @@ class UBeamCliServicesDeployCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnRemoteProgressStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.cpp new file mode 100644 index 00000000..90996bdd --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliServicesDockerStartCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliServicesDockerStartCommand::GetCommand() +{ + return FString(TEXT("services docker start")); +} + +bool UBeamCliServicesDockerStartCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliServicesDockerStartStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliServicesDockerStartCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.h new file mode 100644 index 00000000..b34a7aa7 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStartCommand.h @@ -0,0 +1,104 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliServicesDockerStartCommand.generated.h" + + +UCLASS() +class UBeamCliServicesDockerStartStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool Attempted = {}; + UPROPERTY() + bool AlreadyRunning = {}; + UPROPERTY() + bool Unavailable = {}; + UPROPERTY() + FString DockerDesktopUrl = {}; + UPROPERTY() + FString DownloadUrl = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("attempted"), Attempted); + Serializer->WriteValue(TEXT("alreadyRunning"), AlreadyRunning); + Serializer->WriteValue(TEXT("unavailable"), Unavailable); + Serializer->WriteValue(TEXT("dockerDesktopUrl"), DockerDesktopUrl); + Serializer->WriteValue(TEXT("downloadUrl"), DownloadUrl); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("attempted"), Attempted); + Serializer->WriteValue(TEXT("alreadyRunning"), AlreadyRunning); + Serializer->WriteValue(TEXT("unavailable"), Unavailable); + Serializer->WriteValue(TEXT("dockerDesktopUrl"), DockerDesktopUrl); + Serializer->WriteValue(TEXT("downloadUrl"), DownloadUrl); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Attempted = Bag->GetBoolField(TEXT("attempted")); + AlreadyRunning = Bag->GetBoolField(TEXT("alreadyRunning")); + Unavailable = Bag->GetBoolField(TEXT("unavailable")); + DockerDesktopUrl = Bag->GetStringField(TEXT("dockerDesktopUrl")); + DownloadUrl = Bag->GetStringField(TEXT("downloadUrl")); + } +}; + + +/** + Description: + Start the docker daemon + +Usage: + Beamable.Tools services docker start [options] + +Options: + -l, --links-only Only return the links to download docker, but do not start + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliServicesDockerStartCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.cpp new file mode 100644 index 00000000..1a3c3584 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliServicesDockerStatusCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliServicesDockerStatusCommand::GetCommand() +{ + return FString(TEXT("services docker status")); +} + +bool UBeamCliServicesDockerStatusCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliServicesDockerStatusStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliServicesDockerStatusCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.h new file mode 100644 index 00000000..23dc5160 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesDockerStatusCommand.h @@ -0,0 +1,94 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliServicesDockerStatusCommand.generated.h" + + +UCLASS() +class UBeamCliServicesDockerStatusStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool IsDaemonRunning = {}; + UPROPERTY() + bool IsCliAccessible = {}; + UPROPERTY() + FString CliLocation = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("isDaemonRunning"), IsDaemonRunning); + Serializer->WriteValue(TEXT("isCliAccessible"), IsCliAccessible); + Serializer->WriteValue(TEXT("cliLocation"), CliLocation); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("isDaemonRunning"), IsDaemonRunning); + Serializer->WriteValue(TEXT("isCliAccessible"), IsCliAccessible); + Serializer->WriteValue(TEXT("cliLocation"), CliLocation); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + IsDaemonRunning = Bag->GetBoolField(TEXT("isDaemonRunning")); + IsCliAccessible = Bag->GetBoolField(TEXT("isCliAccessible")); + CliLocation = Bag->GetStringField(TEXT("cliLocation")); + } +}; + + +/** + Description: + Check if docker is running and available to the CLI + +Usage: + Beamable.Tools services docker status [options] + +Options: + -w, --watch Emit a stream of updates as docker changes + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliServicesDockerStatusCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.cpp new file mode 100644 index 00000000..2dcb67ad --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliServicesGetConnectionStringCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliServicesGetConnectionStringCommand::GetCommand() +{ + return FString(TEXT("services get-connection-string")); +} + +bool UBeamCliServicesGetConnectionStringCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliServicesGetConnectionStringStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliServicesGetConnectionStringCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.h new file mode 100644 index 00000000..b715f20c --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesGetConnectionStringCommand.h @@ -0,0 +1,89 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliServicesGetConnectionStringCommand.generated.h" + + +UCLASS() +class UBeamCliServicesGetConnectionStringStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString ConnectionString = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("connectionString"), ConnectionString); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("connectionString"), ConnectionString); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + ConnectionString = Bag->GetStringField(TEXT("connectionString")); + } +}; + + +/** + Description: + Gets the Microstorage connection string + +Usage: + Beamable.Tools services get-connection-string [options] + +Arguments: + The name of the Microstorage + +Options: + -r, --remote The Microstorage remote connection string + -q, --quiet Ignores confirmation step + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + + */ +UCLASS() +class UBeamCliServicesGetConnectionStringCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.cpp index 3a177bf6..041e522a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesManifestsCommand::GetCommand() return FString(TEXT("services manifests")); } -void UBeamCliServicesManifestsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesManifestsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesManifestsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesManifestsCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesManifestsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.h index 3967650d..50614c90 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesManifestsCommand.h @@ -45,27 +45,28 @@ class UBeamCliServicesManifestsStreamData : public UObject, public IBeamJsonSeri Beamable.Tools services manifests [options] Options: - --limit Limits amount of manifests - --skip Skip specified amount of manifests - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --limit Limits amount of manifests + --skip Skip specified amount of manifests + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliServicesManifestsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.cpp index bf190d8f..5a135475 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesPromoteCommand::GetCommand() return FString(TEXT("services promote")); } -void UBeamCliServicesPromoteCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesPromoteCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesPromoteStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesPromoteCommand::HandleStreamReceived(FBeamOperationHandle O AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesPromoteCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.h index d8740c61..805f5fc1 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPromoteCommand.h @@ -41,27 +41,28 @@ class UBeamCliServicesPromoteStreamData : public UObject, public IBeamJsonSerial Beamable.Tools services promote [options] Options: - --source-pid The PID for the realm from which you wish to pull the manifest from. - The current realm you are signed into will be updated to match the manifest in the given realm - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --source-pid The PID for the realm from which you wish to pull the manifest from. + The current realm you are signed into will be updated to match the manifest in the given realm + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -78,7 +79,7 @@ class UBeamCliServicesPromoteCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.cpp index f80552d7..263dfd0e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesPsCommand::GetCommand() return FString(TEXT("services ps")); } -void UBeamCliServicesPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesPsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesPsCommand::HandleStreamReceived(FBeamOperationHandle Op, FS AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesPsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.h index fa1701e0..bb351049 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesPsCommand.h @@ -116,26 +116,27 @@ class UBeamCliServicesPsStreamData : public UObject, public IBeamJsonSerializabl Beamable.Tools services ps [options] Options: - --json Outputs as json instead of summary table - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --json Outputs as json instead of summary table + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -152,7 +153,7 @@ class UBeamCliServicesPsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.cpp index 1ecece0f..a5fc9390 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesRegistryCommand::GetCommand() return FString(TEXT("services registry")); } -void UBeamCliServicesRegistryCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesRegistryCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesRegistryStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesRegistryCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesRegistryCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.h index 923c1bbc..ae812d7a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRegistryCommand.h @@ -41,25 +41,26 @@ class UBeamCliServicesRegistryStreamData : public UObject, public IBeamJsonSeria Beamable.Tools services registry [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -76,7 +77,7 @@ class UBeamCliServicesRegistryCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.cpp index 5fd4ef17..8736b057 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesResetContainerCommand::GetCommand() return FString(TEXT("services reset container")); } -void UBeamCliServicesResetContainerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesResetContainerCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesResetContainerStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesResetContainerCommand::HandleStreamReceived(FBeamOperationH AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesResetContainerCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.h index 2a4e39be..013efebe 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetContainerCommand.h @@ -46,26 +46,27 @@ class UBeamCliServicesResetContainerStreamData : public UObject, public IBeamJso Beamable.Tools services reset container [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliServicesResetContainerCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.cpp index 2ad64b01..916bf9d5 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesResetImageCommand::GetCommand() return FString(TEXT("services reset image")); } -void UBeamCliServicesResetImageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesResetImageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesResetImageStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesResetImageCommand::HandleStreamReceived(FBeamOperationHandl AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesResetImageCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.h index bab961c5..c7646f86 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesResetImageCommand.h @@ -46,26 +46,27 @@ class UBeamCliServicesResetImageStreamData : public UObject, public IBeamJsonSer Beamable.Tools services reset image [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliServicesResetImageCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.cpp index d60ce373..497a79f8 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesRunCommand::GetCommand() return FString(TEXT("services run")); } -void UBeamCliServicesRunCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesRunCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesRunStreamData* Data = NewObject(this); @@ -22,9 +23,12 @@ void UBeamCliServicesRunCommand::HandleStreamReceived(FBeamOperationHandle Op, F AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeLocalProgress) && OnLocalProgressStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeLocalProgress) && OnLocalProgressStreamOutput) { UBeamCliServicesRunLocalProgressStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -36,8 +40,12 @@ if(ReceivedStreamType.Equals(StreamTypeLocalProgress) && OnLocalProgressStreamOu AsyncTask(ENamedThreads::GameThread, [this, Op] { OnLocalProgressStreamOutput(LocalProgressStream, LocalProgressTimestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesRunCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.h index 75d62600..4aa37a3c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesRunCommand.h @@ -78,28 +78,29 @@ class UBeamCliServicesRunLocalProgressStreamData : public UObject, public IBeamJ Beamable.Tools services run [options] Options: - --ids The ids for the services you wish to deploy. Ignoring this option deploys all services - -fcpu, --force-amd-cpu-arch Force the services to run with amd64 CPU architecture, useful when deploying from computers with ARM architecture [default: False] - -k, --keep-containers Automatically remove service containers after they exit [default: False] - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The ids for the services you wish to deploy. Ignoring this option deploys all services + -fcpu, --force-amd-cpu-arch Force the services to run with amd64 CPU architecture, useful when deploying from computers with ARM architecture [default: False] + -k, --keep-containers Automatically remove service containers after they exit [default: False] + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -121,7 +122,7 @@ class UBeamCliServicesRunCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnLocalProgressStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.cpp index 6b0be1a0..8b0cfc7b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesServiceLogsCommand::GetCommand() return FString(TEXT("services service-logs")); } -void UBeamCliServicesServiceLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesServiceLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesServiceLogsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesServiceLogsCommand::HandleStreamReceived(FBeamOperationHand AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesServiceLogsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.h index 090d8560..3249f02c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceLogsCommand.h @@ -56,26 +56,27 @@ class UBeamCliServicesServiceLogsStreamData : public UObject, public IBeamJsonSe Beamable.Tools services service-logs [options] Options: - --id The Unique Id for this service within this Beamable CLI context - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --id The Unique Id for this service within this Beamable CLI context + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -92,7 +93,7 @@ class UBeamCliServicesServiceLogsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.cpp index 9bad4eaa..0f515dea 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesServiceMetricsCommand::GetCommand() return FString(TEXT("services service-metrics")); } -void UBeamCliServicesServiceMetricsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesServiceMetricsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesServiceMetricsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesServiceMetricsCommand::HandleStreamReceived(FBeamOperationH AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesServiceMetricsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.h index bd6c9dca..ecf951bd 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesServiceMetricsCommand.h @@ -56,27 +56,28 @@ class UBeamCliServicesServiceMetricsStreamData : public UObject, public IBeamJso Beamable.Tools services service-metrics [options] Options: - --id The Unique Id for this service within this Beamable CLI context - --metric Set to 'cpu' or 'memory' - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --id The Unique Id for this service within this Beamable CLI context + --metric Set to 'cpu' or 'memory' + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -93,7 +94,7 @@ class UBeamCliServicesServiceMetricsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.cpp index 2b372272..ccddba23 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliServicesStopCommand::GetCommand() return FString(TEXT("services stop")); } -void UBeamCliServicesStopCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesStopCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliServicesStopCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.h index c0743c8c..6aff5dca 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesStopCommand.h @@ -15,26 +15,27 @@ Beamable.Tools services stop [options] Options: - --ids The list of services to include, defaults to all local services (separated by whitespace) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --ids The list of services to include, defaults to all local services (separated by whitespace) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -48,7 +49,7 @@ class UBeamCliServicesStopCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.cpp index 30311f06..0c84cf6b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesTemplatesCommand::GetCommand() return FString(TEXT("services templates")); } -void UBeamCliServicesTemplatesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesTemplatesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesTemplatesStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesTemplatesCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesTemplatesCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.h index d775bcce..c949a0d7 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesTemplatesCommand.h @@ -41,25 +41,26 @@ class UBeamCliServicesTemplatesStreamData : public UObject, public IBeamJsonSeri Beamable.Tools services templates [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -76,7 +77,7 @@ class UBeamCliServicesTemplatesCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.cpp index 6c1c0822..d8d141a4 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliServicesUpdateDockerfileCommand::GetCommand() return FString(TEXT("services update-dockerfile")); } -void UBeamCliServicesUpdateDockerfileCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesUpdateDockerfileCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliServicesUpdateDockerfileCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.h index 67a2deb9..4a71b3a2 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUpdateDockerfileCommand.h @@ -18,25 +18,26 @@ The name of the microservice to udpate the Dockerfile Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -51,7 +52,7 @@ class UBeamCliServicesUpdateDockerfileCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.cpp index f37b7360..606baa68 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliServicesUploadApiCommand::GetCommand() return FString(TEXT("services upload-api")); } -void UBeamCliServicesUploadApiCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliServicesUploadApiCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliServicesUploadApiStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliServicesUploadApiCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliServicesUploadApiCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.h index c7b3e348..6fb20d0c 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliServicesUploadApiCommand.h @@ -41,25 +41,26 @@ class UBeamCliServicesUploadApiStreamData : public UObject, public IBeamJsonSeri Beamable.Tools services upload-api [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -76,7 +77,7 @@ class UBeamCliServicesUploadApiCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.cpp index 42668fcb..f5768a48 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliTempClearLogsCommand::GetCommand() return FString(TEXT("temp clear logs")); } -void UBeamCliTempClearLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliTempClearLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliTempClearLogsStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliTempClearLogsCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliTempClearLogsCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.h index 84be7204..fb6f26e2 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTempClearLogsCommand.h @@ -46,31 +46,32 @@ class UBeamCliTempClearLogsStreamData : public UObject, public IBeamJsonSerializ Beamable.Tools temp clear logs [options] Options: - -ot, --older-than Only clear logs older than a given value. This string should be in a duration format. + -ot, --older-than Only clear logs older than a given value. This string should be in a duration format. - The duration format should be a number, followed by a time unit. Valid time units include seconds (s), minutes (m), hours (h), days (d), and months(mo). Please note that the month unit is short-hand for 30 days. Here are a few examples, - --older-than 30m (30 minutes) - --older-than 18mo (18 months) - --older-than 12d (12 days) - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + The duration format should be a number, followed by a time unit. Valid time units include seconds (s), minutes (m), hours (h), days (d), and months(mo). Please note that the month unit is short-hand for 30 days. Here are a few examples, + --older-than 30m (30 minutes) + --older-than 18mo (18 months) + --older-than 12d (12 days) + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -87,7 +88,7 @@ class UBeamCliTempClearLogsCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.cpp index 66fc1d76..d64a0809 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliTokenFromRefreshCommand::GetCommand() return FString(TEXT("token from-refresh")); } -void UBeamCliTokenFromRefreshCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliTokenFromRefreshCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliTokenFromRefreshStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliTokenFromRefreshCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliTokenFromRefreshCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.h index fc49524e..7d635152 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenFromRefreshCommand.h @@ -66,26 +66,27 @@ class UBeamCliTokenFromRefreshStreamData : public UObject, public IBeamJsonSeria Beamable.Tools token from-refresh [options] Options: - -t, --token The token that you want to get information for. This must be a refresh token. By default, the current refresh token of the .beamable context is used - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -t, --token The token that you want to get information for. This must be a refresh token. By default, the current refresh token of the .beamable context is used + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -102,7 +103,7 @@ class UBeamCliTokenFromRefreshCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.cpp index c25c5886..b2f7e26a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliTokenInspectCommand::GetCommand() return FString(TEXT("token inspect")); } -void UBeamCliTokenInspectCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliTokenInspectCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliTokenInspectStreamData* Data = NewObject(this); @@ -22,9 +23,12 @@ void UBeamCliTokenInspectCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } -if(ReceivedStreamType.Equals(StreamTypeErrorInvalidTokenErrorOutput) && OnErrorInvalidTokenErrorOutputStreamOutput) + + if(ReceivedStreamType.Equals(StreamTypeErrorInvalidTokenErrorOutput) && OnErrorInvalidTokenErrorOutputStreamOutput) { UBeamCliTokenInspectErrorInvalidTokenErrorOutputStreamData* Data = NewObject(this); Data->OuterOwner = this; @@ -36,8 +40,12 @@ if(ReceivedStreamType.Equals(StreamTypeErrorInvalidTokenErrorOutput) && OnErrorI AsyncTask(ENamedThreads::GameThread, [this, Op] { OnErrorInvalidTokenErrorOutputStreamOutput(ErrorInvalidTokenErrorOutputStream, ErrorInvalidTokenErrorOutputTimestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliTokenInspectCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.h index 44b67e79..cb357ea5 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenInspectCommand.h @@ -158,27 +158,28 @@ class UBeamCliTokenInspectErrorInvalidTokenErrorOutputStreamData : public UObjec Beamable.Tools token inspect [options] Options: - -r, --resolve This command normally only works for an access token. However, if this option is enabled and a refresh token is given, then it will be automatically converted to the access token and this command is rerun [default: False] - -t, --token The token that you want to get information for. This must be an access token. By default, the current access token of the .beamable context is used - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + -r, --resolve This command normally only works for an access token. However, if this option is enabled and a refresh token is given, then it will be automatically converted to the access token and this command is rerun [default: False] + -t, --token The token that you want to get information for. This must be an access token. By default, the current access token of the .beamable context is used + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -200,7 +201,7 @@ class UBeamCliTokenInspectCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnErrorInvalidTokenErrorOutputStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.cpp index 17cd0748..e7ec33b7 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliTokenListCommand::GetCommand() return FString(TEXT("token list")); } -void UBeamCliTokenListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliTokenListCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliTokenListStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliTokenListCommand::HandleStreamReceived(FBeamOperationHandle Op, FSt AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliTokenListCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.h index 39e4655f..46560cae 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenListCommand.h @@ -65,6 +65,7 @@ class UBeamCliTokenListStreamData : public UObject, public IBeamJsonSerializable --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. Currently, a docker path has been automatically identified. [default: docker] --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. --dir Directory to use for configuration --raw Output raw JSON to standard out. This happens by default when the command is being piped --pretty Output syntax highlighted box text. This happens by default when the command is not piped @@ -86,7 +87,7 @@ class UBeamCliTokenListCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.cpp index 9bb86e28..846ffb4b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliTokenNewGuestCommand::GetCommand() return FString(TEXT("token new-guest")); } -void UBeamCliTokenNewGuestCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliTokenNewGuestCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliTokenNewGuestStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliTokenNewGuestCommand::HandleStreamReceived(FBeamOperationHandle Op, AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliTokenNewGuestCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.h index 0dbd2fdd..6acde04d 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliTokenNewGuestCommand.h @@ -66,25 +66,26 @@ class UBeamCliTokenNewGuestStreamData : public UObject, public IBeamJsonSerializ Beamable.Tools token new-guest [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -101,7 +102,7 @@ class UBeamCliTokenNewGuestCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.cpp index 965fe493..953b160b 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliUnityCopyDotnetSrcCommand::GetCommand() return FString(TEXT("unity copy-dotnet-src")); } -void UBeamCliUnityCopyDotnetSrcCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityCopyDotnetSrcCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliUnityCopyDotnetSrcStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliUnityCopyDotnetSrcCommand::HandleStreamReceived(FBeamOperationHandl AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliUnityCopyDotnetSrcCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.h index 6c06ba4e..812c267a 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityCopyDotnetSrcCommand.h @@ -45,25 +45,26 @@ class UBeamCliUnityCopyDotnetSrcStreamData : public UObject, public IBeamJsonSer relative path to Unity destination for src files Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -81,7 +82,7 @@ class UBeamCliUnityCopyDotnetSrcCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.cpp index 38f09f4d..3fcfd0cb 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliUnityDownloadAllNugetPackagesCommand::GetCommand() return FString(TEXT("unity download-all-nuget-packages")); } -void UBeamCliUnityDownloadAllNugetPackagesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityDownloadAllNugetPackagesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliUnityDownloadAllNugetPackagesStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliUnityDownloadAllNugetPackagesCommand::HandleStreamReceived(FBeamOpe AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliUnityDownloadAllNugetPackagesCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.h index 5250813c..b2db8935 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadAllNugetPackagesCommand.h @@ -43,25 +43,26 @@ class UBeamCliUnityDownloadAllNugetPackagesStreamData : public UObject, public I the path to the Unity project Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -79,7 +80,7 @@ class UBeamCliUnityDownloadAllNugetPackagesCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.cpp index bd506f3c..a2205b45 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliUnityDownloadNugetPackageCommand::GetCommand() return FString(TEXT("unity download-nuget-package")); } -void UBeamCliUnityDownloadNugetPackageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityDownloadNugetPackageCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliUnityDownloadNugetPackageStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliUnityDownloadNugetPackageCommand::HandleStreamReceived(FBeamOperati AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliUnityDownloadNugetPackageCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.h index 170c95f9..521277ab 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityDownloadNugetPackageCommand.h @@ -46,25 +46,26 @@ class UBeamCliUnityDownloadNugetPackageStreamData : public UObject, public IBeam the target location to place the copied files Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -82,7 +83,7 @@ class UBeamCliUnityDownloadNugetPackageCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.cpp index 06b56526..b70eb9dd 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliUnityGetVersionInfoCommand::GetCommand() return FString(TEXT("unity get-version-info")); } -void UBeamCliUnityGetVersionInfoCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityGetVersionInfoCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliUnityGetVersionInfoStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliUnityGetVersionInfoCommand::HandleStreamReceived(FBeamOperationHand AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliUnityGetVersionInfoCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.h index 3ad7ed5b..49eb9fc1 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityGetVersionInfoCommand.h @@ -54,25 +54,26 @@ class UBeamCliUnityGetVersionInfoStreamData : public UObject, public IBeamJsonSe the path to the root of the unity project Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -90,7 +91,7 @@ class UBeamCliUnityGetVersionInfoCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.cpp new file mode 100644 index 00000000..51b1db73 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliUnityManifestCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliUnityManifestCommand::GetCommand() +{ + return FString(TEXT("unity manifest")); +} + +bool UBeamCliUnityManifestCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliUnityManifestStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliUnityManifestCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.h new file mode 100644 index 00000000..da8de59a --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityManifestCommand.h @@ -0,0 +1,106 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestServiceEntryStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ManifestStorageEntryStreamData.h" +#include "BeamCliUnityManifestCommand.generated.h" + + +UCLASS() +class UBeamCliUnityManifestStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString LocalRoutingKey = {}; + UPROPERTY() + TArray Services = {}; + UPROPERTY() + TArray Storages = {}; + UPROPERTY() + TArray ExistingFederationIds = {}; + UPROPERTY() + TArray AvailableFederationTypes = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("localRoutingKey"), LocalRoutingKey); + UBeamJsonUtils::SerializeArray(TEXT("services"), Services, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("storages"), Storages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("existingFederationIds"), ExistingFederationIds, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("availableFederationTypes"), AvailableFederationTypes, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("localRoutingKey"), LocalRoutingKey); + UBeamJsonUtils::SerializeArray(TEXT("services"), Services, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("storages"), Storages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("existingFederationIds"), ExistingFederationIds, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("availableFederationTypes"), AvailableFederationTypes, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + LocalRoutingKey = Bag->GetStringField(TEXT("localRoutingKey")); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("services")), Services, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("storages")), Storages, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("existingFederationIds")), ExistingFederationIds, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("availableFederationTypes")), AvailableFederationTypes, OuterOwner); + } +}; + + +/** + Description: + Read local file state and show your local manifest information + +Usage: + Beamable.Tools unity manifest [options] + +Options: + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliUnityManifestCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.cpp index 11e67b42..e8db44ab 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliUnityReleaseSharedCodeCommand::GetCommand() return FString(TEXT("unity release-shared-code")); } -void UBeamCliUnityReleaseSharedCodeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityReleaseSharedCodeCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliUnityReleaseSharedCodeStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliUnityReleaseSharedCodeCommand::HandleStreamReceived(FBeamOperationH AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliUnityReleaseSharedCodeCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.h index 07326dcb..6390a864 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityReleaseSharedCodeCommand.h @@ -48,25 +48,26 @@ class UBeamCliUnityReleaseSharedCodeStreamData : public UObject, public IBeamJso relative path to src files Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -84,7 +85,7 @@ class UBeamCliUnityReleaseSharedCodeCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.cpp new file mode 100644 index 00000000..ca0f9c12 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.cpp @@ -0,0 +1,43 @@ +#include "BeamCliUnityRestoreCommand.h" + +#include "BeamLogging.h" +#include "Serialization/JsonSerializerMacros.h" + +FString UBeamCliUnityRestoreCommand::GetCommand() +{ + return FString(TEXT("unity restore")); +} + +bool UBeamCliUnityRestoreCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +{ + + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) + { + UBeamCliUnityRestoreStreamData* Data = NewObject(this); + Data->OuterOwner = this; + Data->BeamDeserializeProperties(DataJson); + + Stream.Add(Data); + Timestamps.Add(Timestamp); + + AsyncTask(ENamedThreads::GameThread, [this, Op] + { + OnStreamOutput(Stream, Timestamps, Op); + }); + + return true; + } + + return false; +} + +void UBeamCliUnityRestoreCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) +{ + if (OnCompleted) + { + AsyncTask(ENamedThreads::GameThread, [this, ResultCode, Op] + { + OnCompleted(ResultCode, Op); + }); + } +} diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.h new file mode 100644 index 00000000..31869865 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityRestoreCommand.h @@ -0,0 +1,83 @@ +#pragma once + +#include "Subsystems/CLI/BeamCliCommand.h" +#include "Serialization/BeamJsonUtils.h" + +#include "BeamCliUnityRestoreCommand.generated.h" + + +UCLASS() +class UBeamCliUnityRestoreStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + + } +}; + + +/** + Description: + Restore a dotnet project + +Usage: + Beamable.Tools unity restore [options] + +Options: + --csproj The path to the dotnet csproj path + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information + + + + */ +UCLASS() +class UBeamCliUnityRestoreCommand : public UBeamCliCommand +{ + GENERATED_BODY() + +public: + inline static FString StreamType = FString(TEXT("stream")); + UPROPERTY() TArray Stream; + UPROPERTY() TArray Timestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; + + TFunction OnCompleted; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; + virtual FString GetCommand() override; +}; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.cpp index 45ac7738..91e2c37e 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.cpp @@ -8,9 +8,11 @@ FString UBeamCliUnityUpdateReferencesCommand::GetCommand() return FString(TEXT("unity update-references")); } -void UBeamCliUnityUpdateReferencesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliUnityUpdateReferencesCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + + return false; } void UBeamCliUnityUpdateReferencesCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.h index e4183c35..2c003d42 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliUnityUpdateReferencesCommand.h @@ -18,27 +18,28 @@ The name of the service to update the references Options: - --paths The path of the project that will be referenced - --names The name of the Assembly Definition - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --paths The path of the project that will be referenced + --names The name of the Assembly Definition + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -53,7 +54,7 @@ class UBeamCliUnityUpdateReferencesCommand : public UBeamCliCommand TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.cpp index 7ea8f345..96efe39f 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliVersionCommand::GetCommand() return FString(TEXT("version")); } -void UBeamCliVersionCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliVersionCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliVersionStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliVersionCommand::HandleStreamReceived(FBeamOperationHandle Op, FStri AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliVersionCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.h index bb418961..000675a6 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionCommand.h @@ -56,25 +56,26 @@ class UBeamCliVersionStreamData : public UObject, public IBeamJsonSerializableUO Beamable.Tools version [command] [options] Options: - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information Commands: install, update Install a different version of the CLI [default: latest] @@ -95,7 +96,7 @@ class UBeamCliVersionCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.cpp b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.cpp index d3566919..392bef88 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.cpp +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.cpp @@ -8,8 +8,9 @@ FString UBeamCliVersionConstructCommand::GetCommand() return FString(TEXT("version construct")); } -void UBeamCliVersionConstructCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) +bool UBeamCliVersionConstructCommand::HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) { + if(ReceivedStreamType.Equals(StreamType) && OnStreamOutput) { UBeamCliVersionConstructStreamData* Data = NewObject(this); @@ -22,8 +23,12 @@ void UBeamCliVersionConstructCommand::HandleStreamReceived(FBeamOperationHandle AsyncTask(ENamedThreads::GameThread, [this, Op] { OnStreamOutput(Stream, Timestamps, Op); - }); + }); + + return true; } + + return false; } void UBeamCliVersionConstructCommand::HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.h index d6df1b8d..9592819d 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/BeamCliVersionConstructCommand.h @@ -61,30 +61,31 @@ class UBeamCliVersionConstructStreamData : public UObject, public IBeamJsonSeria The patch semantic version number Options: - --validate When true, the command will return a non zero exit code if the specified version already exists on Nuget - --nightly Sets the version string to a nightly version number, and will include the date string automatically - --rc Sets the version string to a release candidate version number - --exp Sets the version string to an experimental version number - --prod Sets the version string to a production version number - --dryrun Should any networking happen? - --cid Cid to use; will default to whatever is in the file system - --pid Pid to use; will default to whatever is in the file system - -q, --quiet When true, skip input waiting and use defaults [default: False] - --host The host endpoint for beamable - --access-token The access token to use for the requests - --refresh-token Refresh token to use for the requests - --log, --logs Extra logs gets printed out - --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. - --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. - --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] - --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. - Currently, a docker path has been automatically identified. [default: docker] - --emit-log-streams Out all log messages as data payloads in addition to however they are logged - --dir Directory to use for configuration - --raw Output raw JSON to standard out. This happens by default when the command is being piped - --pretty Output syntax highlighted box text. This happens by default when the command is not piped - --dotnet-path a custom location for dotnet [default: dotnet] - -?, -h, --help Show help and usage information + --validate When true, the command will return a non zero exit code if the specified version already exists on Nuget + --nightly Sets the version string to a nightly version number, and will include the date string automatically + --rc Sets the version string to a release candidate version number + --exp Sets the version string to an experimental version number + --prod Sets the version string to a production version number + --dryrun Should any networking happen? + --cid Cid to use; will default to whatever is in the file system + --pid Pid to use; will default to whatever is in the file system + -q, --quiet When true, skip input waiting and use defaults [default: False] + --host The host endpoint for beamable + --access-token The access token to use for the requests + --refresh-token Refresh token to use for the requests + --log, --logs Extra logs gets printed out + --no-redirect If there is a local dotnet tool installation (with a ./config/dotnet-tools.json file) for the beam tool, then any global invocation of the beam tool will automatically redirect and call the local version. However, there will be a performance penalty due to the extra process invocation. This option flag will cause an error to occur instead of automatically redirecting the execution to a new process invocation. + --unmask-logs By default, logs will automatically mask tokens. However, when this option is enabled, tokens will be visible in their full text. This is a security risk. + --no-log-file By default, logs are automatically written to a temp file so that they can be used in an error case. However, when this option is enabled, logs are not written. Also, if the BEAM_CLI_NO_FILE_LOG environment variable is set, no log file will be written. [default: False] + --docker-cli-path a custom location for docker. By default, the CLI will attempt to resolve docker through its usual install locations. You can also use the BEAM_DOCKER_EXE environment variable to specify. + Currently, a docker path has been automatically identified. [default: docker] + --emit-log-streams Out all log messages as data payloads in addition to however they are logged + --add-project-path additional file paths to be included when building a local project manifest. + --dir Directory to use for configuration + --raw Output raw JSON to standard out. This happens by default when the command is being piped + --pretty Output syntax highlighted box text. This happens by default when the command is not piped + --dotnet-path a custom location for dotnet [default: dotnet] + -?, -h, --help Show help and usage information @@ -102,7 +103,7 @@ class UBeamCliVersionConstructCommand : public UBeamCliCommand TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnStreamOutput; TFunction OnCompleted; - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer) override; virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer) override; virtual FString GetCommand() override; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h new file mode 100644 index 00000000..8516dd52 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeployablePlanStreamData.h @@ -0,0 +1,78 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "DeployablePlanStreamData.generated.h" + + +UCLASS() +class UDeployablePlanStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString BuiltFromRemoteChecksum = {}; + UPROPERTY() + FString Mode = {}; + UPROPERTY() + UManifestViewStreamData* Manifest = {}; + UPROPERTY() + UDeploymentDiffSummaryStreamData* Diff = {}; + UPROPERTY() + TArray ServicesToUpload = {}; + UPROPERTY() + bool RanHealthChecks = {}; + UPROPERTY() + int32 ChangeCount = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("builtFromRemoteChecksum"), BuiltFromRemoteChecksum); + Serializer->WriteValue(TEXT("mode"), Mode); + UBeamJsonUtils::SerializeUObject("manifest", Manifest, Serializer); + UBeamJsonUtils::SerializeUObject("diff", Diff, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("servicesToUpload"), ServicesToUpload, Serializer); + Serializer->WriteValue(TEXT("ranHealthChecks"), RanHealthChecks); + Serializer->WriteValue(TEXT("changeCount"), ChangeCount); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("builtFromRemoteChecksum"), BuiltFromRemoteChecksum); + Serializer->WriteValue(TEXT("mode"), Mode); + UBeamJsonUtils::SerializeUObject("manifest", Manifest, Serializer); + UBeamJsonUtils::SerializeUObject("diff", Diff, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("servicesToUpload"), ServicesToUpload, Serializer); + Serializer->WriteValue(TEXT("ranHealthChecks"), RanHealthChecks); + Serializer->WriteValue(TEXT("changeCount"), ChangeCount); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + BuiltFromRemoteChecksum = Bag->GetStringField(TEXT("builtFromRemoteChecksum")); + Mode = Bag->GetStringField(TEXT("mode")); + UBeamJsonUtils::DeserializeUObject("manifest", Bag, Manifest, OuterOwner); + UBeamJsonUtils::DeserializeUObject("diff", Bag, Diff, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("servicesToUpload")), ServicesToUpload, OuterOwner); + RanHealthChecks = Bag->GetBoolField(TEXT("ranHealthChecks")); + ChangeCount = Bag->GetIntegerField(TEXT("changeCount")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h new file mode 100644 index 00000000..d15aefc6 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentDiffSummaryStreamData.h @@ -0,0 +1,92 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "DeploymentDiffSummaryStreamData.generated.h" + + +UCLASS() +class UDeploymentDiffSummaryStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray JsonChanges = {}; + UPROPERTY() + TArray AddedServices = {}; + UPROPERTY() + TArray RemovedServices = {}; + UPROPERTY() + TArray DisabledServices = {}; + UPROPERTY() + TArray EnabledServices = {}; + UPROPERTY() + TArray AddedStorage = {}; + UPROPERTY() + TArray RemovedStorage = {}; + UPROPERTY() + TArray DisabledStorages = {}; + UPROPERTY() + TArray EnabledStorages = {}; + UPROPERTY() + TArray AddedFederations = {}; + UPROPERTY() + TArray RemovedFederations = {}; + UPROPERTY() + TArray ServiceImageIdChanges = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("jsonChanges"), JsonChanges, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedServices"), AddedServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedServices"), RemovedServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("disabledServices"), DisabledServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("enabledServices"), EnabledServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedStorage"), AddedStorage, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedStorage"), RemovedStorage, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("disabledStorages"), DisabledStorages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("enabledStorages"), EnabledStorages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedFederations"), AddedFederations, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedFederations"), RemovedFederations, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("serviceImageIdChanges"), ServiceImageIdChanges, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("jsonChanges"), JsonChanges, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedServices"), AddedServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedServices"), RemovedServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("disabledServices"), DisabledServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("enabledServices"), EnabledServices, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedStorage"), AddedStorage, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedStorage"), RemovedStorage, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("disabledStorages"), DisabledStorages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("enabledStorages"), EnabledStorages, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("addedFederations"), AddedFederations, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("removedFederations"), RemovedFederations, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("serviceImageIdChanges"), ServiceImageIdChanges, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("jsonChanges")), JsonChanges, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("addedServices")), AddedServices, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("removedServices")), RemovedServices, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("disabledServices")), DisabledServices, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("enabledServices")), EnabledServices, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("addedStorage")), AddedStorage, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("removedStorage")), RemovedStorage, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("disabledStorages")), DisabledStorages, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("enabledStorages")), EnabledStorages, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("addedFederations")), AddedFederations, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("removedFederations")), RemovedFederations, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("serviceImageIdChanges")), ServiceImageIdChanges, OuterOwner); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h new file mode 100644 index 00000000..30b5ed9a --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/DeploymentManifestJsonDiffStreamData.h @@ -0,0 +1,50 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "DeploymentManifestJsonDiffStreamData.generated.h" + + +UCLASS() +class UDeploymentManifestJsonDiffStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString JsonPath = {}; + UPROPERTY() + FString Type = {}; + UPROPERTY() + FString CurrentValue = {}; + UPROPERTY() + FString NextValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("jsonPath"), JsonPath); + Serializer->WriteValue(TEXT("type"), Type); + Serializer->WriteValue(TEXT("currentValue"), CurrentValue); + Serializer->WriteValue(TEXT("nextValue"), NextValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("jsonPath"), JsonPath); + Serializer->WriteValue(TEXT("type"), Type); + Serializer->WriteValue(TEXT("currentValue"), CurrentValue); + Serializer->WriteValue(TEXT("nextValue"), NextValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + JsonPath = Bag->GetStringField(TEXT("jsonPath")); + Type = Bag->GetStringField(TEXT("type")); + CurrentValue = Bag->GetStringField(TEXT("currentValue")); + NextValue = Bag->GetStringField(TEXT("nextValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h new file mode 100644 index 00000000..d6372d2a --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "FederationEntryStreamData.generated.h" + + +UCLASS() +class UFederationEntryStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString InterfaceName = {}; + UPROPERTY() + FString FederationId = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("interfaceName"), InterfaceName); + Serializer->WriteValue(TEXT("federationId"), FederationId); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("interfaceName"), InterfaceName); + Serializer->WriteValue(TEXT("federationId"), FederationId); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + InterfaceName = Bag->GetStringField(TEXT("interfaceName")); + FederationId = Bag->GetStringField(TEXT("federationId")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationInstanceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationInstanceStreamData.h index ccc89189..2faf1942 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationInstanceStreamData.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/FederationInstanceStreamData.h @@ -17,23 +17,28 @@ class UFederationInstanceStreamData : public UObject, public IBeamJsonSerializab FString FederationId = {}; UPROPERTY() TArray FederationTypes = {}; + UPROPERTY() + TArray LocalSettings = {}; virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override { Serializer->WriteValue(TEXT("FederationId"), FederationId); - UBeamJsonUtils::SerializeArray(TEXT("FederationTypes"), FederationTypes, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("FederationTypes"), FederationTypes, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("LocalSettings"), LocalSettings, Serializer); } virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override { Serializer->WriteValue(TEXT("FederationId"), FederationId); - UBeamJsonUtils::SerializeArray(TEXT("FederationTypes"), FederationTypes, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("FederationTypes"), FederationTypes, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("LocalSettings"), LocalSettings, Serializer); } virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override { FederationId = Bag->GetStringField(TEXT("FederationId")); - UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("FederationTypes")), FederationTypes, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("FederationTypes")), FederationTypes, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("LocalSettings")), LocalSettings, OuterOwner); } }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/GetStatusResponseStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/GetStatusResponseStreamData.h new file mode 100644 index 00000000..a4ee32a1 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/GetStatusResponseStreamData.h @@ -0,0 +1,49 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ServiceStatusStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "GetStatusResponseStreamData.generated.h" + + +UCLASS() +class UGetStatusResponseStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool IsCurrent = {}; + UPROPERTY() + TArray Services = {}; + UPROPERTY() + UOptionalArrayOfServiceStorageStatusStreamData* StorageStatuses = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("isCurrent"), IsCurrent); + UBeamJsonUtils::SerializeArray(TEXT("services"), Services, Serializer); + UBeamJsonUtils::SerializeUObject("storageStatuses", StorageStatuses, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("isCurrent"), IsCurrent); + UBeamJsonUtils::SerializeArray(TEXT("services"), Services, Serializer); + UBeamJsonUtils::SerializeUObject("storageStatuses", StorageStatuses, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + IsCurrent = Bag->GetBoolField(TEXT("isCurrent")); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("services")), Services, OuterOwner); + UBeamJsonUtils::DeserializeUObject("storageStatuses", Bag, StorageStatuses, OuterOwner); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestServiceEntryStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestServiceEntryStreamData.h new file mode 100644 index 00000000..f532ce1b --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestServiceEntryStreamData.h @@ -0,0 +1,66 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/FederationEntryStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "ManifestServiceEntryStreamData.generated.h" + + +UCLASS() +class UManifestServiceEntryStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString BeamoId = {}; + UPROPERTY() + bool ShouldBeEnabledOnRemote = {}; + UPROPERTY() + FString CsprojPath = {}; + UPROPERTY() + FString BuildDllPath = {}; + UPROPERTY() + TArray StorageDependencies = {}; + UPROPERTY() + TArray UnityReferences = {}; + UPROPERTY() + TArray Federations = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("shouldBeEnabledOnRemote"), ShouldBeEnabledOnRemote); + Serializer->WriteValue(TEXT("csprojPath"), CsprojPath); + Serializer->WriteValue(TEXT("buildDllPath"), BuildDllPath); + UBeamJsonUtils::SerializeArray(TEXT("storageDependencies"), StorageDependencies, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("unityReferences"), UnityReferences, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("federations"), Federations, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("shouldBeEnabledOnRemote"), ShouldBeEnabledOnRemote); + Serializer->WriteValue(TEXT("csprojPath"), CsprojPath); + Serializer->WriteValue(TEXT("buildDllPath"), BuildDllPath); + UBeamJsonUtils::SerializeArray(TEXT("storageDependencies"), StorageDependencies, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("unityReferences"), UnityReferences, Serializer); + UBeamJsonUtils::SerializeArray(TEXT("federations"), Federations, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + BeamoId = Bag->GetStringField(TEXT("beamoId")); + ShouldBeEnabledOnRemote = Bag->GetBoolField(TEXT("shouldBeEnabledOnRemote")); + CsprojPath = Bag->GetStringField(TEXT("csprojPath")); + BuildDllPath = Bag->GetStringField(TEXT("buildDllPath")); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("storageDependencies")), StorageDependencies, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("unityReferences")), UnityReferences, OuterOwner); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("federations")), Federations, OuterOwner); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestStorageEntryStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestStorageEntryStreamData.h new file mode 100644 index 00000000..9c79fd97 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestStorageEntryStreamData.h @@ -0,0 +1,45 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ManifestStorageEntryStreamData.generated.h" + + +UCLASS() +class UManifestStorageEntryStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString BeamoId = {}; + UPROPERTY() + FString CsprojPath = {}; + UPROPERTY() + bool ShouldBeEnabledOnRemote = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("csprojPath"), CsprojPath); + Serializer->WriteValue(TEXT("shouldBeEnabledOnRemote"), ShouldBeEnabledOnRemote); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("beamoId"), BeamoId); + Serializer->WriteValue(TEXT("csprojPath"), CsprojPath); + Serializer->WriteValue(TEXT("shouldBeEnabledOnRemote"), ShouldBeEnabledOnRemote); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + BeamoId = Bag->GetStringField(TEXT("beamoId")); + CsprojPath = Bag->GetStringField(TEXT("csprojPath")); + ShouldBeEnabledOnRemote = Bag->GetBoolField(TEXT("shouldBeEnabledOnRemote")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h new file mode 100644 index 00000000..43f17e2b --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ManifestViewStreamData.h @@ -0,0 +1,73 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "ManifestViewStreamData.generated.h" + + +UCLASS() +class UManifestViewStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Checksum = {}; + UPROPERTY() + UOptionalStringStreamData* Comments = {}; + UPROPERTY() + int64 Created = {}; + UPROPERTY() + UOptionalLongStreamData* CreatedByAccountId = {}; + UPROPERTY() + FString Id = {}; + UPROPERTY() + TArray Manifest = {}; + UPROPERTY() + UOptionalArrayOfServiceStorageReferenceStreamData* StorageReference = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("checksum"), Checksum); + UBeamJsonUtils::SerializeUObject("comments", Comments, Serializer); + Serializer->WriteValue(TEXT("created"), Created); + UBeamJsonUtils::SerializeUObject("createdByAccountId", CreatedByAccountId, Serializer); + Serializer->WriteValue(TEXT("id"), Id); + UBeamJsonUtils::SerializeArray(TEXT("manifest"), Manifest, Serializer); + UBeamJsonUtils::SerializeUObject("storageReference", StorageReference, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("checksum"), Checksum); + UBeamJsonUtils::SerializeUObject("comments", Comments, Serializer); + Serializer->WriteValue(TEXT("created"), Created); + UBeamJsonUtils::SerializeUObject("createdByAccountId", CreatedByAccountId, Serializer); + Serializer->WriteValue(TEXT("id"), Id); + UBeamJsonUtils::SerializeArray(TEXT("manifest"), Manifest, Serializer); + UBeamJsonUtils::SerializeUObject("storageReference", StorageReference, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Checksum = Bag->GetStringField(TEXT("checksum")); + UBeamJsonUtils::DeserializeUObject("comments", Bag, Comments, OuterOwner); + FDefaultValueHelper::ParseInt64(Bag->GetStringField(TEXT("created")), Created); + UBeamJsonUtils::DeserializeUObject("createdByAccountId", Bag, CreatedByAccountId, OuterOwner); + Id = Bag->GetStringField(TEXT("id")); + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("manifest")), Manifest, OuterOwner); + UBeamJsonUtils::DeserializeUObject("storageReference", Bag, StorageReference, OuterOwner); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h new file mode 100644 index 00000000..0f1a0998 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "OptionalArrayOfServiceComponentStreamData.generated.h" + + +UCLASS() +class UOptionalArrayOfServiceComponentStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("Value")), Value, OuterOwner); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h new file mode 100644 index 00000000..6690d24e --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "OptionalArrayOfServiceDependencyReferenceStreamData.generated.h" + + +UCLASS() +class UOptionalArrayOfServiceDependencyReferenceStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("Value")), Value, OuterOwner); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h new file mode 100644 index 00000000..bb381f6d --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageReferenceStreamData.h @@ -0,0 +1,41 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "OptionalArrayOfServiceStorageReferenceStreamData.generated.h" + + +UCLASS() +class UOptionalArrayOfServiceStorageReferenceStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("Value")), Value, OuterOwner); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h new file mode 100644 index 00000000..032e403f --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceStorageStatusStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "OptionalArrayOfServiceStorageStatusStreamData.generated.h" + + +UCLASS() +class UOptionalArrayOfServiceStorageStatusStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + TArray Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + UBeamJsonUtils::SerializeArray(TEXT("Value"), Value, Serializer); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + UBeamJsonUtils::DeserializeArray(Bag->GetArrayField(TEXT("Value")), Value, OuterOwner); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h new file mode 100644 index 00000000..7c801f75 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "OptionalLongStreamData.generated.h" + + +UCLASS() +class UOptionalLongStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + int64 Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Value"), Value); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Value"), Value); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + FDefaultValueHelper::ParseInt64(Bag->GetStringField(TEXT("Value")), Value); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h new file mode 100644 index 00000000..4d9bf8b6 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "OptionalStringStreamData.generated.h" + + +UCLASS() +class UOptionalStringStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Value = {}; + UPROPERTY() + bool HasValue = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Value"), Value); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Value"), Value); + Serializer->WriteValue(TEXT("HasValue"), HasValue); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Value = Bag->GetStringField(TEXT("Value")); + HasValue = Bag->GetBoolField(TEXT("HasValue")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h new file mode 100644 index 00000000..560b9965 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h @@ -0,0 +1,35 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ServiceComponentStreamData.generated.h" + + +UCLASS() +class UServiceComponentStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Name = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("name"), Name); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Name = Bag->GetStringField(TEXT("name")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h new file mode 100644 index 00000000..6db5a61e --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ServiceDependencyReferenceStreamData.generated.h" + + +UCLASS() +class UServiceDependencyReferenceStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Id = {}; + UPROPERTY() + FString StorageType = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("storageType"), StorageType); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("storageType"), StorageType); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Id = Bag->GetStringField(TEXT("id")); + StorageType = Bag->GetStringField(TEXT("storageType")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h new file mode 100644 index 00000000..a0feff5e --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceFederationChangeStreamData.h @@ -0,0 +1,45 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ServiceFederationChangeStreamData.generated.h" + + +UCLASS() +class UServiceFederationChangeStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Service = {}; + UPROPERTY() + FString FederationId = {}; + UPROPERTY() + FString FederationInterface = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("service"), Service); + Serializer->WriteValue(TEXT("federationId"), FederationId); + Serializer->WriteValue(TEXT("federationInterface"), FederationInterface); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("service"), Service); + Serializer->WriteValue(TEXT("federationId"), FederationId); + Serializer->WriteValue(TEXT("federationInterface"), FederationInterface); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Service = Bag->GetStringField(TEXT("service")); + FederationId = Bag->GetStringField(TEXT("federationId")); + FederationInterface = Bag->GetStringField(TEXT("federationInterface")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h new file mode 100644 index 00000000..e1b2b503 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceImageIdChangeStreamData.h @@ -0,0 +1,45 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ServiceImageIdChangeStreamData.generated.h" + + +UCLASS() +class UServiceImageIdChangeStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Service = {}; + UPROPERTY() + FString OldImageId = {}; + UPROPERTY() + FString NextImageId = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("service"), Service); + Serializer->WriteValue(TEXT("oldImageId"), OldImageId); + Serializer->WriteValue(TEXT("nextImageId"), NextImageId); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("service"), Service); + Serializer->WriteValue(TEXT("oldImageId"), OldImageId); + Serializer->WriteValue(TEXT("nextImageId"), NextImageId); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Service = Bag->GetStringField(TEXT("service")); + OldImageId = Bag->GetStringField(TEXT("oldImageId")); + NextImageId = Bag->GetStringField(TEXT("nextImageId")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h new file mode 100644 index 00000000..155789cf --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceReferenceStreamData.h @@ -0,0 +1,95 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceComponentStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalLongStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/OptionalArrayOfServiceDependencyReferenceStreamData.h" +#include "Subsystems/CLI/Autogen/StreamData/ServiceDependencyReferenceStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "ServiceReferenceStreamData.generated.h" + + +UCLASS() +class UServiceReferenceStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool Archived = {}; + UPROPERTY() + bool Arm = {}; + UPROPERTY() + FString Checksum = {}; + UPROPERTY() + UOptionalStringStreamData* Comments = {}; + UPROPERTY() + UOptionalArrayOfServiceComponentStreamData* Components = {}; + UPROPERTY() + UOptionalLongStreamData* ContainerHealthCheckPort = {}; + UPROPERTY() + UOptionalArrayOfServiceDependencyReferenceStreamData* Dependencies = {}; + UPROPERTY() + bool Enabled = {}; + UPROPERTY() + UOptionalStringStreamData* ImageCpuArch = {}; + UPROPERTY() + FString ImageId = {}; + UPROPERTY() + FString ServiceName = {}; + UPROPERTY() + FString TemplateId = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("archived"), Archived); + Serializer->WriteValue(TEXT("arm"), Arm); + Serializer->WriteValue(TEXT("checksum"), Checksum); + UBeamJsonUtils::SerializeUObject("comments", Comments, Serializer); + UBeamJsonUtils::SerializeUObject("components", Components, Serializer); + UBeamJsonUtils::SerializeUObject("containerHealthCheckPort", ContainerHealthCheckPort, Serializer); + UBeamJsonUtils::SerializeUObject("dependencies", Dependencies, Serializer); + Serializer->WriteValue(TEXT("enabled"), Enabled); + UBeamJsonUtils::SerializeUObject("imageCpuArch", ImageCpuArch, Serializer); + Serializer->WriteValue(TEXT("imageId"), ImageId); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + Serializer->WriteValue(TEXT("templateId"), TemplateId); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("archived"), Archived); + Serializer->WriteValue(TEXT("arm"), Arm); + Serializer->WriteValue(TEXT("checksum"), Checksum); + UBeamJsonUtils::SerializeUObject("comments", Comments, Serializer); + UBeamJsonUtils::SerializeUObject("components", Components, Serializer); + UBeamJsonUtils::SerializeUObject("containerHealthCheckPort", ContainerHealthCheckPort, Serializer); + UBeamJsonUtils::SerializeUObject("dependencies", Dependencies, Serializer); + Serializer->WriteValue(TEXT("enabled"), Enabled); + UBeamJsonUtils::SerializeUObject("imageCpuArch", ImageCpuArch, Serializer); + Serializer->WriteValue(TEXT("imageId"), ImageId); + Serializer->WriteValue(TEXT("serviceName"), ServiceName); + Serializer->WriteValue(TEXT("templateId"), TemplateId); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Archived = Bag->GetBoolField(TEXT("archived")); + Arm = Bag->GetBoolField(TEXT("arm")); + Checksum = Bag->GetStringField(TEXT("checksum")); + UBeamJsonUtils::DeserializeUObject("comments", Bag, Comments, OuterOwner); + UBeamJsonUtils::DeserializeUObject("components", Bag, Components, OuterOwner); + UBeamJsonUtils::DeserializeUObject("containerHealthCheckPort", Bag, ContainerHealthCheckPort, OuterOwner); + UBeamJsonUtils::DeserializeUObject("dependencies", Bag, Dependencies, OuterOwner); + Enabled = Bag->GetBoolField(TEXT("enabled")); + UBeamJsonUtils::DeserializeUObject("imageCpuArch", Bag, ImageCpuArch, OuterOwner); + ImageId = Bag->GetStringField(TEXT("imageId")); + ServiceName = Bag->GetStringField(TEXT("serviceName")); + TemplateId = Bag->GetStringField(TEXT("templateId")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h new file mode 100644 index 00000000..0f3a0217 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageReferenceStreamData.h @@ -0,0 +1,60 @@ + +#pragma once + +#include "Subsystems/CLI/Autogen/StreamData/OptionalStringStreamData.h" +#include "Serialization/BeamJsonUtils.h" +#include "ServiceStorageReferenceStreamData.generated.h" + + +UCLASS() +class UServiceStorageReferenceStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + bool Archived = {}; + UPROPERTY() + FString Checksum = {}; + UPROPERTY() + bool Enabled = {}; + UPROPERTY() + FString Id = {}; + UPROPERTY() + FString StorageType = {}; + UPROPERTY() + UOptionalStringStreamData* TemplateId = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("archived"), Archived); + Serializer->WriteValue(TEXT("checksum"), Checksum); + Serializer->WriteValue(TEXT("enabled"), Enabled); + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("storageType"), StorageType); + UBeamJsonUtils::SerializeUObject("templateId", TemplateId, Serializer); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("archived"), Archived); + Serializer->WriteValue(TEXT("checksum"), Checksum); + Serializer->WriteValue(TEXT("enabled"), Enabled); + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("storageType"), StorageType); + UBeamJsonUtils::SerializeUObject("templateId", TemplateId, Serializer); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Archived = Bag->GetBoolField(TEXT("archived")); + Checksum = Bag->GetStringField(TEXT("checksum")); + Enabled = Bag->GetBoolField(TEXT("enabled")); + Id = Bag->GetStringField(TEXT("id")); + StorageType = Bag->GetStringField(TEXT("storageType")); + UBeamJsonUtils::DeserializeUObject("templateId", Bag, TemplateId, OuterOwner); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h new file mode 100644 index 00000000..14b87b70 --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/ServiceStorageStatusStreamData.h @@ -0,0 +1,50 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "ServiceStorageStatusStreamData.generated.h" + + +UCLASS() +class UServiceStorageStatusStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Id = {}; + UPROPERTY() + bool IsCurrent = {}; + UPROPERTY() + bool IsRunning = {}; + UPROPERTY() + FString StorageType = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("isCurrent"), IsCurrent); + Serializer->WriteValue(TEXT("isRunning"), IsRunning); + Serializer->WriteValue(TEXT("storageType"), StorageType); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("id"), Id); + Serializer->WriteValue(TEXT("isCurrent"), IsCurrent); + Serializer->WriteValue(TEXT("isRunning"), IsRunning); + Serializer->WriteValue(TEXT("storageType"), StorageType); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Id = Bag->GetStringField(TEXT("id")); + IsCurrent = Bag->GetBoolField(TEXT("isCurrent")); + IsRunning = Bag->GetBoolField(TEXT("isRunning")); + StorageType = Bag->GetStringField(TEXT("storageType")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h new file mode 100644 index 00000000..d6fc00ab --- /dev/null +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/Autogen/StreamData/UnityAssemblyReferenceDataStreamData.h @@ -0,0 +1,40 @@ + +#pragma once + + +#include "Serialization/BeamJsonUtils.h" +#include "UnityAssemblyReferenceDataStreamData.generated.h" + + +UCLASS() +class UUnityAssemblyReferenceDataStreamData : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + + UPROPERTY() + FString Path = {}; + UPROPERTY() + FString AssemblyName = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Path"), Path); + Serializer->WriteValue(TEXT("AssemblyName"), AssemblyName); + } + + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override + { + Serializer->WriteValue(TEXT("Path"), Path); + Serializer->WriteValue(TEXT("AssemblyName"), AssemblyName); + } + + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override + { + Path = Bag->GetStringField(TEXT("Path")); + AssemblyName = Bag->GetStringField(TEXT("AssemblyName")); + } +}; + + diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCli.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCli.h index 1cdf5b12..17230486 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCli.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCli.h @@ -21,9 +21,9 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamCli : public UBeamEditorSubsystem protected: virtual FBeamOperationHandle InitializeWhenEditorReady() override; - virtual FBeamOperationHandle InitializeRealm(FBeamRealmHandle NewRealm) override; + virtual FBeamOperationHandle InitializeRealm(FBeamRealmHandle NewRealm) override; - FOptionalBool bInstalled; + FOptionalBool bInstalled; UPROPERTY() TArray RunningProcesses; @@ -62,6 +62,13 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamCli : public UBeamEditorSubsystem */ UFUNCTION(BlueprintCallable, Category="Beam", meta=(AutoCreateRefTerm="Params")) void RunCommandSync(UBeamCliCommand* Command, const TArray& Params); + + + /** + * @brief Stops a long-running command. + */ + UFUNCTION(BlueprintCallable, Category="Beam") + void StopCommand(UBeamCliCommand* Command); /** * @brief Whether or not the CLI is installed on this machine. We check for all editor integrations that require the CLI to work. @@ -74,4 +81,9 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamCli : public UBeamEditorSubsystem */ UFUNCTION(BlueprintPure, Category="Beam") FString GetPathToCli() const; + + /** + * Invoked when a command is done so we can cleanup. + */ + void OnCommandCompleted(UBeamCliCommand* Command); }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCliCommand.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCliCommand.h index 2d2d4eeb..3cb34915 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCliCommand.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/CLI/BeamCliCommand.h @@ -17,6 +17,50 @@ struct FCliRequest FString commandLine; }; +UCLASS(BlueprintType) +class UBeamCliLogEntry : public UObject, public IBeamJsonSerializableUObject +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FString LogLevel = {}; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FString Message = {}; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + int64 Timestamp = {}; + + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override; + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override; + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override; +}; + +USTRUCT() +struct FBeamCliError : public FBeamJsonSerializableUStruct +{ + GENERATED_BODY() + + UPROPERTY() + FString Message = {}; + UPROPERTY() + FString Invocation = {}; + UPROPERTY() + int32 ExitCode = {}; + UPROPERTY() + FString TypeName = {}; + UPROPERTY() + FString FullTypeName = {}; + UPROPERTY() + FString StackTrace = {}; + + virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override; + virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override; + virtual void BeamDeserializeProperties(const TSharedPtr& Bag) override; +}; + UCLASS(Abstract) class UBeamCliCommand : public UObject { @@ -26,10 +70,12 @@ class UBeamCliCommand : public UObject TSharedPtr CmdProcess; FHttpRequestPtr CmdRequest; + TSet ProcessedMessageIndices; + public: UBeamCliCommand() = default; - const static FString PathToLocalCli; + const static FString PathToLocalCli; /** * Appends global options we want to pass to every command. @@ -53,6 +99,11 @@ class UBeamCliCommand : public UObject */ virtual void RunServer(const FString Uri, const TArray& CommandParams, const FBeamOperationHandle& Op = {}); + /** + * Terminates the process or HTTP connection. + */ + virtual void Stop(); + /** * For Run and RunSync, this prepares the CmdProcess to be run. */ @@ -79,7 +130,7 @@ class UBeamCliCommand : public UObject /** * Generated via Beam CLI for every cmd subclass. Parses any received JSON and invokes the cmd subclass' appropriate */ - virtual void HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer); + virtual bool HandleStreamReceived(FBeamOperationHandle Op, FString ReceivedStreamType, int64 Timestamp, TSharedRef DataJson, bool isServer); virtual void HandleStreamCompleted(FBeamOperationHandle Op, int ResultCode, bool isServer); /** END - Auto Generated Function Overrides */ @@ -94,4 +145,17 @@ class UBeamCliCommand : public UObject UBeamEditor* Editor; UPROPERTY() UBeamCli* Cli; + +public: + UPROPERTY() + TArray LogEntries; + UPROPERTY() + TArray LogEntriesTimestamps; + TFunction OnLogEntriesStreamOutput; + + UPROPERTY() + TArray Errors; + UPROPERTY() + TArray ErrorsTimestamps; + TFunction& StreamData, const TArray& Timestamps, const FBeamOperationHandle& Op)> OnErrorsStreamOutput; }; diff --git a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/Microservices/BeamMicroservicesEditor.h b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/Microservices/BeamMicroservicesEditor.h index bfb31039..a7b26d52 100644 --- a/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/Microservices/BeamMicroservicesEditor.h +++ b/Plugins/BeamableCore/Source/BeamableCoreRuntimeEditor/Public/Subsystems/Microservices/BeamMicroservicesEditor.h @@ -8,10 +8,15 @@ #include "Subsystems/BeamEditorSubsystem.h" #include "BeamLogging.h" +#include "AutoGen/Enums/FederationType.h" #include "BeamBackend/BeamMicroserviceClientSubsystem.h" +#include "Containers/CircularQueue.h" +#include "Containers/SpscQueue.h" #include "Subsystems/BeamEditor.h" #include "Subsystems/CLI/BeamCli.h" #include "Subsystems/CLI/Autogen/BeamCliFederationLocalKeyCommand.h" +#include "Subsystems/CLI/Autogen/BeamCliFederationLocalSettingsGetIFederatedGameServerCommand.h" +#include "Subsystems/CLI/Autogen/BeamCliProjectLogsCommand.h" #include "Subsystems/CLI/Autogen/BeamCliProjectPsCommand.h" #include "Subsystems/CLI/Autogen/BeamCliServicesPsCommand.h" #include "Subsystems/CLI/Autogen/BeamCliProjectOpenSwaggerCommand.h" @@ -26,6 +31,42 @@ enum ELocalMicroserviceRunningMethod { Any, Stopped, RunningOnDocker, RunningOnH UENUM(BlueprintType) enum EBeamServiceType { MicroService, MicroStorage }; +USTRUCT(BlueprintType) +struct FLocalFederationData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + EFederationType Type = {}; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + UBeamCliFederationLocalSettingsGetIFederatedGameServerStreamData* LocalSettings_FederatedGamerServer = {}; +}; + +USTRUCT(BlueprintType) +struct FLocalFederationIdData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FString FederationId = {}; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TArray Federations = {}; +}; + +USTRUCT(BlueprintType) +struct FLocalFederationPerTargetData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + FString Target = {}; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TArray Federations = {}; +}; + USTRUCT(BlueprintType) struct FLocalMicroserviceData { @@ -37,6 +78,12 @@ struct FLocalMicroserviceData UPROPERTY(BlueprintReadOnly) FString BeamoId; + /** + * The type of the service. + */ + UPROPERTY(BlueprintReadOnly) + TEnumAsByte ServiceType; + /** * If the service is part of any BeamServiceGroup, the group will show up here. */ @@ -70,13 +117,23 @@ struct FLocalMicroserviceData UPROPERTY(BlueprintReadOnly, DisplayName="Targets") TMap TargetsToRoutingKeys; + UPROPERTY(BlueprintReadOnly, DisplayName="Targets") + TMap TargetsToFederations; + /** * The currently selected target from the map of available targets. */ UPROPERTY(BlueprintReadWrite, DisplayName="Selected Target") FString CurrentTarget; + + UPROPERTY() + UBeamCliProjectLogsCommand* TailLogsCommand = {}; + + UPROPERTY() + TArray Logs = {}; }; + UCLASS(BlueprintType) class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroserviceLocalEditorView : public UObject { @@ -100,6 +157,19 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroserviceLocalEditorView : public UO UPROPERTY(BlueprintReadWrite) FString SelectedTarget; + + UPROPERTY(BlueprintReadOnly) + FString LocalTarget; + + UPROPERTY(BlueprintReadWrite) + TMap FederationData; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TArray Logs = {}; + + + UFUNCTION(BlueprintCallable, Category="Beam") + TArray GetFilteredLogs(TArray VisibleLogTypes, FString TextFilter); }; DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnMicroserviceStateChange); @@ -116,11 +186,13 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito UBeamCli* Cli; UPROPERTY() UBeamBackend* Backend; - + virtual void Initialize(FSubsystemCollectionBase& Collection) override; virtual void Deinitialize() override; + virtual FBeamOperationHandle OnRealmInitialized(FBeamRealmHandle NewRealm) override; + virtual void OnReady() override; FDelegateHandle BeginPIE; @@ -144,7 +216,13 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito */ UPROPERTY(BlueprintReadOnly) FString LocalRoutingKey; - + + /** + * @brief The Local Target for the local signed in user and PC. + */ + UPROPERTY(BlueprintReadOnly) + FString LocalTarget; + /** * @brief Helper function to be used in custom blueprint nodes. */ @@ -205,6 +283,24 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice", meta=(ExpandBoolAsExecs="ReturnValue")) bool OpenSwaggerDocs(FString BeamoId); + /** + * @brief Opens the mongo-express document for the current running service. + */ + UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice", meta=(ExpandBoolAsExecs="ReturnValue")) + bool OpenMongoExpress(FString BeamoId); + + /** + * @brief Opens the mongo-express document for the current running service. + */ + UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice", meta=(ExpandBoolAsExecs="ReturnValue")) + bool ClearMongoLocalData(FString BeamoId); + + /** + * @brief Clears the logs for a particular service. + */ + UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice", meta=(ExpandBoolAsExecs="ReturnValue")) + bool ClearLogs(FString BeamoId); + /** * Whether or not the currently selected routing key for a particular service is valid right now or not. */ @@ -216,7 +312,7 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito * Whether or not the currently selected routing key for a particular service is valid right now or not. */ UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice", meta=(ExpandBoolAsExecs="ReturnValue")) - bool SetCurrentRoutingKey(FString BeamoId, FString Key); + bool SetCurrentRoutingKey(FString BeamoId, FString Target); UFUNCTION(BlueprintCallable, Category="Beam|Editor|Microservice") @@ -227,6 +323,7 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito void RunHostMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op); void RunDockerMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op); + void RunStorageObject(const TArray& BeamoIds, const FBeamOperationHandle& Op); void StopHostMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op); void StopDockerMicroservices(const TArray& BeamoIds, const FBeamOperationHandle& Op); @@ -234,6 +331,10 @@ class BEAMABLECORERUNTIMEEDITOR_API UBeamMicroservicesEditor : public UBeamEdito // This is how we actually keep Local Microservice State in sync void OnUpdateLocalStateReceived(const TArray& Stream, const TArray&, const FBeamOperationHandle&); + // Helper functions + void SetupLogTail(FLocalMicroserviceData* RunningService); + void AppendToLogs(FLocalMicroserviceData* RunningService, const TArray& Log); + void StopLogTail(FLocalMicroserviceData* RunningService); void SplitByHostOrDocker(const TArray& BeamoIds, TArray& DockerBeamoIds, TArray& HostBeamoIds); }; diff --git a/Plugins/BeamableUnrealMicroserviceClients/BeamableUnrealMicroserviceClients_GenerationPass.json b/Plugins/BeamableUnrealMicroserviceClients/BeamableUnrealMicroserviceClients_GenerationPass.json index 2a5bfc9b..006fd568 100644 --- a/Plugins/BeamableUnrealMicroserviceClients/BeamableUnrealMicroserviceClients_GenerationPass.json +++ b/Plugins/BeamableUnrealMicroserviceClients/BeamableUnrealMicroserviceClients_GenerationPass.json @@ -1 +1 @@ -{"InEngineTypeToIncludePaths":{"FOptionalString":"BeamableCore/Public/AutoGen/Optionals/OptionalString.h","FOptionalBeamClientPermission":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamClientPermission.h","FOptionalBeamExternalIdentity":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamExternalIdentity.h","FOptionalBeamTag":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamTag.h","FOptionalBeamRemoteContentManifestEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamRemoteContentManifestEntry.h","FOptionalBeamCid":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamCid.h","FOptionalBeamPid":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamPid.h","FOptionalInt32":"BeamableCore/Public/AutoGen/Optionals/OptionalInt32.h","FOptionalArrayOfLobby":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfLobby.h","FOptionalLobbyRestriction":"BeamableCore/Public/AutoGen/Optionals/OptionalLobbyRestriction.h","FOptionalBeamContentId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamContentId.h","FOptionalArrayOfBeamTag":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamTag.h","FOptionalMapOfString":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfString.h","FOptionalMatchType":"BeamableCore/Public/AutoGen/Optionals/OptionalMatchType.h","FOptionalBeamGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamGamerTag.h","FOptionalArrayOfLobbyPlayer":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfLobbyPlayer.h","FOptionalUpdateData":"BeamableCore/Public/AutoGen/Optionals/OptionalUpdateData.h","FOptionalBool":"BeamableCore/Public/AutoGen/Optionals/OptionalBool.h","FOptionalArrayOfString":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfString.h","FOptionalArrayOfTeamContentProto":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTeamContentProto.h","FOptionalArrayOfBeamGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamGamerTag.h","FOptionalArrayOfOnlineStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfOnlineStatus.h","FOptionalPresenceStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalPresenceStatus.h","FOptionalArrayOfTeam":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTeam.h","FOptionalArrayOfTicket":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTicket.h","FOptionalMapOfDouble":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfDouble.h","FOptionalArrayOfBeamContentId":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamContentId.h","FOptionalArrayOfPartyInvitation":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfPartyInvitation.h","FOptionalBeamContentManifestId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamContentManifestId.h","FOptionalInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalInt64.h","FOptionalArrayOfMapOfContentMeta":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMapOfContentMeta.h","FOptionalSupportedFederation":"BeamableCore/Public/AutoGen/Optionals/OptionalSupportedFederation.h","FOptionalArrayOfServiceStorageReference":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceStorageReference.h","FOptionalArrayOfSupportedFederation":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfSupportedFederation.h","FOptionalArrayOfServiceDependencyReference":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceDependencyReference.h","FOptionalArrayOfDatabaseMeasurement":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfDatabaseMeasurement.h","FOptionalArrayOfServiceComponent":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceComponent.h","FOptionalArrayOfServiceStorageStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceStorageStatus.h","FOptionalBeamoBasicManifestChecksum":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamoBasicManifestChecksum.h","FOptionalArrayOfEventInventoryRewardCurrency":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventInventoryRewardCurrency.h","FOptionalArrayOfItemCreateRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemCreateRequestBody.h","FOptionalArrayOfEventInventoryRewardItem":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventInventoryRewardItem.h","FOptionalDouble":"BeamableCore/Public/AutoGen/Optionals/OptionalDouble.h","FOptionalArrayOfEventRewardObtain":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRewardObtain.h","FOptionalEventPlayerPhaseView":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPlayerPhaseView.h","FOptionalEventPlayerGroupState":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPlayerGroupState.h","FOptionalEventGroupRewards":"BeamableCore/Public/AutoGen/Optionals/OptionalEventGroupRewards.h","FOptionalLeaderboardCohortSettings":"BeamableCore/Public/AutoGen/Optionals/OptionalLeaderboardCohortSettings.h","FOptionalArrayOfEventRewardContent":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRewardContent.h","FOptionalSchedule":"BeamableCore/Public/AutoGen/Optionals/OptionalSchedule.h","FOptionalArrayOfInFlightMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInFlightMessage.h","FOptionalEventPhaseRuntime":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPhaseRuntime.h","FOptionalArrayOfEventPhaseTime":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventPhaseTime.h","FOptionalArrayOfScheduleDefinition":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfScheduleDefinition.h","FOptionalArrayOfEventRule":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRule.h","FOptionalArrayOfGroupScoreBinding":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupScoreBinding.h","FOptionalArrayOfGroupUserMember":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupUserMember.h","FOptionalArrayOfDonationRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfDonationRequestBody.h","FOptionalMapOfDonationRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfDonationRequestBody.h","FOptionalArrayOfGroupRole":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupRole.h","FOptionalArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyProperty.h","FOptionalFederationInfo":"BeamableCore/Public/AutoGen/Optionals/OptionalFederationInfo.h","FOptionalMapOfInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfInt64.h","FOptionalMapOfArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfArrayOfCurrencyProperty.h","FOptionalArrayOfItemUpdateRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemUpdateRequestBody.h","FOptionalArrayOfItemDeleteRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemDeleteRequestBody.h","FOptionalArrayOfRankEntryStat":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRankEntryStat.h","FOptionalRankEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalRankEntry.h","FOptionalOrderRules":"BeamableCore/Public/AutoGen/Optionals/OptionalOrderRules.h","FOptionalMetadataView":"BeamableCore/Public/AutoGen/Optionals/OptionalMetadataView.h","FOptionalArrayOfBeamExternalIdentity":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamExternalIdentity.h","FOptionalGamerTagAssociation":"BeamableCore/Public/AutoGen/Optionals/OptionalGamerTagAssociation.h","FOptionalArrayOfRoleMapping":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRoleMapping.h","FOptionalArrayOfCurrencyChange":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyChange.h","FOptionalEntitlementClaimWindow":"BeamableCore/Public/AutoGen/Optionals/OptionalEntitlementClaimWindow.h","FOptionalChallengeSolution":"BeamableCore/Public/AutoGen/Optionals/OptionalChallengeSolution.h","FOptionalBeamStatsType":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamStatsType.h","FOptionalArrayOfStatStringListEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfStatStringListEntry.h","FOptionalArrayOfCompletedStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCompletedStatus.h","FOptionalTournamentEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalTournamentEntry.h","FOptionalTournamentGroupEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalTournamentGroupEntry.h","FOptionalContextInfo":"BeamableCore/Public/AutoGen/Optionals/OptionalContextInfo.h","FOptionalBeamAccountId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamAccountId.h","FOptionalArrayOfObjectRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfObjectRequestBody.h","FOptionalArrayOfMetadataPair":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMetadataPair.h","FOptionalSendNotification":"BeamableCore/Public/AutoGen/Optionals/OptionalSendNotification.h","FOptionalArrayOfInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInt64.h","FOptionalBeamoLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamoLimits.h","FOptionalContentLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalContentLimits.h","FOptionalGatewayLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalGatewayLimits.h","FOptionalServiceLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalServiceLimits.h","FOptionalArrayOfRedisShard":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRedisShard.h","FOptionalArrayOfBeamPid":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamPid.h","FOptionalCommerceLootRoll":"BeamableCore/Public/AutoGen/Optionals/OptionalCommerceLootRoll.h","FOptionalPeriod":"BeamableCore/Public/AutoGen/Optionals/OptionalPeriod.h","FOptionalCatalog":"BeamableCore/Public/AutoGen/Optionals/OptionalCatalog.h","FOptionalArrayOfInt32":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInt32.h","FOptionalPlayerReward":"BeamableCore/Public/AutoGen/Optionals/OptionalPlayerReward.h","FOptionalArrayOfPlayerStatRequirement":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfPlayerStatRequirement.h","FOptionalArrayOfAnnouncementAttachment":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAnnouncementAttachment.h","FOptionalArrayOfAttachmentProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAttachmentProperty.h","FOptionalVariableReference":"BeamableCore/Public/AutoGen/Optionals/OptionalVariableReference.h","FOptionalArrayOfCurrencyChangeReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyChangeReward.h","FOptionalArrayOfWebhookReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfWebhookReward.h","FOptionalArrayOfNewItemReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfNewItemReward.h","FOptionalWebhookComet":"BeamableCore/Public/AutoGen/Optionals/OptionalWebhookComet.h","FOptionalMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalMessage.h","FOptionalMailRewards":"BeamableCore/Public/AutoGen/Optionals/OptionalMailRewards.h","FOptionalArrayOfAttachmentRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAttachmentRequestBody.h","FOptionalArrayOfMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMessage.h","FOptionalSessionLanguageContext":"BeamableCore/Public/AutoGen/Optionals/OptionalSessionLanguageContext.h","FOptionalArrayOfCohortEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCohortEntry.h","FOptionalSessionUser":"BeamableCore/Public/AutoGen/Optionals/OptionalSessionUser.h","FOptionalGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalGamerTag.h","FArrayOfString":"BeamableCore/Public/AutoGen/Arrays/ArrayOfString.h","FArrayOfLocalizedValue":"BeamableCore/Public/AutoGen/Arrays/ArrayOfLocalizedValue.h","FArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Arrays/ArrayOfCurrencyProperty.h","FMapOfContentMeta":"BeamableCore/Public/AutoGen/Maps/MapOfContentMeta.h","FMapOfString":"BeamableCore/Public/AutoGen/Maps/MapOfString.h","ELobbyRestriction":"BeamableCore/Public/AutoGen/Enums/LobbyRestriction.h","EPresenceStatus":"BeamableCore/Public/AutoGen/Enums/PresenceStatus.h","EContentVisibility":"BeamableCore/Public/AutoGen/Enums/ContentVisibility.h","EContentType":"BeamableCore/Public/AutoGen/Enums/ContentType.h","EFederationType":"BeamableCore/Public/AutoGen/Enums/FederationType.h","EEventState":"BeamableCore/Public/AutoGen/Enums/EventState.h","EGroupType":"BeamableCore/Public/AutoGen/Enums/GroupType.h","EInvitationDirection":"BeamableCore/Public/AutoGen/Enums/InvitationDirection.h","EFriendSource":"BeamableCore/Public/AutoGen/Enums/FriendSource.h","EWebhookServiceType":"BeamableCore/Public/AutoGen/Enums/WebhookServiceType.h","EWebhookInvocationType":"BeamableCore/Public/AutoGen/Enums/WebhookInvocationType.h","EWebhookRetryType":"BeamableCore/Public/AutoGen/Enums/WebhookRetryType.h","URefreshTokenAuthRequestBody*":"BeamableCore/Public/AutoGen/RefreshTokenAuthRequestBody.h","UAuthResponse*":"BeamableCore/Public/AutoGen/AuthResponse.h","UProblemDetails*":"BeamableCore/Public/AutoGen/ProblemDetails.h","UServerTokenAuthRequestBody*":"BeamableCore/Public/AutoGen/ServerTokenAuthRequestBody.h","UServerTokenResponse*":"BeamableCore/Public/AutoGen/ServerTokenResponse.h","ULobbyQueryResponse*":"BeamableCore/Public/AutoGen/LobbyQueryResponse.h","UCreateLobby*":"BeamableCore/Public/AutoGen/CreateLobby.h","ULobby*":"BeamableCore/Public/AutoGen/Lobby.h","UJoinLobby*":"BeamableCore/Public/AutoGen/JoinLobby.h","URemoveFromLobby*":"BeamableCore/Public/AutoGen/RemoveFromLobby.h","UAcknowledge*":"BeamableCore/Public/AutoGen/Acknowledge.h","UUpdateLobby*":"BeamableCore/Public/AutoGen/UpdateLobby.h","UAddTags*":"BeamableCore/Public/AutoGen/AddTags.h","URemoveTags*":"BeamableCore/Public/AutoGen/RemoveTags.h","UCreateFederatedGameServer*":"BeamableCore/Public/AutoGen/CreateFederatedGameServer.h","UApiLobbiesServerPostLobbyResponse*":"BeamableCore/Public/AutoGen/ApiLobbiesServerPostLobbyResponse.h","UMatchType*":"BeamableCore/Public/AutoGen/MatchType.h","UUpdateData*":"BeamableCore/Public/AutoGen/UpdateData.h","ULobbyPlayer*":"BeamableCore/Public/AutoGen/LobbyPlayer.h","UTeamContentProto*":"BeamableCore/Public/AutoGen/TeamContentProto.h","UMessageRequestBody*":"BeamableCore/Public/AutoGen/MessageRequestBody.h","UApiMailboxPublishPostMailboxResponse*":"BeamableCore/Public/AutoGen/ApiMailboxPublishPostMailboxResponse.h","UCreateParty*":"BeamableCore/Public/AutoGen/CreateParty.h","UParty*":"BeamableCore/Public/AutoGen/Party.h","UUpdateParty*":"BeamableCore/Public/AutoGen/UpdateParty.h","UPromoteNewLeader*":"BeamableCore/Public/AutoGen/PromoteNewLeader.h","UInviteToParty*":"BeamableCore/Public/AutoGen/InviteToParty.h","UApiPartiesInvitePostPartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesInvitePostPartyResponse.h","UCancelInviteToParty*":"BeamableCore/Public/AutoGen/CancelInviteToParty.h","UApiPartiesInviteDeletePartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesInviteDeletePartyResponse.h","ULeaveParty*":"BeamableCore/Public/AutoGen/LeaveParty.h","UApiPartiesMembersDeletePartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesMembersDeletePartyResponse.h","UOnlineStatusQuery*":"BeamableCore/Public/AutoGen/OnlineStatusQuery.h","UPlayersStatusResponse*":"BeamableCore/Public/AutoGen/PlayersStatusResponse.h","UOnlineStatus*":"BeamableCore/Public/AutoGen/OnlineStatus.h","UMatch*":"BeamableCore/Public/AutoGen/Match.h","UTeam*":"BeamableCore/Public/AutoGen/Team.h","UTicket*":"BeamableCore/Public/AutoGen/Ticket.h","UTicketReservationRequestBody*":"BeamableCore/Public/AutoGen/TicketReservationRequestBody.h","UTicketReservationResponse*":"BeamableCore/Public/AutoGen/TicketReservationResponse.h","UApiMatchmakingTicketsDeleteTicketResponse*":"BeamableCore/Public/AutoGen/ApiMatchmakingTicketsDeleteTicketResponse.h","UPartyInvitesForPlayerResponse*":"BeamableCore/Public/AutoGen/PartyInvitesForPlayerResponse.h","UPartyInvitation*":"BeamableCore/Public/AutoGen/PartyInvitation.h","UApiPlayersPresencePutPlayerPresenceResponse*":"BeamableCore/Public/AutoGen/ApiPlayersPresencePutPlayerPresenceResponse.h","USetPresenceStatusRequestBody*":"BeamableCore/Public/AutoGen/SetPresenceStatusRequestBody.h","UReferenceSuperset*":"BeamableCore/Public/AutoGen/ReferenceSuperset.h","UBinaryDefinition*":"BeamableCore/Public/AutoGen/BinaryDefinition.h","UPullManifestRequestBody*":"BeamableCore/Public/AutoGen/PullManifestRequestBody.h","UGetManifestsResponse*":"BeamableCore/Public/AutoGen/GetManifestsResponse.h","USaveBinaryRequestBody*":"BeamableCore/Public/AutoGen/SaveBinaryRequestBody.h","UTextReference*":"BeamableCore/Public/AutoGen/TextReference.h","USaveBinaryResponse*":"BeamableCore/Public/AutoGen/SaveBinaryResponse.h","USaveTextRequestBody*":"BeamableCore/Public/AutoGen/SaveTextRequestBody.h","UTextDefinition*":"BeamableCore/Public/AutoGen/TextDefinition.h","UPutLocalizationsRequestBody*":"BeamableCore/Public/AutoGen/PutLocalizationsRequestBody.h","UContentOrText*":"BeamableCore/Public/AutoGen/ContentOrText.h","UCommonResponse*":"BeamableCore/Public/AutoGen/CommonResponse.h","UArchiveOrUnarchiveManifestsRequestBody*":"BeamableCore/Public/AutoGen/ArchiveOrUnarchiveManifestsRequestBody.h","UContentMeta*":"BeamableCore/Public/AutoGen/ContentMeta.h","UGetExactManifestRequestBody*":"BeamableCore/Public/AutoGen/GetExactManifestRequestBody.h","UBinaryReference*":"BeamableCore/Public/AutoGen/BinaryReference.h","UContentBasicGetManifestRequestBody*":"BeamableCore/Public/AutoGen/ContentBasicGetManifestRequestBody.h","UPullAllManifestsRequestBody*":"BeamableCore/Public/AutoGen/PullAllManifestsRequestBody.h","UClientManifestJsonResponse*":"BeamableCore/Public/AutoGen/ClientManifestJsonResponse.h","UGetManifestHistoryRequestBody*":"BeamableCore/Public/AutoGen/GetManifestHistoryRequestBody.h","UContentDefinition*":"BeamableCore/Public/AutoGen/ContentDefinition.h","UGetManifestRequestJson*":"BeamableCore/Public/AutoGen/GetManifestRequestJson.h","UContentBasicManifestChecksum*":"BeamableCore/Public/AutoGen/ContentBasicManifestChecksum.h","USaveContentRequestBody*":"BeamableCore/Public/AutoGen/SaveContentRequestBody.h","USaveManifestRequestBody*":"BeamableCore/Public/AutoGen/SaveManifestRequestBody.h","URepeatManifestRequestBody*":"BeamableCore/Public/AutoGen/RepeatManifestRequestBody.h","UContentBasicManifest*":"BeamableCore/Public/AutoGen/ContentBasicManifest.h","ULocalizationQuery*":"BeamableCore/Public/AutoGen/LocalizationQuery.h","UEmptyResponse*":"BeamableCore/Public/AutoGen/EmptyResponse.h","UGetLocalizationsResponse*":"BeamableCore/Public/AutoGen/GetLocalizationsResponse.h","UGetContentRequestBody*":"BeamableCore/Public/AutoGen/GetContentRequestBody.h","ULocalizedValue*":"BeamableCore/Public/AutoGen/LocalizedValue.h","UManifestChecksums*":"BeamableCore/Public/AutoGen/ManifestChecksums.h","USaveTextResponse*":"BeamableCore/Public/AutoGen/SaveTextResponse.h","UManifestSummary*":"BeamableCore/Public/AutoGen/ManifestSummary.h","UDeleteLocalizationRequestBody*":"BeamableCore/Public/AutoGen/DeleteLocalizationRequestBody.h","UGetManifestHistoryResponse*":"BeamableCore/Public/AutoGen/GetManifestHistoryResponse.h","USaveContentResponse*":"BeamableCore/Public/AutoGen/SaveContentResponse.h","UContentReference*":"BeamableCore/Public/AutoGen/ContentReference.h","UPullBeamoManifestRequestBody*":"BeamableCore/Public/AutoGen/PullBeamoManifestRequestBody.h","USupportedFederation*":"BeamableCore/Public/AutoGen/SupportedFederation.h","UGetLogsUrlRequestBody*":"BeamableCore/Public/AutoGen/GetLogsUrlRequestBody.h","UGetLogsUrlHeader*":"BeamableCore/Public/AutoGen/GetLogsUrlHeader.h","UUploadURL*":"BeamableCore/Public/AutoGen/UploadURL.h","UGetManifestsRequestBody*":"BeamableCore/Public/AutoGen/GetManifestsRequestBody.h","UGetCurrentManifestRequestBody*":"BeamableCore/Public/AutoGen/GetCurrentManifestRequestBody.h","UDatabasePerformanceRequestBody*":"BeamableCore/Public/AutoGen/DatabasePerformanceRequestBody.h","UServiceImageLayers*":"BeamableCore/Public/AutoGen/ServiceImageLayers.h","UMicroserviceRegistrationsQuery*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationsQuery.h","UPostManifestRequestBody*":"BeamableCore/Public/AutoGen/PostManifestRequestBody.h","UServiceStorageStatus*":"BeamableCore/Public/AutoGen/ServiceStorageStatus.h","UPASlowQuery*":"BeamableCore/Public/AutoGen/PASlowQuery.h","UGetSignedUrlResponse*":"BeamableCore/Public/AutoGen/GetSignedUrlResponse.h","UPreSignedUrlsResponse*":"BeamableCore/Public/AutoGen/PreSignedUrlsResponse.h","UConnectionString*":"BeamableCore/Public/AutoGen/ConnectionString.h","UServiceTemplate*":"BeamableCore/Public/AutoGen/ServiceTemplate.h","UMicroserviceRegistrationRequestBody*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationRequestBody.h","UBeamoBasicGetManifestRequestBody*":"BeamableCore/Public/AutoGen/BeamoBasicGetManifestRequestBody.h","UDatabaseMeasurement*":"BeamableCore/Public/AutoGen/DatabaseMeasurement.h","UMicroserviceRegistrations*":"BeamableCore/Public/AutoGen/MicroserviceRegistrations.h","UQuery*":"BeamableCore/Public/AutoGen/Query.h","UBeamoBasicURLResponse*":"BeamableCore/Public/AutoGen/BeamoBasicURLResponse.h","UManifestView*":"BeamableCore/Public/AutoGen/ManifestView.h","UGetLogsInsightUrlRequestBody*":"BeamableCore/Public/AutoGen/GetLogsInsightUrlRequestBody.h","UServiceDependencyReference*":"BeamableCore/Public/AutoGen/ServiceDependencyReference.h","UBeamoBasicManifestChecksum*":"BeamableCore/Public/AutoGen/BeamoBasicManifestChecksum.h","UDataPoint*":"BeamableCore/Public/AutoGen/DataPoint.h","UMicroserviceSecretResponse*":"BeamableCore/Public/AutoGen/MicroserviceSecretResponse.h","UBeamoBasicReference*":"BeamableCore/Public/AutoGen/BeamoBasicReference.h","UServiceStatus*":"BeamableCore/Public/AutoGen/ServiceStatus.h","UMicroserviceRegistrationsResponse*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationsResponse.h","UPASuggestedIndex*":"BeamableCore/Public/AutoGen/PASuggestedIndex.h","UGetLambdaURI*":"BeamableCore/Public/AutoGen/GetLambdaURI.h","UGetManifestResponse*":"BeamableCore/Public/AutoGen/GetManifestResponse.h","UDatabaseMeasurements*":"BeamableCore/Public/AutoGen/DatabaseMeasurements.h","UServiceReference*":"BeamableCore/Public/AutoGen/ServiceReference.h","UGetStatusResponse*":"BeamableCore/Public/AutoGen/GetStatusResponse.h","UServiceComponent*":"BeamableCore/Public/AutoGen/ServiceComponent.h","UPerformanceResponse*":"BeamableCore/Public/AutoGen/PerformanceResponse.h","UGetTemplatesResponse*":"BeamableCore/Public/AutoGen/GetTemplatesResponse.h","UServiceStorageReference*":"BeamableCore/Public/AutoGen/ServiceStorageReference.h","USupportedFederationRegistration*":"BeamableCore/Public/AutoGen/SupportedFederationRegistration.h","USupportedFederationsResponse*":"BeamableCore/Public/AutoGen/SupportedFederationsResponse.h","ULambdaResponse*":"BeamableCore/Public/AutoGen/LambdaResponse.h","UGetCurrentManifestResponse*":"BeamableCore/Public/AutoGen/GetCurrentManifestResponse.h","UGetServiceURLsRequestBody*":"BeamableCore/Public/AutoGen/GetServiceURLsRequestBody.h","UPostManifestResponse*":"BeamableCore/Public/AutoGen/PostManifestResponse.h","UGetMetricsUrlRequestBody*":"BeamableCore/Public/AutoGen/GetMetricsUrlRequestBody.h","UCommitImageRequestBody*":"BeamableCore/Public/AutoGen/CommitImageRequestBody.h","UGetElasticContainerRegistryURI*":"BeamableCore/Public/AutoGen/GetElasticContainerRegistryURI.h","UPANamespace*":"BeamableCore/Public/AutoGen/PANamespace.h","ULink*":"BeamableCore/Public/AutoGen/Link.h","UEventInventoryRewardItem*":"BeamableCore/Public/AutoGen/EventInventoryRewardItem.h","UItemCreateRequestBody*":"BeamableCore/Public/AutoGen/ItemCreateRequestBody.h","UEventClaimResponse*":"BeamableCore/Public/AutoGen/EventClaimResponse.h","UEventPlayerView*":"BeamableCore/Public/AutoGen/EventPlayerView.h","UEventRewardState*":"BeamableCore/Public/AutoGen/EventRewardState.h","UEventScoreRequestBody*":"BeamableCore/Public/AutoGen/EventScoreRequestBody.h","UEventRewardObtain*":"BeamableCore/Public/AutoGen/EventRewardObtain.h","UEventClaimRequestBody*":"BeamableCore/Public/AutoGen/EventClaimRequestBody.h","UEventInventoryRewardCurrency*":"BeamableCore/Public/AutoGen/EventInventoryRewardCurrency.h","UEventInventoryPendingRewards*":"BeamableCore/Public/AutoGen/EventInventoryPendingRewards.h","UEventPlayerStateView*":"BeamableCore/Public/AutoGen/EventPlayerStateView.h","UEventPlayerPhaseView*":"BeamableCore/Public/AutoGen/EventPlayerPhaseView.h","UItemProperty*":"BeamableCore/Public/AutoGen/ItemProperty.h","UEventRule*":"BeamableCore/Public/AutoGen/EventRule.h","UEventPlayerGroupState*":"BeamableCore/Public/AutoGen/EventPlayerGroupState.h","ULeaderboardCohort*":"BeamableCore/Public/AutoGen/LeaderboardCohort.h","UInFlightMessage*":"BeamableCore/Public/AutoGen/InFlightMessage.h","ULeaderboardCohortSettings*":"BeamableCore/Public/AutoGen/LeaderboardCohortSettings.h","UEvent*":"BeamableCore/Public/AutoGen/Event.h","UEventPhaseTime*":"BeamableCore/Public/AutoGen/EventPhaseTime.h","UEventQueryResponse*":"BeamableCore/Public/AutoGen/EventQueryResponse.h","UPlayerStatRequirement*":"BeamableCore/Public/AutoGen/PlayerStatRequirement.h","UEventGroupRewards*":"BeamableCore/Public/AutoGen/EventGroupRewards.h","UEventsWithinDateRangeRequestBody*":"BeamableCore/Public/AutoGen/EventsWithinDateRangeRequestBody.h","UEventRewardContent*":"BeamableCore/Public/AutoGen/EventRewardContent.h","UEventPhaseRuntime*":"BeamableCore/Public/AutoGen/EventPhaseRuntime.h","UEventDateRanges*":"BeamableCore/Public/AutoGen/EventDateRanges.h","UEventObjectData*":"BeamableCore/Public/AutoGen/EventObjectData.h","UDateRange*":"BeamableCore/Public/AutoGen/DateRange.h","UEventsInDateRangeResponse*":"BeamableCore/Public/AutoGen/EventsInDateRangeResponse.h","UEventApplyRequestBody*":"BeamableCore/Public/AutoGen/EventApplyRequestBody.h","USchedule*":"BeamableCore/Public/AutoGen/Schedule.h","UScheduleDefinition*":"BeamableCore/Public/AutoGen/ScheduleDefinition.h","UEventPhase*":"BeamableCore/Public/AutoGen/EventPhase.h","UEventContentResponse*":"BeamableCore/Public/AutoGen/EventContentResponse.h","UEventPhaseEndRequestBody*":"BeamableCore/Public/AutoGen/EventPhaseEndRequestBody.h","UPingRsp*":"BeamableCore/Public/AutoGen/PingRsp.h","USetContentRequestBody*":"BeamableCore/Public/AutoGen/SetContentRequestBody.h","UGroupCreate*":"BeamableCore/Public/AutoGen/GroupCreate.h","UDonationEntry*":"BeamableCore/Public/AutoGen/DonationEntry.h","UMember*":"BeamableCore/Public/AutoGen/Member.h","UGroupMembershipResponse*":"BeamableCore/Public/AutoGen/GroupMembershipResponse.h","UGroupRole*":"BeamableCore/Public/AutoGen/GroupRole.h","UAvailabilityResponse*":"BeamableCore/Public/AutoGen/AvailabilityResponse.h","UDonationRequestBody*":"BeamableCore/Public/AutoGen/DonationRequestBody.h","UGroupCreateResponse*":"BeamableCore/Public/AutoGen/GroupCreateResponse.h","UGroupSearchResponse*":"BeamableCore/Public/AutoGen/GroupSearchResponse.h","UGroupUserMember*":"BeamableCore/Public/AutoGen/GroupUserMember.h","UGroupMemberInfo*":"BeamableCore/Public/AutoGen/GroupMemberInfo.h","UCurrencyProperty*":"BeamableCore/Public/AutoGen/CurrencyProperty.h","UGroup*":"BeamableCore/Public/AutoGen/Group.h","UCurrency*":"BeamableCore/Public/AutoGen/Currency.h","UGroupMembershipRequestBody*":"BeamableCore/Public/AutoGen/GroupMembershipRequestBody.h","UGroupScoreBinding*":"BeamableCore/Public/AutoGen/GroupScoreBinding.h","UAvailabilityRequestBody*":"BeamableCore/Public/AutoGen/AvailabilityRequestBody.h","UGroupSearchRequestBody*":"BeamableCore/Public/AutoGen/GroupSearchRequestBody.h","UGroupMetaData*":"BeamableCore/Public/AutoGen/GroupMetaData.h","UGroupUser*":"BeamableCore/Public/AutoGen/GroupUser.h","UFederationInfo*":"BeamableCore/Public/AutoGen/FederationInfo.h","UGroupInvite*":"BeamableCore/Public/AutoGen/GroupInvite.h","UCreateDonationRequestBody*":"BeamableCore/Public/AutoGen/CreateDonationRequestBody.h","UKickRequestBody*":"BeamableCore/Public/AutoGen/KickRequestBody.h","UGroupUpdate*":"BeamableCore/Public/AutoGen/GroupUpdate.h","UGroupApplication*":"BeamableCore/Public/AutoGen/GroupApplication.h","UMakeDonationRequestBody*":"BeamableCore/Public/AutoGen/MakeDonationRequestBody.h","URoleChangeRequestBody*":"BeamableCore/Public/AutoGen/RoleChangeRequestBody.h","UDisbandRequestBody*":"BeamableCore/Public/AutoGen/DisbandRequestBody.h","UCurrencyContentResponse*":"BeamableCore/Public/AutoGen/CurrencyContentResponse.h","UCurrencyArchetype*":"BeamableCore/Public/AutoGen/CurrencyArchetype.h","UItemArchetype*":"BeamableCore/Public/AutoGen/ItemArchetype.h","UItemContentResponse*":"BeamableCore/Public/AutoGen/ItemContentResponse.h","UItemGroup*":"BeamableCore/Public/AutoGen/ItemGroup.h","UItemUpdateRequestBody*":"BeamableCore/Public/AutoGen/ItemUpdateRequestBody.h","UCurrencyPreview*":"BeamableCore/Public/AutoGen/CurrencyPreview.h","UCurrencyView*":"BeamableCore/Public/AutoGen/CurrencyView.h","UInventoryView*":"BeamableCore/Public/AutoGen/InventoryView.h","UInventoryGetRequestBody*":"BeamableCore/Public/AutoGen/InventoryGetRequestBody.h","UMultipliersGetResponse*":"BeamableCore/Public/AutoGen/MultipliersGetResponse.h","UEndTransactionRequestBody*":"BeamableCore/Public/AutoGen/EndTransactionRequestBody.h","UInventoryUpdateRequestBody*":"BeamableCore/Public/AutoGen/InventoryUpdateRequestBody.h","UItem*":"BeamableCore/Public/AutoGen/Item.h","UInventoryQueryRequestBody*":"BeamableCore/Public/AutoGen/InventoryQueryRequestBody.h","UItemDeleteRequestBody*":"BeamableCore/Public/AutoGen/ItemDeleteRequestBody.h","UVipBonus*":"BeamableCore/Public/AutoGen/VipBonus.h","UPreviewVipBonusResponse*":"BeamableCore/Public/AutoGen/PreviewVipBonusResponse.h","UTransferRequestBody*":"BeamableCore/Public/AutoGen/TransferRequestBody.h","URankEntryStat*":"BeamableCore/Public/AutoGen/RankEntryStat.h","ULeaderboardUidResponse*":"BeamableCore/Public/AutoGen/LeaderboardUidResponse.h","UListLeaderBoardViewResponse*":"BeamableCore/Public/AutoGen/ListLeaderBoardViewResponse.h","URankEntry*":"BeamableCore/Public/AutoGen/RankEntry.h","ULeaderboardPlayerAssignmentRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPlayerAssignmentRequestBody.h","ULeaderboardPlayerRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPlayerRequestBody.h","ULeaderboardListRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardListRequestBody.h","ULeaderboardAssignmentInfo*":"BeamableCore/Public/AutoGen/LeaderboardAssignmentInfo.h","ULeaderboardListResponse*":"BeamableCore/Public/AutoGen/LeaderboardListResponse.h","ULeaderBoardView*":"BeamableCore/Public/AutoGen/LeaderBoardView.h","ULeaderboardPartitionInfo*":"BeamableCore/Public/AutoGen/LeaderboardPartitionInfo.h","ULeaderboardPartitionRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPartitionRequestBody.h","UOrderRule*":"BeamableCore/Public/AutoGen/OrderRule.h","ULeaderboardMembershipRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardMembershipRequestBody.h","ULeaderboardRemoveCacheEntryRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardRemoveCacheEntryRequestBody.h","ULeaderboardGetRanksRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardGetRanksRequestBody.h","ULeaderboardApiViewRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardApiViewRequestBody.h","UMetadataView*":"BeamableCore/Public/AutoGen/MetadataView.h","UMatchMakingRanking*":"BeamableCore/Public/AutoGen/MatchMakingRanking.h","ULeaderBoardViewResponse*":"BeamableCore/Public/AutoGen/LeaderBoardViewResponse.h","ULeaderboardDetails*":"BeamableCore/Public/AutoGen/LeaderboardDetails.h","UOrderRules*":"BeamableCore/Public/AutoGen/OrderRules.h","ULeaderboardRemoveEntryRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardRemoveEntryRequestBody.h","UMatchMakingMatchesPvpResponse*":"BeamableCore/Public/AutoGen/MatchMakingMatchesPvpResponse.h","ULeaderboardGetMatchRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardGetMatchRequestBody.h","ULeaderboardCreateRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardCreateRequestBody.h","ULeaderboardDetailsRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardDetailsRequestBody.h","UMatchMakingWindowResp*":"BeamableCore/Public/AutoGen/MatchMakingWindowResp.h","ULeaderboardSwapRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardSwapRequestBody.h","ULeaderboardAddRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardAddRequestBody.h","ULeaderboardMembershipResponse*":"BeamableCore/Public/AutoGen/LeaderboardMembershipResponse.h","UPasswordUpdateConfirmation*":"BeamableCore/Public/AutoGen/PasswordUpdateConfirmation.h","UDeviceIdAvailableRequestBody*":"BeamableCore/Public/AutoGen/DeviceIdAvailableRequestBody.h","UAccountUpdate*":"BeamableCore/Public/AutoGen/AccountUpdate.h","UEmailUpdateRequestBody*":"BeamableCore/Public/AutoGen/EmailUpdateRequestBody.h","UThirdPartyAssociation*":"BeamableCore/Public/AutoGen/ThirdPartyAssociation.h","UDeleteDevicesRequestBody*":"BeamableCore/Public/AutoGen/DeleteDevicesRequestBody.h","UAccountPersonallyIdentifiableInformationResponse*":"BeamableCore/Public/AutoGen/AccountPersonallyIdentifiableInformationResponse.h","UAccountPortalView*":"BeamableCore/Public/AutoGen/AccountPortalView.h","USearchAccountsRequestBody*":"BeamableCore/Public/AutoGen/SearchAccountsRequestBody.h","UPasswordUpdateRequestBody*":"BeamableCore/Public/AutoGen/PasswordUpdateRequestBody.h","UPaymentAuditEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentAuditEntryViewModel.h","UExternalIdentityAvailableApiRequestBody*":"BeamableCore/Public/AutoGen/ExternalIdentityAvailableApiRequestBody.h","UAccountPlayerView*":"BeamableCore/Public/AutoGen/AccountPlayerView.h","UPaymentHistoryEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentHistoryEntryViewModel.h","UAccountAvailableResponse*":"BeamableCore/Public/AutoGen/AccountAvailableResponse.h","UCreateElevatedAccountRequestBody*":"BeamableCore/Public/AutoGen/CreateElevatedAccountRequestBody.h","UEntitlementGenerator*":"BeamableCore/Public/AutoGen/EntitlementGenerator.h","UStatsResponse*":"BeamableCore/Public/AutoGen/StatsResponse.h","UAttachExternalIdentityApiResponse*":"BeamableCore/Public/AutoGen/AttachExternalIdentityApiResponse.h","URoleMapping*":"BeamableCore/Public/AutoGen/RoleMapping.h","UAccountRegistration*":"BeamableCore/Public/AutoGen/AccountRegistration.h","UAttachExternalIdentityApiRequestBody*":"BeamableCore/Public/AutoGen/AttachExternalIdentityApiRequestBody.h","UEmailUpdateConfirmation*":"BeamableCore/Public/AutoGen/EmailUpdateConfirmation.h","UGetAdminsResponse*":"BeamableCore/Public/AutoGen/GetAdminsResponse.h","UPaymentDetailsEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentDetailsEntryViewModel.h","UCurrencyChange*":"BeamableCore/Public/AutoGen/CurrencyChange.h","UEntitlementClaimWindow*":"BeamableCore/Public/AutoGen/EntitlementClaimWindow.h","UGamerTagAssociation*":"BeamableCore/Public/AutoGen/GamerTagAssociation.h","UChallengeSolution*":"BeamableCore/Public/AutoGen/ChallengeSolution.h","UDeleteExternalIdentityApiRequestBody*":"BeamableCore/Public/AutoGen/DeleteExternalIdentityApiRequestBody.h","UThirdPartyAvailableRequestBody*":"BeamableCore/Public/AutoGen/ThirdPartyAvailableRequestBody.h","UAccountSearchResponse*":"BeamableCore/Public/AutoGen/AccountSearchResponse.h","UListAuditResponse*":"BeamableCore/Public/AutoGen/ListAuditResponse.h","UAccountAvailableRequestBody*":"BeamableCore/Public/AutoGen/AccountAvailableRequestBody.h","UFindAccountRequestBody*":"BeamableCore/Public/AutoGen/FindAccountRequestBody.h","UAccountsBasicAccount*":"BeamableCore/Public/AutoGen/AccountsBasicAccount.h","UAccountRolesReport*":"BeamableCore/Public/AutoGen/AccountRolesReport.h","UDeleteThirdPartyAssociation*":"BeamableCore/Public/AutoGen/DeleteThirdPartyAssociation.h","UDeleteRoleRequestBody*":"BeamableCore/Public/AutoGen/DeleteRoleRequestBody.h","UUpdateRole*":"BeamableCore/Public/AutoGen/UpdateRole.h","UAvailableRolesResponse*":"BeamableCore/Public/AutoGen/AvailableRolesResponse.h","URealmRolesReport*":"BeamableCore/Public/AutoGen/RealmRolesReport.h","UTransferThirdPartyAssociation*":"BeamableCore/Public/AutoGen/TransferThirdPartyAssociation.h","UAccountsObjectAccount*":"BeamableCore/Public/AutoGen/AccountsObjectAccount.h","UStatUpdateRequestBody*":"BeamableCore/Public/AutoGen/StatUpdateRequestBody.h","UStatsUnsubscribeRequestBody*":"BeamableCore/Public/AutoGen/StatsUnsubscribeRequestBody.h","UStatsSubscribeRequestBody*":"BeamableCore/Public/AutoGen/StatsSubscribeRequestBody.h","UStatsSearchResponse*":"BeamableCore/Public/AutoGen/StatsSearchResponse.h","UNetworkSerializable*":"BeamableCore/Public/AutoGen/NetworkSerializable.h","UBatchReadStatsRequestBody*":"BeamableCore/Public/AutoGen/BatchReadStatsRequestBody.h","UBatchSetStatsRequestBody*":"BeamableCore/Public/AutoGen/BatchSetStatsRequestBody.h","UStatsSearchRequestBody*":"BeamableCore/Public/AutoGen/StatsSearchRequestBody.h","UStatsSearchCriteria*":"BeamableCore/Public/AutoGen/StatsSearchCriteria.h","UBatchReadStatsResponse*":"BeamableCore/Public/AutoGen/BatchReadStatsResponse.h","USearchExtendedResponse*":"BeamableCore/Public/AutoGen/SearchExtendedResponse.h","USearchExtendedRequestBody*":"BeamableCore/Public/AutoGen/SearchExtendedRequestBody.h","UStatUpdateRequestStringListFormat*":"BeamableCore/Public/AutoGen/StatUpdateRequestStringListFormat.h","UStatRequestBody*":"BeamableCore/Public/AutoGen/StatRequestBody.h","UStatStringListEntry*":"BeamableCore/Public/AutoGen/StatStringListEntry.h","URewardsResponse*":"BeamableCore/Public/AutoGen/RewardsResponse.h","UGroupStatus*":"BeamableCore/Public/AutoGen/GroupStatus.h","UGetPlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/GetPlayerStatusRequestBody.h","UGetPlayerStatusResponse*":"BeamableCore/Public/AutoGen/GetPlayerStatusResponse.h","URewardsRequestBody*":"BeamableCore/Public/AutoGen/RewardsRequestBody.h","UScoreRequestBody*":"BeamableCore/Public/AutoGen/ScoreRequestBody.h","UAdminGetPlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/AdminGetPlayerStatusRequestBody.h","UGetGroupStatusRequestBody*":"BeamableCore/Public/AutoGen/GetGroupStatusRequestBody.h","UGetChampionsResponse*":"BeamableCore/Public/AutoGen/GetChampionsResponse.h","UTournamentClientView*":"BeamableCore/Public/AutoGen/TournamentClientView.h","UGetStatusForGroupsResponse*":"BeamableCore/Public/AutoGen/GetStatusForGroupsResponse.h","UGetStandingsRequestBody*":"BeamableCore/Public/AutoGen/GetStandingsRequestBody.h","UTournamentEntry*":"BeamableCore/Public/AutoGen/TournamentEntry.h","UPlayerStatusUpdate*":"BeamableCore/Public/AutoGen/PlayerStatusUpdate.h","UTournamentQueryResponse*":"BeamableCore/Public/AutoGen/TournamentQueryResponse.h","UPlayerStatus*":"BeamableCore/Public/AutoGen/PlayerStatus.h","UCompletedStatus*":"BeamableCore/Public/AutoGen/CompletedStatus.h","UGetStandingsResponse*":"BeamableCore/Public/AutoGen/GetStandingsResponse.h","UTournamentQueryRequestBody*":"BeamableCore/Public/AutoGen/TournamentQueryRequestBody.h","UTournamentCurrencyReward*":"BeamableCore/Public/AutoGen/TournamentCurrencyReward.h","UJoinRequestBody*":"BeamableCore/Public/AutoGen/JoinRequestBody.h","UGetGroupsResponse*":"BeamableCore/Public/AutoGen/GetGroupsResponse.h","UTournamentGroupEntry*":"BeamableCore/Public/AutoGen/TournamentGroupEntry.h","UGetStatusForGroupsRequestBody*":"BeamableCore/Public/AutoGen/GetStatusForGroupsRequestBody.h","UGetGroupStatusResponse*":"BeamableCore/Public/AutoGen/GetGroupStatusResponse.h","UGetGroupsRequestBody*":"BeamableCore/Public/AutoGen/GetGroupsRequestBody.h","UAdminPlayerStatus*":"BeamableCore/Public/AutoGen/AdminPlayerStatus.h","UUpdatePlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/UpdatePlayerStatusRequestBody.h","UChampionScore*":"BeamableCore/Public/AutoGen/ChampionScore.h","UGetChampionsRequestBody*":"BeamableCore/Public/AutoGen/GetChampionsRequestBody.h","UAdminGetPlayerStatusResponse*":"BeamableCore/Public/AutoGen/AdminGetPlayerStatusResponse.h","URevokeTokenRequestBody*":"BeamableCore/Public/AutoGen/RevokeTokenRequestBody.h","UListTokensRequestBody*":"BeamableCore/Public/AutoGen/ListTokensRequestBody.h","UContextInfo*":"BeamableCore/Public/AutoGen/ContextInfo.h","UGetTokenRequestBody*":"BeamableCore/Public/AutoGen/GetTokenRequestBody.h","UTokenRequestWrapper*":"BeamableCore/Public/AutoGen/TokenRequestWrapper.h","UListTokenResponseItem*":"BeamableCore/Public/AutoGen/ListTokenResponseItem.h","UListTokenResponse*":"BeamableCore/Public/AutoGen/ListTokenResponse.h","UTokenResponse*":"BeamableCore/Public/AutoGen/TokenResponse.h","UToken*":"BeamableCore/Public/AutoGen/Token.h","UObjectRequestBody*":"BeamableCore/Public/AutoGen/ObjectRequestBody.h","UObjectRequests*":"BeamableCore/Public/AutoGen/ObjectRequests.h","UObjectsMetadataResponse*":"BeamableCore/Public/AutoGen/ObjectsMetadataResponse.h","UURLSResponse*":"BeamableCore/Public/AutoGen/URLSResponse.h","UCloudsavingBasicURLResponse*":"BeamableCore/Public/AutoGen/CloudsavingBasicURLResponse.h","UCloudsavingBasicReference*":"BeamableCore/Public/AutoGen/CloudsavingBasicReference.h","UObjectMetadataResponse*":"BeamableCore/Public/AutoGen/ObjectMetadataResponse.h","UMetadataPair*":"BeamableCore/Public/AutoGen/MetadataPair.h","UCloudsavingBasicManifest*":"BeamableCore/Public/AutoGen/CloudsavingBasicManifest.h","UPlayerBasicCloudDataRequestBody*":"BeamableCore/Public/AutoGen/PlayerBasicCloudDataRequestBody.h","UUploadRequestsFromPortal*":"BeamableCore/Public/AutoGen/UploadRequestsFromPortal.h","UUploadRequests*":"BeamableCore/Public/AutoGen/UploadRequests.h","UReplaceObjectsRequestBody*":"BeamableCore/Public/AutoGen/ReplaceObjectsRequestBody.h","UUploadRequestBody*":"BeamableCore/Public/AutoGen/UploadRequestBody.h","UUploadRequestFromPortal*":"BeamableCore/Public/AutoGen/UploadRequestFromPortal.h","UCompletePurchaseRequestBody*":"BeamableCore/Public/AutoGen/CompletePurchaseRequestBody.h","UGetProductsResponse*":"BeamableCore/Public/AutoGen/GetProductsResponse.h","UTrackPurchaseRequestBody*":"BeamableCore/Public/AutoGen/TrackPurchaseRequestBody.h","UFacebookUpdatedEntry*":"BeamableCore/Public/AutoGen/FacebookUpdatedEntry.h","UGetPricesRequestBody*":"BeamableCore/Public/AutoGen/GetPricesRequestBody.h","UFacebookPaymentUpdateRequestBody*":"BeamableCore/Public/AutoGen/FacebookPaymentUpdateRequestBody.h","UGetOrderInfoRequestBody*":"BeamableCore/Public/AutoGen/GetOrderInfoRequestBody.h","UListAuditRequestBody*":"BeamableCore/Public/AutoGen/ListAuditRequestBody.h","UProductView*":"BeamableCore/Public/AutoGen/ProductView.h","UFailPurchaseRequestBody*":"BeamableCore/Public/AutoGen/FailPurchaseRequestBody.h","UBeginPurchaseRequestBody*":"BeamableCore/Public/AutoGen/BeginPurchaseRequestBody.h","USteamOrderInfoItem*":"BeamableCore/Public/AutoGen/SteamOrderInfoItem.h","UVerifyPurchaseRequestBody*":"BeamableCore/Public/AutoGen/VerifyPurchaseRequestBody.h","USubscriptionVerificationRequestBody*":"BeamableCore/Public/AutoGen/SubscriptionVerificationRequestBody.h","UGetProductResponse*":"BeamableCore/Public/AutoGen/GetProductResponse.h","ULocalizedPriceMap*":"BeamableCore/Public/AutoGen/LocalizedPriceMap.h","ULocalizedPrice*":"BeamableCore/Public/AutoGen/LocalizedPrice.h","UPaymentResultResponse*":"BeamableCore/Public/AutoGen/PaymentResultResponse.h","UBeginPurchaseResponse*":"BeamableCore/Public/AutoGen/BeginPurchaseResponse.h","USteamOrderInfoResponse*":"BeamableCore/Public/AutoGen/SteamOrderInfoResponse.h","UGetProductRequestBody*":"BeamableCore/Public/AutoGen/GetProductRequestBody.h","UCancelPurchaseRequestBody*":"BeamableCore/Public/AutoGen/CancelPurchaseRequestBody.h","USteamAuthRequestBody*":"BeamableCore/Public/AutoGen/SteamAuthRequestBody.h","UFacebookPaymentUpdateResponse*":"BeamableCore/Public/AutoGen/FacebookPaymentUpdateResponse.h","USubscriptionVerificationResponse*":"BeamableCore/Public/AutoGen/SubscriptionVerificationResponse.h","UEmptyRsp*":"BeamableCore/Public/AutoGen/EmptyRsp.h","USendNotification*":"BeamableCore/Public/AutoGen/SendNotification.h","URegisterReq*":"BeamableCore/Public/AutoGen/RegisterReq.h","USendReq*":"BeamableCore/Public/AutoGen/SendReq.h","USendMsg*":"BeamableCore/Public/AutoGen/SendMsg.h","UNotificationRequestData*":"BeamableCore/Public/AutoGen/NotificationRequestData.h","UServerEvent*":"BeamableCore/Public/AutoGen/ServerEvent.h","UNotificationRequestBody*":"BeamableCore/Public/AutoGen/NotificationRequestBody.h","USubscriberDetailsResponse*":"BeamableCore/Public/AutoGen/SubscriberDetailsResponse.h","UPromotable*":"BeamableCore/Public/AutoGen/Promotable.h","UArchiveProjectRequestBody*":"BeamableCore/Public/AutoGen/ArchiveProjectRequestBody.h","UUpdateGameHierarchyRequestBody*":"BeamableCore/Public/AutoGen/UpdateGameHierarchyRequestBody.h","ULaunchMessageListResponse*":"BeamableCore/Public/AutoGen/LaunchMessageListResponse.h","UCustomerResponse*":"BeamableCore/Public/AutoGen/CustomerResponse.h","UCustomersResponse*":"BeamableCore/Public/AutoGen/CustomersResponse.h","UCreatePlanRequestBody*":"BeamableCore/Public/AutoGen/CreatePlanRequestBody.h","UContentLimits*":"BeamableCore/Public/AutoGen/ContentLimits.h","UServiceLimits*":"BeamableCore/Public/AutoGen/ServiceLimits.h","UFailedInFlightFilterRequestBody*":"BeamableCore/Public/AutoGen/FailedInFlightFilterRequestBody.h","UGatewayLimits*":"BeamableCore/Public/AutoGen/GatewayLimits.h","URealmConfigChangeRequestBody*":"BeamableCore/Public/AutoGen/RealmConfigChangeRequestBody.h","URealmConfiguration*":"BeamableCore/Public/AutoGen/RealmConfiguration.h","UNewCustomerRequestBody*":"BeamableCore/Public/AutoGen/NewCustomerRequestBody.h","UPromoteRealmResponseOld*":"BeamableCore/Public/AutoGen/PromoteRealmResponseOld.h","UCustomerView*":"BeamableCore/Public/AutoGen/CustomerView.h","UGetGameResponse*":"BeamableCore/Public/AutoGen/GetGameResponse.h","UPromoteRealmRequestBody*":"BeamableCore/Public/AutoGen/PromoteRealmRequestBody.h","UCreateLaunchMessageRequestBody*":"BeamableCore/Public/AutoGen/CreateLaunchMessageRequestBody.h","URealmConfigSaveRequestBody*":"BeamableCore/Public/AutoGen/RealmConfigSaveRequestBody.h","UInFlightFailureResponse*":"BeamableCore/Public/AutoGen/InFlightFailureResponse.h","UPromotionScope*":"BeamableCore/Public/AutoGen/PromotionScope.h","UServicePlan*":"BeamableCore/Public/AutoGen/ServicePlan.h","UCustomerViewResponse*":"BeamableCore/Public/AutoGen/CustomerViewResponse.h","UAliasAvailableResponse*":"BeamableCore/Public/AutoGen/AliasAvailableResponse.h","URealmPromotion*":"BeamableCore/Public/AutoGen/RealmPromotion.h","UBeamoLimits*":"BeamableCore/Public/AutoGen/BeamoLimits.h","UProject*":"BeamableCore/Public/AutoGen/Project.h","URedisShardRequestBody*":"BeamableCore/Public/AutoGen/RedisShardRequestBody.h","URealmConfigResponse*":"BeamableCore/Public/AutoGen/RealmConfigResponse.h","UCustomer*":"BeamableCore/Public/AutoGen/Customer.h","UAliasAvailableRequestBody*":"BeamableCore/Public/AutoGen/AliasAvailableRequestBody.h","UPromotion*":"BeamableCore/Public/AutoGen/Promotion.h","UGetGameRequestBody*":"BeamableCore/Public/AutoGen/GetGameRequestBody.h","UInFlightFailure*":"BeamableCore/Public/AutoGen/InFlightFailure.h","UBatchDeleteInFlightRequestBody*":"BeamableCore/Public/AutoGen/BatchDeleteInFlightRequestBody.h","UWebSocketConfiguration*":"BeamableCore/Public/AutoGen/WebSocketConfiguration.h","UNewCustomerResponse*":"BeamableCore/Public/AutoGen/NewCustomerResponse.h","UDataDomain*":"BeamableCore/Public/AutoGen/DataDomain.h","UServicePlansResponse*":"BeamableCore/Public/AutoGen/ServicePlansResponse.h","URenameProjectRequestBody*":"BeamableCore/Public/AutoGen/RenameProjectRequestBody.h","UNewGameRequestBody*":"BeamableCore/Public/AutoGen/NewGameRequestBody.h","UCreateProjectRequestBody*":"BeamableCore/Public/AutoGen/CreateProjectRequestBody.h","UUnarchiveProjectRequestBody*":"BeamableCore/Public/AutoGen/UnarchiveProjectRequestBody.h","URedisShard*":"BeamableCore/Public/AutoGen/RedisShard.h","UPromoteRealmResponse*":"BeamableCore/Public/AutoGen/PromoteRealmResponse.h","URemoveLaunchMessageRequestBody*":"BeamableCore/Public/AutoGen/RemoveLaunchMessageRequestBody.h","UProjectView*":"BeamableCore/Public/AutoGen/ProjectView.h","URealmsBasicAccount*":"BeamableCore/Public/AutoGen/RealmsBasicAccount.h","UPlayerId*":"BeamableCore/Public/AutoGen/PlayerId.h","UFriend*":"BeamableCore/Public/AutoGen/Friend.h","UInvite*":"BeamableCore/Public/AutoGen/Invite.h","USocial*":"BeamableCore/Public/AutoGen/Social.h","UGetSocialStatusesResponse*":"BeamableCore/Public/AutoGen/GetSocialStatusesResponse.h","UPlayerIdRequestBody*":"BeamableCore/Public/AutoGen/PlayerIdRequestBody.h","UFriendshipStatus*":"BeamableCore/Public/AutoGen/FriendshipStatus.h","UMakeFriendshipRequestBody*":"BeamableCore/Public/AutoGen/MakeFriendshipRequestBody.h","UGetSocialStatusesRequestBody*":"BeamableCore/Public/AutoGen/GetSocialStatusesRequestBody.h","UImportFriendsRequestBody*":"BeamableCore/Public/AutoGen/ImportFriendsRequestBody.h","USendFriendRequestBody*":"BeamableCore/Public/AutoGen/SendFriendRequestBody.h","UOfferDefinition*":"BeamableCore/Public/AutoGen/OfferDefinition.h","UEntitlementRequirement*":"BeamableCore/Public/AutoGen/EntitlementRequirement.h","UGetSkusReq*":"BeamableCore/Public/AutoGen/GetSkusReq.h","UListing*":"BeamableCore/Public/AutoGen/Listing.h","UResultResponse*":"BeamableCore/Public/AutoGen/ResultResponse.h","USKU*":"BeamableCore/Public/AutoGen/SKU.h","UGetCatalogResponse*":"BeamableCore/Public/AutoGen/GetCatalogResponse.h","USKUDefinitions*":"BeamableCore/Public/AutoGen/SKUDefinitions.h","UPrice*":"BeamableCore/Public/AutoGen/Price.h","UCommerceLootRoll*":"BeamableCore/Public/AutoGen/CommerceLootRoll.h","UPeriod*":"BeamableCore/Public/AutoGen/Period.h","UOfferConstraint*":"BeamableCore/Public/AutoGen/OfferConstraint.h","UGetSKUsResponse*":"BeamableCore/Public/AutoGen/GetSKUsResponse.h","UGetCatalogReq*":"BeamableCore/Public/AutoGen/GetCatalogReq.h","USaveCatalogRequestBody*":"BeamableCore/Public/AutoGen/SaveCatalogRequestBody.h","USaveSKUsRequestBody*":"BeamableCore/Public/AutoGen/SaveSKUsRequestBody.h","UOfferRequirement*":"BeamableCore/Public/AutoGen/OfferRequirement.h","UCohortRequirement*":"BeamableCore/Public/AutoGen/CohortRequirement.h","UCatalog*":"BeamableCore/Public/AutoGen/Catalog.h","UStore*":"BeamableCore/Public/AutoGen/Store.h","UReportPurchaseRequestBody*":"BeamableCore/Public/AutoGen/ReportPurchaseRequestBody.h","UGetActiveListingRequestBody*":"BeamableCore/Public/AutoGen/GetActiveListingRequestBody.h","UGetOffersReq*":"BeamableCore/Public/AutoGen/GetOffersReq.h","UClearStatusRequestBody*":"BeamableCore/Public/AutoGen/ClearStatusRequestBody.h","UPlayerListingView*":"BeamableCore/Public/AutoGen/PlayerListingView.h","UStatSubscriptionNotification*":"BeamableCore/Public/AutoGen/StatSubscriptionNotification.h","UGetTotalCouponResponse*":"BeamableCore/Public/AutoGen/GetTotalCouponResponse.h","UGiveCouponReq*":"BeamableCore/Public/AutoGen/GiveCouponReq.h","UGetStoresReq*":"BeamableCore/Public/AutoGen/GetStoresReq.h","UPlayerStoreView*":"BeamableCore/Public/AutoGen/PlayerStoreView.h","UPurchaseRequestBody*":"BeamableCore/Public/AutoGen/PurchaseRequestBody.h","UPlayerOfferView*":"BeamableCore/Public/AutoGen/PlayerOfferView.h","UActiveListingResponse*":"BeamableCore/Public/AutoGen/ActiveListingResponse.h","UUpdateListingCooldownRequestBody*":"BeamableCore/Public/AutoGen/UpdateListingCooldownRequestBody.h","UGetActiveOffersResponse*":"BeamableCore/Public/AutoGen/GetActiveOffersResponse.h","UCooldownModifierRequestBody*":"BeamableCore/Public/AutoGen/CooldownModifierRequestBody.h","UClientDataEntry*":"BeamableCore/Public/AutoGen/ClientDataEntry.h","URewardCalendarDay*":"BeamableCore/Public/AutoGen/RewardCalendarDay.h","UCalendarView*":"BeamableCore/Public/AutoGen/CalendarView.h","UCalendarClaimRequestBody*":"BeamableCore/Public/AutoGen/CalendarClaimRequestBody.h","UCalendarQueryResponse*":"BeamableCore/Public/AutoGen/CalendarQueryResponse.h","UListTagsResponse*":"BeamableCore/Public/AutoGen/ListTagsResponse.h","UWebhookComet*":"BeamableCore/Public/AutoGen/WebhookComet.h","UAnnouncementContent*":"BeamableCore/Public/AutoGen/AnnouncementContent.h","UAnnouncementContentResponse*":"BeamableCore/Public/AutoGen/AnnouncementContentResponse.h","ULocalizationRef*":"BeamableCore/Public/AutoGen/LocalizationRef.h","UAnnouncementAttachment*":"BeamableCore/Public/AutoGen/AnnouncementAttachment.h","URouteVariable*":"BeamableCore/Public/AutoGen/RouteVariable.h","UWebhookInvocationStrategy*":"BeamableCore/Public/AutoGen/WebhookInvocationStrategy.h","URouteParameter*":"BeamableCore/Public/AutoGen/RouteParameter.h","URouteVariables*":"BeamableCore/Public/AutoGen/RouteVariables.h","UPlayerReward*":"BeamableCore/Public/AutoGen/PlayerReward.h","UVariableReference*":"BeamableCore/Public/AutoGen/VariableReference.h","UAttachmentProperty*":"BeamableCore/Public/AutoGen/AttachmentProperty.h","URouteParameters*":"BeamableCore/Public/AutoGen/RouteParameters.h","UListDefinitionsResponse*":"BeamableCore/Public/AutoGen/ListDefinitionsResponse.h","UServiceRoute*":"BeamableCore/Public/AutoGen/ServiceRoute.h","UCurrencyChangeReward*":"BeamableCore/Public/AutoGen/CurrencyChangeReward.h","UDeleteAnnouncementRequestBody*":"BeamableCore/Public/AutoGen/DeleteAnnouncementRequestBody.h","UListTagsRequestBody*":"BeamableCore/Public/AutoGen/ListTagsRequestBody.h","UAnnouncementDto*":"BeamableCore/Public/AutoGen/AnnouncementDto.h","UWebhookReward*":"BeamableCore/Public/AutoGen/WebhookReward.h","UNewItemReward*":"BeamableCore/Public/AutoGen/NewItemReward.h","USearchAnnouncementsRequestBody*":"BeamableCore/Public/AutoGen/SearchAnnouncementsRequestBody.h","UAnnouncementRawResponse*":"BeamableCore/Public/AutoGen/AnnouncementRawResponse.h","UAnnouncementQuery*":"BeamableCore/Public/AutoGen/AnnouncementQuery.h","UAnnouncementState*":"BeamableCore/Public/AutoGen/AnnouncementState.h","UAnnouncementRequestBody*":"BeamableCore/Public/AutoGen/AnnouncementRequestBody.h","UAnnouncementQueryResponse*":"BeamableCore/Public/AutoGen/AnnouncementQueryResponse.h","UAnnouncementView*":"BeamableCore/Public/AutoGen/AnnouncementView.h","UUpdateMailRequestBody*":"BeamableCore/Public/AutoGen/UpdateMailRequestBody.h","UGetTemplateRequestBody*":"BeamableCore/Public/AutoGen/GetTemplateRequestBody.h","UAttachmentRequestBody*":"BeamableCore/Public/AutoGen/AttachmentRequestBody.h","UMailResponse*":"BeamableCore/Public/AutoGen/MailResponse.h","UMailTemplate*":"BeamableCore/Public/AutoGen/MailTemplate.h","USendMailRequestBody*":"BeamableCore/Public/AutoGen/SendMailRequestBody.h","UAttachment*":"BeamableCore/Public/AutoGen/Attachment.h","UAcceptMultipleAttachments*":"BeamableCore/Public/AutoGen/AcceptMultipleAttachments.h","UGetMailDetailsRequestBody*":"BeamableCore/Public/AutoGen/GetMailDetailsRequestBody.h","UMessage*":"BeamableCore/Public/AutoGen/Message.h","UMailSuccessResponse*":"BeamableCore/Public/AutoGen/MailSuccessResponse.h","UBulkSendMailRequestBody*":"BeamableCore/Public/AutoGen/BulkSendMailRequestBody.h","UMailRewards*":"BeamableCore/Public/AutoGen/MailRewards.h","UMailSearchClause*":"BeamableCore/Public/AutoGen/MailSearchClause.h","UMailSearchRequestBody*":"BeamableCore/Public/AutoGen/MailSearchRequestBody.h","UMailSearchResponse*":"BeamableCore/Public/AutoGen/MailSearchResponse.h","USendMailObjectRequestBody*":"BeamableCore/Public/AutoGen/SendMailObjectRequestBody.h","USendMailResponse*":"BeamableCore/Public/AutoGen/SendMailResponse.h","UMyMailUpdate*":"BeamableCore/Public/AutoGen/MyMailUpdate.h","UMailQueryResponse*":"BeamableCore/Public/AutoGen/MailQueryResponse.h","UBulkUpdateMailObjectRequestBody*":"BeamableCore/Public/AutoGen/BulkUpdateMailObjectRequestBody.h","UListMailCategoriesResponse*":"BeamableCore/Public/AutoGen/ListMailCategoriesResponse.h","UMailSearchResponseClause*":"BeamableCore/Public/AutoGen/MailSearchResponseClause.h","USessionHistoryRequestBody*":"BeamableCore/Public/AutoGen/SessionHistoryRequestBody.h","USessionHeartbeat*":"BeamableCore/Public/AutoGen/SessionHeartbeat.h","UEra*":"BeamableCore/Public/AutoGen/Era.h","UOnlineStatusResponses*":"BeamableCore/Public/AutoGen/OnlineStatusResponses.h","USessionHistoryResponse*":"BeamableCore/Public/AutoGen/SessionHistoryResponse.h","ULocalDate*":"BeamableCore/Public/AutoGen/LocalDate.h","UStartSessionRequestBody*":"BeamableCore/Public/AutoGen/StartSessionRequestBody.h","UCohortEntry*":"BeamableCore/Public/AutoGen/CohortEntry.h","UOnlineStatusRequestBody*":"BeamableCore/Public/AutoGen/OnlineStatusRequestBody.h","USessionClientHistoryRequestBody*":"BeamableCore/Public/AutoGen/SessionClientHistoryRequestBody.h","UPlayerOnlineStatusResponse*":"BeamableCore/Public/AutoGen/PlayerOnlineStatusResponse.h","UGamerTag*":"BeamableCore/Public/AutoGen/GamerTag.h","USessionUser*":"BeamableCore/Public/AutoGen/SessionUser.h","USessionLanguageContext*":"BeamableCore/Public/AutoGen/SessionLanguageContext.h","UIsoChronology*":"BeamableCore/Public/AutoGen/IsoChronology.h","USessionClientHistoryResponse*":"BeamableCore/Public/AutoGen/SessionClientHistoryResponse.h","UPaymentTotal*":"BeamableCore/Public/AutoGen/PaymentTotal.h","UStartSessionResponse*":"BeamableCore/Public/AutoGen/StartSessionResponse.h","UBaseContentReference*":"BeamableCore/Public/AutoGen/BaseContentReference.h","UClientManifestResponse*":"BeamableCore/Public/AutoGen/ClientManifestResponse.h","FClientContentInfoTableRow":"BeamableCore/Public/AutoGen/Rows/ClientContentInfoTableRow.h","UDiscordWhitelistedInfo*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/DiscordWhitelistedInfo.h","UPrepareNewPlayerRequestArgs*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/PrepareNewPlayerRequestArgs.h","UUpgradeItemRequestArgs*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/UpgradeItemRequestArgs.h","UIncrementStatRequestArgs*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/IncrementStatRequestArgs.h","UGetSamlpeStatRequestArgs*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/GetSamlpeStatRequestArgs.h","UDiscordSampleMsUpdateFromDiscordResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/DiscordSampleMsUpdateFromDiscordResponse.h","ULiveOpsDemoMSPrepareNewPlayerResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/LiveOpsDemoMSPrepareNewPlayerResponse.h","ULiveOpsDemoMSUpgradeItemResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/LiveOpsDemoMSUpgradeItemResponse.h","ULiveOpsDemoMSIncrementStatResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/LiveOpsDemoMSIncrementStatResponse.h","ULiveOpsDemoMSGetSamlpeStatResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/LiveOpsDemoMSGetSamlpeStatResponse.h"}} \ No newline at end of file +{"InEngineTypeToIncludePaths":{"FOptionalString":"BeamableCore/Public/AutoGen/Optionals/OptionalString.h","FOptionalBeamClientPermission":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamClientPermission.h","FOptionalBeamExternalIdentity":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamExternalIdentity.h","FOptionalBeamTag":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamTag.h","FOptionalBeamRemoteContentManifestEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamRemoteContentManifestEntry.h","FOptionalBeamCid":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamCid.h","FOptionalBeamPid":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamPid.h","FOptionalInt32":"BeamableCore/Public/AutoGen/Optionals/OptionalInt32.h","FOptionalArrayOfLobby":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfLobby.h","FOptionalLobbyRestriction":"BeamableCore/Public/AutoGen/Optionals/OptionalLobbyRestriction.h","FOptionalBeamContentId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamContentId.h","FOptionalArrayOfBeamTag":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamTag.h","FOptionalMapOfString":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfString.h","FOptionalMatchType":"BeamableCore/Public/AutoGen/Optionals/OptionalMatchType.h","FOptionalBeamGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamGamerTag.h","FOptionalArrayOfLobbyPlayer":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfLobbyPlayer.h","FOptionalUpdateData":"BeamableCore/Public/AutoGen/Optionals/OptionalUpdateData.h","FOptionalBool":"BeamableCore/Public/AutoGen/Optionals/OptionalBool.h","FOptionalArrayOfString":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfString.h","FOptionalArrayOfTeamContentProto":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTeamContentProto.h","FOptionalArrayOfBeamGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamGamerTag.h","FOptionalArrayOfOnlineStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfOnlineStatus.h","FOptionalPresenceStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalPresenceStatus.h","FOptionalArrayOfTeam":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTeam.h","FOptionalArrayOfTicket":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfTicket.h","FOptionalMapOfDouble":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfDouble.h","FOptionalArrayOfBeamContentId":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamContentId.h","FOptionalArrayOfPartyInvitation":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfPartyInvitation.h","FOptionalBeamContentManifestId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamContentManifestId.h","FOptionalInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalInt64.h","FOptionalArrayOfMapOfContentMeta":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMapOfContentMeta.h","FOptionalSupportedFederation":"BeamableCore/Public/AutoGen/Optionals/OptionalSupportedFederation.h","FOptionalArrayOfServiceStorageReference":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceStorageReference.h","FOptionalArrayOfSupportedFederation":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfSupportedFederation.h","FOptionalArrayOfServiceDependencyReference":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceDependencyReference.h","FOptionalArrayOfDatabaseMeasurement":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfDatabaseMeasurement.h","FOptionalArrayOfServiceComponent":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceComponent.h","FOptionalArrayOfServiceStorageStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfServiceStorageStatus.h","FOptionalBeamoBasicManifestChecksum":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamoBasicManifestChecksum.h","FOptionalArrayOfEventInventoryRewardCurrency":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventInventoryRewardCurrency.h","FOptionalArrayOfItemCreateRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemCreateRequestBody.h","FOptionalArrayOfEventInventoryRewardItem":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventInventoryRewardItem.h","FOptionalDouble":"BeamableCore/Public/AutoGen/Optionals/OptionalDouble.h","FOptionalArrayOfEventRewardObtain":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRewardObtain.h","FOptionalEventPlayerPhaseView":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPlayerPhaseView.h","FOptionalEventPlayerGroupState":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPlayerGroupState.h","FOptionalEventGroupRewards":"BeamableCore/Public/AutoGen/Optionals/OptionalEventGroupRewards.h","FOptionalLeaderboardCohortSettings":"BeamableCore/Public/AutoGen/Optionals/OptionalLeaderboardCohortSettings.h","FOptionalArrayOfEventRewardContent":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRewardContent.h","FOptionalSchedule":"BeamableCore/Public/AutoGen/Optionals/OptionalSchedule.h","FOptionalArrayOfInFlightMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInFlightMessage.h","FOptionalEventPhaseRuntime":"BeamableCore/Public/AutoGen/Optionals/OptionalEventPhaseRuntime.h","FOptionalArrayOfEventPhaseTime":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventPhaseTime.h","FOptionalArrayOfScheduleDefinition":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfScheduleDefinition.h","FOptionalArrayOfEventRule":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfEventRule.h","FOptionalArrayOfGroupScoreBinding":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupScoreBinding.h","FOptionalArrayOfGroupUserMember":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupUserMember.h","FOptionalArrayOfDonationRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfDonationRequestBody.h","FOptionalMapOfDonationRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfDonationRequestBody.h","FOptionalArrayOfGroupRole":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfGroupRole.h","FOptionalArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyProperty.h","FOptionalFederationInfo":"BeamableCore/Public/AutoGen/Optionals/OptionalFederationInfo.h","FOptionalMapOfInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfInt64.h","FOptionalMapOfArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalMapOfArrayOfCurrencyProperty.h","FOptionalArrayOfItemUpdateRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemUpdateRequestBody.h","FOptionalArrayOfItemDeleteRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfItemDeleteRequestBody.h","FOptionalArrayOfRankEntryStat":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRankEntryStat.h","FOptionalRankEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalRankEntry.h","FOptionalOrderRules":"BeamableCore/Public/AutoGen/Optionals/OptionalOrderRules.h","FOptionalMetadataView":"BeamableCore/Public/AutoGen/Optionals/OptionalMetadataView.h","FOptionalArrayOfBeamExternalIdentity":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamExternalIdentity.h","FOptionalGamerTagAssociation":"BeamableCore/Public/AutoGen/Optionals/OptionalGamerTagAssociation.h","FOptionalArrayOfRoleMapping":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRoleMapping.h","FOptionalArrayOfCurrencyChange":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyChange.h","FOptionalEntitlementClaimWindow":"BeamableCore/Public/AutoGen/Optionals/OptionalEntitlementClaimWindow.h","FOptionalChallengeSolution":"BeamableCore/Public/AutoGen/Optionals/OptionalChallengeSolution.h","FOptionalBeamStatsType":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamStatsType.h","FOptionalArrayOfStatStringListEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfStatStringListEntry.h","FOptionalArrayOfCompletedStatus":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCompletedStatus.h","FOptionalTournamentEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalTournamentEntry.h","FOptionalTournamentGroupEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalTournamentGroupEntry.h","FOptionalContextInfo":"BeamableCore/Public/AutoGen/Optionals/OptionalContextInfo.h","FOptionalBeamAccountId":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamAccountId.h","FOptionalArrayOfObjectRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfObjectRequestBody.h","FOptionalArrayOfMetadataPair":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMetadataPair.h","FOptionalSendNotification":"BeamableCore/Public/AutoGen/Optionals/OptionalSendNotification.h","FOptionalArrayOfInt64":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInt64.h","FOptionalBeamoLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalBeamoLimits.h","FOptionalContentLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalContentLimits.h","FOptionalGatewayLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalGatewayLimits.h","FOptionalServiceLimits":"BeamableCore/Public/AutoGen/Optionals/OptionalServiceLimits.h","FOptionalArrayOfRedisShard":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfRedisShard.h","FOptionalArrayOfBeamPid":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfBeamPid.h","FOptionalCommerceLootRoll":"BeamableCore/Public/AutoGen/Optionals/OptionalCommerceLootRoll.h","FOptionalPeriod":"BeamableCore/Public/AutoGen/Optionals/OptionalPeriod.h","FOptionalCatalog":"BeamableCore/Public/AutoGen/Optionals/OptionalCatalog.h","FOptionalArrayOfInt32":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfInt32.h","FOptionalPlayerReward":"BeamableCore/Public/AutoGen/Optionals/OptionalPlayerReward.h","FOptionalArrayOfPlayerStatRequirement":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfPlayerStatRequirement.h","FOptionalArrayOfAnnouncementAttachment":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAnnouncementAttachment.h","FOptionalArrayOfAttachmentProperty":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAttachmentProperty.h","FOptionalVariableReference":"BeamableCore/Public/AutoGen/Optionals/OptionalVariableReference.h","FOptionalArrayOfCurrencyChangeReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCurrencyChangeReward.h","FOptionalArrayOfWebhookReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfWebhookReward.h","FOptionalArrayOfNewItemReward":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfNewItemReward.h","FOptionalWebhookComet":"BeamableCore/Public/AutoGen/Optionals/OptionalWebhookComet.h","FOptionalMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalMessage.h","FOptionalMailRewards":"BeamableCore/Public/AutoGen/Optionals/OptionalMailRewards.h","FOptionalArrayOfAttachmentRequestBody":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfAttachmentRequestBody.h","FOptionalArrayOfMessage":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfMessage.h","FOptionalSessionLanguageContext":"BeamableCore/Public/AutoGen/Optionals/OptionalSessionLanguageContext.h","FOptionalArrayOfCohortEntry":"BeamableCore/Public/AutoGen/Optionals/OptionalArrayOfCohortEntry.h","FOptionalSessionUser":"BeamableCore/Public/AutoGen/Optionals/OptionalSessionUser.h","FOptionalGamerTag":"BeamableCore/Public/AutoGen/Optionals/OptionalGamerTag.h","FArrayOfString":"BeamableCore/Public/AutoGen/Arrays/ArrayOfString.h","FArrayOfLocalizedValue":"BeamableCore/Public/AutoGen/Arrays/ArrayOfLocalizedValue.h","FArrayOfCurrencyProperty":"BeamableCore/Public/AutoGen/Arrays/ArrayOfCurrencyProperty.h","FMapOfContentMeta":"BeamableCore/Public/AutoGen/Maps/MapOfContentMeta.h","FMapOfString":"BeamableCore/Public/AutoGen/Maps/MapOfString.h","ELobbyRestriction":"BeamableCore/Public/AutoGen/Enums/LobbyRestriction.h","EPresenceStatus":"BeamableCore/Public/AutoGen/Enums/PresenceStatus.h","EContentVisibility":"BeamableCore/Public/AutoGen/Enums/ContentVisibility.h","EContentType":"BeamableCore/Public/AutoGen/Enums/ContentType.h","EFederationType":"BeamableCore/Public/AutoGen/Enums/FederationType.h","EEventState":"BeamableCore/Public/AutoGen/Enums/EventState.h","EGroupType":"BeamableCore/Public/AutoGen/Enums/GroupType.h","EInvitationDirection":"BeamableCore/Public/AutoGen/Enums/InvitationDirection.h","EFriendSource":"BeamableCore/Public/AutoGen/Enums/FriendSource.h","EWebhookServiceType":"BeamableCore/Public/AutoGen/Enums/WebhookServiceType.h","EWebhookInvocationType":"BeamableCore/Public/AutoGen/Enums/WebhookInvocationType.h","EWebhookRetryType":"BeamableCore/Public/AutoGen/Enums/WebhookRetryType.h","URefreshTokenAuthRequestBody*":"BeamableCore/Public/AutoGen/RefreshTokenAuthRequestBody.h","UAuthResponse*":"BeamableCore/Public/AutoGen/AuthResponse.h","UProblemDetails*":"BeamableCore/Public/AutoGen/ProblemDetails.h","UServerTokenAuthRequestBody*":"BeamableCore/Public/AutoGen/ServerTokenAuthRequestBody.h","UServerTokenResponse*":"BeamableCore/Public/AutoGen/ServerTokenResponse.h","ULobbyQueryResponse*":"BeamableCore/Public/AutoGen/LobbyQueryResponse.h","UCreateLobby*":"BeamableCore/Public/AutoGen/CreateLobby.h","ULobby*":"BeamableCore/Public/AutoGen/Lobby.h","UJoinLobby*":"BeamableCore/Public/AutoGen/JoinLobby.h","URemoveFromLobby*":"BeamableCore/Public/AutoGen/RemoveFromLobby.h","UAcknowledge*":"BeamableCore/Public/AutoGen/Acknowledge.h","UUpdateLobby*":"BeamableCore/Public/AutoGen/UpdateLobby.h","UAddTags*":"BeamableCore/Public/AutoGen/AddTags.h","URemoveTags*":"BeamableCore/Public/AutoGen/RemoveTags.h","UCreateFederatedGameServer*":"BeamableCore/Public/AutoGen/CreateFederatedGameServer.h","UApiLobbiesServerPostLobbyResponse*":"BeamableCore/Public/AutoGen/ApiLobbiesServerPostLobbyResponse.h","UMatchType*":"BeamableCore/Public/AutoGen/MatchType.h","UUpdateData*":"BeamableCore/Public/AutoGen/UpdateData.h","ULobbyPlayer*":"BeamableCore/Public/AutoGen/LobbyPlayer.h","UTeamContentProto*":"BeamableCore/Public/AutoGen/TeamContentProto.h","UMessageRequestBody*":"BeamableCore/Public/AutoGen/MessageRequestBody.h","UApiMailboxPublishPostMailboxResponse*":"BeamableCore/Public/AutoGen/ApiMailboxPublishPostMailboxResponse.h","UCreateParty*":"BeamableCore/Public/AutoGen/CreateParty.h","UParty*":"BeamableCore/Public/AutoGen/Party.h","UUpdateParty*":"BeamableCore/Public/AutoGen/UpdateParty.h","UPromoteNewLeader*":"BeamableCore/Public/AutoGen/PromoteNewLeader.h","UInviteToParty*":"BeamableCore/Public/AutoGen/InviteToParty.h","UApiPartiesInvitePostPartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesInvitePostPartyResponse.h","UCancelInviteToParty*":"BeamableCore/Public/AutoGen/CancelInviteToParty.h","UApiPartiesInviteDeletePartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesInviteDeletePartyResponse.h","ULeaveParty*":"BeamableCore/Public/AutoGen/LeaveParty.h","UApiPartiesMembersDeletePartyResponse*":"BeamableCore/Public/AutoGen/ApiPartiesMembersDeletePartyResponse.h","UOnlineStatusQuery*":"BeamableCore/Public/AutoGen/OnlineStatusQuery.h","UPlayersStatusResponse*":"BeamableCore/Public/AutoGen/PlayersStatusResponse.h","UOnlineStatus*":"BeamableCore/Public/AutoGen/OnlineStatus.h","UMatch*":"BeamableCore/Public/AutoGen/Match.h","UTeam*":"BeamableCore/Public/AutoGen/Team.h","UTicket*":"BeamableCore/Public/AutoGen/Ticket.h","UTicketReservationRequestBody*":"BeamableCore/Public/AutoGen/TicketReservationRequestBody.h","UTicketReservationResponse*":"BeamableCore/Public/AutoGen/TicketReservationResponse.h","UApiMatchmakingTicketsDeleteTicketResponse*":"BeamableCore/Public/AutoGen/ApiMatchmakingTicketsDeleteTicketResponse.h","UPartyInvitesForPlayerResponse*":"BeamableCore/Public/AutoGen/PartyInvitesForPlayerResponse.h","UPartyInvitation*":"BeamableCore/Public/AutoGen/PartyInvitation.h","UApiPlayersPresencePutPlayerPresenceResponse*":"BeamableCore/Public/AutoGen/ApiPlayersPresencePutPlayerPresenceResponse.h","USetPresenceStatusRequestBody*":"BeamableCore/Public/AutoGen/SetPresenceStatusRequestBody.h","UReferenceSuperset*":"BeamableCore/Public/AutoGen/ReferenceSuperset.h","UBinaryDefinition*":"BeamableCore/Public/AutoGen/BinaryDefinition.h","UPullManifestRequestBody*":"BeamableCore/Public/AutoGen/PullManifestRequestBody.h","UGetManifestsResponse*":"BeamableCore/Public/AutoGen/GetManifestsResponse.h","USaveBinaryRequestBody*":"BeamableCore/Public/AutoGen/SaveBinaryRequestBody.h","UTextReference*":"BeamableCore/Public/AutoGen/TextReference.h","USaveBinaryResponse*":"BeamableCore/Public/AutoGen/SaveBinaryResponse.h","USaveTextRequestBody*":"BeamableCore/Public/AutoGen/SaveTextRequestBody.h","UTextDefinition*":"BeamableCore/Public/AutoGen/TextDefinition.h","UPutLocalizationsRequestBody*":"BeamableCore/Public/AutoGen/PutLocalizationsRequestBody.h","UContentOrText*":"BeamableCore/Public/AutoGen/ContentOrText.h","UCommonResponse*":"BeamableCore/Public/AutoGen/CommonResponse.h","UArchiveOrUnarchiveManifestsRequestBody*":"BeamableCore/Public/AutoGen/ArchiveOrUnarchiveManifestsRequestBody.h","UContentMeta*":"BeamableCore/Public/AutoGen/ContentMeta.h","UGetExactManifestRequestBody*":"BeamableCore/Public/AutoGen/GetExactManifestRequestBody.h","UBinaryReference*":"BeamableCore/Public/AutoGen/BinaryReference.h","UContentBasicGetManifestRequestBody*":"BeamableCore/Public/AutoGen/ContentBasicGetManifestRequestBody.h","UPullAllManifestsRequestBody*":"BeamableCore/Public/AutoGen/PullAllManifestsRequestBody.h","UClientManifestJsonResponse*":"BeamableCore/Public/AutoGen/ClientManifestJsonResponse.h","UGetManifestHistoryRequestBody*":"BeamableCore/Public/AutoGen/GetManifestHistoryRequestBody.h","UContentDefinition*":"BeamableCore/Public/AutoGen/ContentDefinition.h","UGetManifestRequestJson*":"BeamableCore/Public/AutoGen/GetManifestRequestJson.h","UContentBasicManifestChecksum*":"BeamableCore/Public/AutoGen/ContentBasicManifestChecksum.h","USaveContentRequestBody*":"BeamableCore/Public/AutoGen/SaveContentRequestBody.h","USaveManifestRequestBody*":"BeamableCore/Public/AutoGen/SaveManifestRequestBody.h","URepeatManifestRequestBody*":"BeamableCore/Public/AutoGen/RepeatManifestRequestBody.h","UContentBasicManifest*":"BeamableCore/Public/AutoGen/ContentBasicManifest.h","ULocalizationQuery*":"BeamableCore/Public/AutoGen/LocalizationQuery.h","UEmptyResponse*":"BeamableCore/Public/AutoGen/EmptyResponse.h","UGetLocalizationsResponse*":"BeamableCore/Public/AutoGen/GetLocalizationsResponse.h","UGetContentRequestBody*":"BeamableCore/Public/AutoGen/GetContentRequestBody.h","ULocalizedValue*":"BeamableCore/Public/AutoGen/LocalizedValue.h","UManifestChecksums*":"BeamableCore/Public/AutoGen/ManifestChecksums.h","USaveTextResponse*":"BeamableCore/Public/AutoGen/SaveTextResponse.h","UManifestSummary*":"BeamableCore/Public/AutoGen/ManifestSummary.h","UDeleteLocalizationRequestBody*":"BeamableCore/Public/AutoGen/DeleteLocalizationRequestBody.h","UGetManifestHistoryResponse*":"BeamableCore/Public/AutoGen/GetManifestHistoryResponse.h","USaveContentResponse*":"BeamableCore/Public/AutoGen/SaveContentResponse.h","UContentReference*":"BeamableCore/Public/AutoGen/ContentReference.h","UPullBeamoManifestRequestBody*":"BeamableCore/Public/AutoGen/PullBeamoManifestRequestBody.h","USupportedFederation*":"BeamableCore/Public/AutoGen/SupportedFederation.h","UGetLogsUrlRequestBody*":"BeamableCore/Public/AutoGen/GetLogsUrlRequestBody.h","UGetLogsUrlHeader*":"BeamableCore/Public/AutoGen/GetLogsUrlHeader.h","UUploadURL*":"BeamableCore/Public/AutoGen/UploadURL.h","UGetManifestsRequestBody*":"BeamableCore/Public/AutoGen/GetManifestsRequestBody.h","UGetCurrentManifestRequestBody*":"BeamableCore/Public/AutoGen/GetCurrentManifestRequestBody.h","UDatabasePerformanceRequestBody*":"BeamableCore/Public/AutoGen/DatabasePerformanceRequestBody.h","UServiceImageLayers*":"BeamableCore/Public/AutoGen/ServiceImageLayers.h","UMicroserviceRegistrationsQuery*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationsQuery.h","UPostManifestRequestBody*":"BeamableCore/Public/AutoGen/PostManifestRequestBody.h","UServiceStorageStatus*":"BeamableCore/Public/AutoGen/ServiceStorageStatus.h","UPASlowQuery*":"BeamableCore/Public/AutoGen/PASlowQuery.h","UGetSignedUrlResponse*":"BeamableCore/Public/AutoGen/GetSignedUrlResponse.h","UPreSignedUrlsResponse*":"BeamableCore/Public/AutoGen/PreSignedUrlsResponse.h","UConnectionString*":"BeamableCore/Public/AutoGen/ConnectionString.h","UServiceTemplate*":"BeamableCore/Public/AutoGen/ServiceTemplate.h","UMicroserviceRegistrationRequestBody*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationRequestBody.h","UBeamoBasicGetManifestRequestBody*":"BeamableCore/Public/AutoGen/BeamoBasicGetManifestRequestBody.h","UDatabaseMeasurement*":"BeamableCore/Public/AutoGen/DatabaseMeasurement.h","UMicroserviceRegistrations*":"BeamableCore/Public/AutoGen/MicroserviceRegistrations.h","UQuery*":"BeamableCore/Public/AutoGen/Query.h","UBeamoBasicURLResponse*":"BeamableCore/Public/AutoGen/BeamoBasicURLResponse.h","UManifestView*":"BeamableCore/Public/AutoGen/ManifestView.h","UGetLogsInsightUrlRequestBody*":"BeamableCore/Public/AutoGen/GetLogsInsightUrlRequestBody.h","UServiceDependencyReference*":"BeamableCore/Public/AutoGen/ServiceDependencyReference.h","UBeamoBasicManifestChecksum*":"BeamableCore/Public/AutoGen/BeamoBasicManifestChecksum.h","UDataPoint*":"BeamableCore/Public/AutoGen/DataPoint.h","UMicroserviceSecretResponse*":"BeamableCore/Public/AutoGen/MicroserviceSecretResponse.h","UBeamoBasicReference*":"BeamableCore/Public/AutoGen/BeamoBasicReference.h","UServiceStatus*":"BeamableCore/Public/AutoGen/ServiceStatus.h","UMicroserviceRegistrationsResponse*":"BeamableCore/Public/AutoGen/MicroserviceRegistrationsResponse.h","UPASuggestedIndex*":"BeamableCore/Public/AutoGen/PASuggestedIndex.h","UGetLambdaURI*":"BeamableCore/Public/AutoGen/GetLambdaURI.h","UGetManifestResponse*":"BeamableCore/Public/AutoGen/GetManifestResponse.h","UDatabaseMeasurements*":"BeamableCore/Public/AutoGen/DatabaseMeasurements.h","UServiceReference*":"BeamableCore/Public/AutoGen/ServiceReference.h","UGetStatusResponse*":"BeamableCore/Public/AutoGen/GetStatusResponse.h","UServiceComponent*":"BeamableCore/Public/AutoGen/ServiceComponent.h","UPerformanceResponse*":"BeamableCore/Public/AutoGen/PerformanceResponse.h","UGetTemplatesResponse*":"BeamableCore/Public/AutoGen/GetTemplatesResponse.h","UServiceStorageReference*":"BeamableCore/Public/AutoGen/ServiceStorageReference.h","USupportedFederationRegistration*":"BeamableCore/Public/AutoGen/SupportedFederationRegistration.h","USupportedFederationsResponse*":"BeamableCore/Public/AutoGen/SupportedFederationsResponse.h","ULambdaResponse*":"BeamableCore/Public/AutoGen/LambdaResponse.h","UGetCurrentManifestResponse*":"BeamableCore/Public/AutoGen/GetCurrentManifestResponse.h","UGetServiceURLsRequestBody*":"BeamableCore/Public/AutoGen/GetServiceURLsRequestBody.h","UPostManifestResponse*":"BeamableCore/Public/AutoGen/PostManifestResponse.h","UGetMetricsUrlRequestBody*":"BeamableCore/Public/AutoGen/GetMetricsUrlRequestBody.h","UCommitImageRequestBody*":"BeamableCore/Public/AutoGen/CommitImageRequestBody.h","UGetElasticContainerRegistryURI*":"BeamableCore/Public/AutoGen/GetElasticContainerRegistryURI.h","UPANamespace*":"BeamableCore/Public/AutoGen/PANamespace.h","ULink*":"BeamableCore/Public/AutoGen/Link.h","UEventInventoryRewardItem*":"BeamableCore/Public/AutoGen/EventInventoryRewardItem.h","UItemCreateRequestBody*":"BeamableCore/Public/AutoGen/ItemCreateRequestBody.h","UEventClaimResponse*":"BeamableCore/Public/AutoGen/EventClaimResponse.h","UEventPlayerView*":"BeamableCore/Public/AutoGen/EventPlayerView.h","UEventRewardState*":"BeamableCore/Public/AutoGen/EventRewardState.h","UEventScoreRequestBody*":"BeamableCore/Public/AutoGen/EventScoreRequestBody.h","UEventRewardObtain*":"BeamableCore/Public/AutoGen/EventRewardObtain.h","UEventClaimRequestBody*":"BeamableCore/Public/AutoGen/EventClaimRequestBody.h","UEventInventoryRewardCurrency*":"BeamableCore/Public/AutoGen/EventInventoryRewardCurrency.h","UEventInventoryPendingRewards*":"BeamableCore/Public/AutoGen/EventInventoryPendingRewards.h","UEventPlayerStateView*":"BeamableCore/Public/AutoGen/EventPlayerStateView.h","UEventPlayerPhaseView*":"BeamableCore/Public/AutoGen/EventPlayerPhaseView.h","UItemProperty*":"BeamableCore/Public/AutoGen/ItemProperty.h","UEventRule*":"BeamableCore/Public/AutoGen/EventRule.h","UEventPlayerGroupState*":"BeamableCore/Public/AutoGen/EventPlayerGroupState.h","ULeaderboardCohort*":"BeamableCore/Public/AutoGen/LeaderboardCohort.h","UInFlightMessage*":"BeamableCore/Public/AutoGen/InFlightMessage.h","ULeaderboardCohortSettings*":"BeamableCore/Public/AutoGen/LeaderboardCohortSettings.h","UEvent*":"BeamableCore/Public/AutoGen/Event.h","UEventPhaseTime*":"BeamableCore/Public/AutoGen/EventPhaseTime.h","UEventQueryResponse*":"BeamableCore/Public/AutoGen/EventQueryResponse.h","UPlayerStatRequirement*":"BeamableCore/Public/AutoGen/PlayerStatRequirement.h","UEventGroupRewards*":"BeamableCore/Public/AutoGen/EventGroupRewards.h","UEventsWithinDateRangeRequestBody*":"BeamableCore/Public/AutoGen/EventsWithinDateRangeRequestBody.h","UEventRewardContent*":"BeamableCore/Public/AutoGen/EventRewardContent.h","UEventPhaseRuntime*":"BeamableCore/Public/AutoGen/EventPhaseRuntime.h","UEventDateRanges*":"BeamableCore/Public/AutoGen/EventDateRanges.h","UEventObjectData*":"BeamableCore/Public/AutoGen/EventObjectData.h","UDateRange*":"BeamableCore/Public/AutoGen/DateRange.h","UEventsInDateRangeResponse*":"BeamableCore/Public/AutoGen/EventsInDateRangeResponse.h","UEventApplyRequestBody*":"BeamableCore/Public/AutoGen/EventApplyRequestBody.h","USchedule*":"BeamableCore/Public/AutoGen/Schedule.h","UScheduleDefinition*":"BeamableCore/Public/AutoGen/ScheduleDefinition.h","UEventPhase*":"BeamableCore/Public/AutoGen/EventPhase.h","UEventContentResponse*":"BeamableCore/Public/AutoGen/EventContentResponse.h","UEventPhaseEndRequestBody*":"BeamableCore/Public/AutoGen/EventPhaseEndRequestBody.h","UPingRsp*":"BeamableCore/Public/AutoGen/PingRsp.h","USetContentRequestBody*":"BeamableCore/Public/AutoGen/SetContentRequestBody.h","UGroupCreate*":"BeamableCore/Public/AutoGen/GroupCreate.h","UDonationEntry*":"BeamableCore/Public/AutoGen/DonationEntry.h","UMember*":"BeamableCore/Public/AutoGen/Member.h","UGroupMembershipResponse*":"BeamableCore/Public/AutoGen/GroupMembershipResponse.h","UGroupRole*":"BeamableCore/Public/AutoGen/GroupRole.h","UAvailabilityResponse*":"BeamableCore/Public/AutoGen/AvailabilityResponse.h","UDonationRequestBody*":"BeamableCore/Public/AutoGen/DonationRequestBody.h","UGroupCreateResponse*":"BeamableCore/Public/AutoGen/GroupCreateResponse.h","UGroupSearchResponse*":"BeamableCore/Public/AutoGen/GroupSearchResponse.h","UGroupUserMember*":"BeamableCore/Public/AutoGen/GroupUserMember.h","UGroupMemberInfo*":"BeamableCore/Public/AutoGen/GroupMemberInfo.h","UCurrencyProperty*":"BeamableCore/Public/AutoGen/CurrencyProperty.h","UGroup*":"BeamableCore/Public/AutoGen/Group.h","UCurrency*":"BeamableCore/Public/AutoGen/Currency.h","UGroupMembershipRequestBody*":"BeamableCore/Public/AutoGen/GroupMembershipRequestBody.h","UGroupScoreBinding*":"BeamableCore/Public/AutoGen/GroupScoreBinding.h","UAvailabilityRequestBody*":"BeamableCore/Public/AutoGen/AvailabilityRequestBody.h","UGroupSearchRequestBody*":"BeamableCore/Public/AutoGen/GroupSearchRequestBody.h","UGroupMetaData*":"BeamableCore/Public/AutoGen/GroupMetaData.h","UGroupUser*":"BeamableCore/Public/AutoGen/GroupUser.h","UFederationInfo*":"BeamableCore/Public/AutoGen/FederationInfo.h","UGroupInvite*":"BeamableCore/Public/AutoGen/GroupInvite.h","UCreateDonationRequestBody*":"BeamableCore/Public/AutoGen/CreateDonationRequestBody.h","UKickRequestBody*":"BeamableCore/Public/AutoGen/KickRequestBody.h","UGroupUpdate*":"BeamableCore/Public/AutoGen/GroupUpdate.h","UGroupApplication*":"BeamableCore/Public/AutoGen/GroupApplication.h","UMakeDonationRequestBody*":"BeamableCore/Public/AutoGen/MakeDonationRequestBody.h","URoleChangeRequestBody*":"BeamableCore/Public/AutoGen/RoleChangeRequestBody.h","UDisbandRequestBody*":"BeamableCore/Public/AutoGen/DisbandRequestBody.h","UCurrencyContentResponse*":"BeamableCore/Public/AutoGen/CurrencyContentResponse.h","UCurrencyArchetype*":"BeamableCore/Public/AutoGen/CurrencyArchetype.h","UItemArchetype*":"BeamableCore/Public/AutoGen/ItemArchetype.h","UItemContentResponse*":"BeamableCore/Public/AutoGen/ItemContentResponse.h","UItemGroup*":"BeamableCore/Public/AutoGen/ItemGroup.h","UItemUpdateRequestBody*":"BeamableCore/Public/AutoGen/ItemUpdateRequestBody.h","UCurrencyPreview*":"BeamableCore/Public/AutoGen/CurrencyPreview.h","UCurrencyView*":"BeamableCore/Public/AutoGen/CurrencyView.h","UInventoryView*":"BeamableCore/Public/AutoGen/InventoryView.h","UInventoryGetRequestBody*":"BeamableCore/Public/AutoGen/InventoryGetRequestBody.h","UMultipliersGetResponse*":"BeamableCore/Public/AutoGen/MultipliersGetResponse.h","UEndTransactionRequestBody*":"BeamableCore/Public/AutoGen/EndTransactionRequestBody.h","UInventoryUpdateRequestBody*":"BeamableCore/Public/AutoGen/InventoryUpdateRequestBody.h","UItem*":"BeamableCore/Public/AutoGen/Item.h","UInventoryQueryRequestBody*":"BeamableCore/Public/AutoGen/InventoryQueryRequestBody.h","UItemDeleteRequestBody*":"BeamableCore/Public/AutoGen/ItemDeleteRequestBody.h","UVipBonus*":"BeamableCore/Public/AutoGen/VipBonus.h","UPreviewVipBonusResponse*":"BeamableCore/Public/AutoGen/PreviewVipBonusResponse.h","UTransferRequestBody*":"BeamableCore/Public/AutoGen/TransferRequestBody.h","URankEntryStat*":"BeamableCore/Public/AutoGen/RankEntryStat.h","ULeaderboardUidResponse*":"BeamableCore/Public/AutoGen/LeaderboardUidResponse.h","UListLeaderBoardViewResponse*":"BeamableCore/Public/AutoGen/ListLeaderBoardViewResponse.h","URankEntry*":"BeamableCore/Public/AutoGen/RankEntry.h","ULeaderboardPlayerAssignmentRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPlayerAssignmentRequestBody.h","ULeaderboardPlayerRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPlayerRequestBody.h","ULeaderboardListRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardListRequestBody.h","ULeaderboardAssignmentInfo*":"BeamableCore/Public/AutoGen/LeaderboardAssignmentInfo.h","ULeaderboardListResponse*":"BeamableCore/Public/AutoGen/LeaderboardListResponse.h","ULeaderBoardView*":"BeamableCore/Public/AutoGen/LeaderBoardView.h","ULeaderboardPartitionInfo*":"BeamableCore/Public/AutoGen/LeaderboardPartitionInfo.h","ULeaderboardPartitionRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardPartitionRequestBody.h","UOrderRule*":"BeamableCore/Public/AutoGen/OrderRule.h","ULeaderboardMembershipRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardMembershipRequestBody.h","ULeaderboardRemoveCacheEntryRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardRemoveCacheEntryRequestBody.h","ULeaderboardGetRanksRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardGetRanksRequestBody.h","ULeaderboardApiViewRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardApiViewRequestBody.h","UMetadataView*":"BeamableCore/Public/AutoGen/MetadataView.h","UMatchMakingRanking*":"BeamableCore/Public/AutoGen/MatchMakingRanking.h","ULeaderBoardViewResponse*":"BeamableCore/Public/AutoGen/LeaderBoardViewResponse.h","ULeaderboardDetails*":"BeamableCore/Public/AutoGen/LeaderboardDetails.h","UOrderRules*":"BeamableCore/Public/AutoGen/OrderRules.h","ULeaderboardRemoveEntryRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardRemoveEntryRequestBody.h","UMatchMakingMatchesPvpResponse*":"BeamableCore/Public/AutoGen/MatchMakingMatchesPvpResponse.h","ULeaderboardGetMatchRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardGetMatchRequestBody.h","ULeaderboardCreateRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardCreateRequestBody.h","ULeaderboardDetailsRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardDetailsRequestBody.h","UMatchMakingWindowResp*":"BeamableCore/Public/AutoGen/MatchMakingWindowResp.h","ULeaderboardSwapRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardSwapRequestBody.h","ULeaderboardAddRequestBody*":"BeamableCore/Public/AutoGen/LeaderboardAddRequestBody.h","ULeaderboardMembershipResponse*":"BeamableCore/Public/AutoGen/LeaderboardMembershipResponse.h","UPasswordUpdateConfirmation*":"BeamableCore/Public/AutoGen/PasswordUpdateConfirmation.h","UDeviceIdAvailableRequestBody*":"BeamableCore/Public/AutoGen/DeviceIdAvailableRequestBody.h","UAccountUpdate*":"BeamableCore/Public/AutoGen/AccountUpdate.h","UEmailUpdateRequestBody*":"BeamableCore/Public/AutoGen/EmailUpdateRequestBody.h","UThirdPartyAssociation*":"BeamableCore/Public/AutoGen/ThirdPartyAssociation.h","UDeleteDevicesRequestBody*":"BeamableCore/Public/AutoGen/DeleteDevicesRequestBody.h","UAccountPersonallyIdentifiableInformationResponse*":"BeamableCore/Public/AutoGen/AccountPersonallyIdentifiableInformationResponse.h","UAccountPortalView*":"BeamableCore/Public/AutoGen/AccountPortalView.h","USearchAccountsRequestBody*":"BeamableCore/Public/AutoGen/SearchAccountsRequestBody.h","UPasswordUpdateRequestBody*":"BeamableCore/Public/AutoGen/PasswordUpdateRequestBody.h","UPaymentAuditEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentAuditEntryViewModel.h","UExternalIdentityAvailableApiRequestBody*":"BeamableCore/Public/AutoGen/ExternalIdentityAvailableApiRequestBody.h","UAccountPlayerView*":"BeamableCore/Public/AutoGen/AccountPlayerView.h","UPaymentHistoryEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentHistoryEntryViewModel.h","UAccountAvailableResponse*":"BeamableCore/Public/AutoGen/AccountAvailableResponse.h","UCreateElevatedAccountRequestBody*":"BeamableCore/Public/AutoGen/CreateElevatedAccountRequestBody.h","UEntitlementGenerator*":"BeamableCore/Public/AutoGen/EntitlementGenerator.h","UStatsResponse*":"BeamableCore/Public/AutoGen/StatsResponse.h","UAttachExternalIdentityApiResponse*":"BeamableCore/Public/AutoGen/AttachExternalIdentityApiResponse.h","URoleMapping*":"BeamableCore/Public/AutoGen/RoleMapping.h","UAccountRegistration*":"BeamableCore/Public/AutoGen/AccountRegistration.h","UAttachExternalIdentityApiRequestBody*":"BeamableCore/Public/AutoGen/AttachExternalIdentityApiRequestBody.h","UEmailUpdateConfirmation*":"BeamableCore/Public/AutoGen/EmailUpdateConfirmation.h","UGetAdminsResponse*":"BeamableCore/Public/AutoGen/GetAdminsResponse.h","UPaymentDetailsEntryViewModel*":"BeamableCore/Public/AutoGen/PaymentDetailsEntryViewModel.h","UCurrencyChange*":"BeamableCore/Public/AutoGen/CurrencyChange.h","UEntitlementClaimWindow*":"BeamableCore/Public/AutoGen/EntitlementClaimWindow.h","UGamerTagAssociation*":"BeamableCore/Public/AutoGen/GamerTagAssociation.h","UChallengeSolution*":"BeamableCore/Public/AutoGen/ChallengeSolution.h","UDeleteExternalIdentityApiRequestBody*":"BeamableCore/Public/AutoGen/DeleteExternalIdentityApiRequestBody.h","UThirdPartyAvailableRequestBody*":"BeamableCore/Public/AutoGen/ThirdPartyAvailableRequestBody.h","UAccountSearchResponse*":"BeamableCore/Public/AutoGen/AccountSearchResponse.h","UListAuditResponse*":"BeamableCore/Public/AutoGen/ListAuditResponse.h","UAccountAvailableRequestBody*":"BeamableCore/Public/AutoGen/AccountAvailableRequestBody.h","UFindAccountRequestBody*":"BeamableCore/Public/AutoGen/FindAccountRequestBody.h","UAccountsBasicAccount*":"BeamableCore/Public/AutoGen/AccountsBasicAccount.h","UAccountRolesReport*":"BeamableCore/Public/AutoGen/AccountRolesReport.h","UDeleteThirdPartyAssociation*":"BeamableCore/Public/AutoGen/DeleteThirdPartyAssociation.h","UDeleteRoleRequestBody*":"BeamableCore/Public/AutoGen/DeleteRoleRequestBody.h","UUpdateRole*":"BeamableCore/Public/AutoGen/UpdateRole.h","UAvailableRolesResponse*":"BeamableCore/Public/AutoGen/AvailableRolesResponse.h","URealmRolesReport*":"BeamableCore/Public/AutoGen/RealmRolesReport.h","UTransferThirdPartyAssociation*":"BeamableCore/Public/AutoGen/TransferThirdPartyAssociation.h","UAccountsObjectAccount*":"BeamableCore/Public/AutoGen/AccountsObjectAccount.h","UStatUpdateRequestBody*":"BeamableCore/Public/AutoGen/StatUpdateRequestBody.h","UStatsUnsubscribeRequestBody*":"BeamableCore/Public/AutoGen/StatsUnsubscribeRequestBody.h","UStatsSubscribeRequestBody*":"BeamableCore/Public/AutoGen/StatsSubscribeRequestBody.h","UStatsSearchResponse*":"BeamableCore/Public/AutoGen/StatsSearchResponse.h","UNetworkSerializable*":"BeamableCore/Public/AutoGen/NetworkSerializable.h","UBatchReadStatsRequestBody*":"BeamableCore/Public/AutoGen/BatchReadStatsRequestBody.h","UBatchSetStatsRequestBody*":"BeamableCore/Public/AutoGen/BatchSetStatsRequestBody.h","UStatsSearchRequestBody*":"BeamableCore/Public/AutoGen/StatsSearchRequestBody.h","UStatsSearchCriteria*":"BeamableCore/Public/AutoGen/StatsSearchCriteria.h","UBatchReadStatsResponse*":"BeamableCore/Public/AutoGen/BatchReadStatsResponse.h","USearchExtendedResponse*":"BeamableCore/Public/AutoGen/SearchExtendedResponse.h","USearchExtendedRequestBody*":"BeamableCore/Public/AutoGen/SearchExtendedRequestBody.h","UStatUpdateRequestStringListFormat*":"BeamableCore/Public/AutoGen/StatUpdateRequestStringListFormat.h","UStatRequestBody*":"BeamableCore/Public/AutoGen/StatRequestBody.h","UStatStringListEntry*":"BeamableCore/Public/AutoGen/StatStringListEntry.h","URewardsResponse*":"BeamableCore/Public/AutoGen/RewardsResponse.h","UGroupStatus*":"BeamableCore/Public/AutoGen/GroupStatus.h","UGetPlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/GetPlayerStatusRequestBody.h","UGetPlayerStatusResponse*":"BeamableCore/Public/AutoGen/GetPlayerStatusResponse.h","URewardsRequestBody*":"BeamableCore/Public/AutoGen/RewardsRequestBody.h","UScoreRequestBody*":"BeamableCore/Public/AutoGen/ScoreRequestBody.h","UAdminGetPlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/AdminGetPlayerStatusRequestBody.h","UGetGroupStatusRequestBody*":"BeamableCore/Public/AutoGen/GetGroupStatusRequestBody.h","UGetChampionsResponse*":"BeamableCore/Public/AutoGen/GetChampionsResponse.h","UTournamentClientView*":"BeamableCore/Public/AutoGen/TournamentClientView.h","UGetStatusForGroupsResponse*":"BeamableCore/Public/AutoGen/GetStatusForGroupsResponse.h","UGetStandingsRequestBody*":"BeamableCore/Public/AutoGen/GetStandingsRequestBody.h","UTournamentEntry*":"BeamableCore/Public/AutoGen/TournamentEntry.h","UPlayerStatusUpdate*":"BeamableCore/Public/AutoGen/PlayerStatusUpdate.h","UTournamentQueryResponse*":"BeamableCore/Public/AutoGen/TournamentQueryResponse.h","UPlayerStatus*":"BeamableCore/Public/AutoGen/PlayerStatus.h","UCompletedStatus*":"BeamableCore/Public/AutoGen/CompletedStatus.h","UGetStandingsResponse*":"BeamableCore/Public/AutoGen/GetStandingsResponse.h","UTournamentQueryRequestBody*":"BeamableCore/Public/AutoGen/TournamentQueryRequestBody.h","UTournamentCurrencyReward*":"BeamableCore/Public/AutoGen/TournamentCurrencyReward.h","UJoinRequestBody*":"BeamableCore/Public/AutoGen/JoinRequestBody.h","UGetGroupsResponse*":"BeamableCore/Public/AutoGen/GetGroupsResponse.h","UTournamentGroupEntry*":"BeamableCore/Public/AutoGen/TournamentGroupEntry.h","UGetStatusForGroupsRequestBody*":"BeamableCore/Public/AutoGen/GetStatusForGroupsRequestBody.h","UGetGroupStatusResponse*":"BeamableCore/Public/AutoGen/GetGroupStatusResponse.h","UGetGroupsRequestBody*":"BeamableCore/Public/AutoGen/GetGroupsRequestBody.h","UAdminPlayerStatus*":"BeamableCore/Public/AutoGen/AdminPlayerStatus.h","UUpdatePlayerStatusRequestBody*":"BeamableCore/Public/AutoGen/UpdatePlayerStatusRequestBody.h","UChampionScore*":"BeamableCore/Public/AutoGen/ChampionScore.h","UGetChampionsRequestBody*":"BeamableCore/Public/AutoGen/GetChampionsRequestBody.h","UAdminGetPlayerStatusResponse*":"BeamableCore/Public/AutoGen/AdminGetPlayerStatusResponse.h","URevokeTokenRequestBody*":"BeamableCore/Public/AutoGen/RevokeTokenRequestBody.h","UListTokensRequestBody*":"BeamableCore/Public/AutoGen/ListTokensRequestBody.h","UContextInfo*":"BeamableCore/Public/AutoGen/ContextInfo.h","UGetTokenRequestBody*":"BeamableCore/Public/AutoGen/GetTokenRequestBody.h","UTokenRequestWrapper*":"BeamableCore/Public/AutoGen/TokenRequestWrapper.h","UListTokenResponseItem*":"BeamableCore/Public/AutoGen/ListTokenResponseItem.h","UListTokenResponse*":"BeamableCore/Public/AutoGen/ListTokenResponse.h","UTokenResponse*":"BeamableCore/Public/AutoGen/TokenResponse.h","UToken*":"BeamableCore/Public/AutoGen/Token.h","UObjectRequestBody*":"BeamableCore/Public/AutoGen/ObjectRequestBody.h","UObjectRequests*":"BeamableCore/Public/AutoGen/ObjectRequests.h","UObjectsMetadataResponse*":"BeamableCore/Public/AutoGen/ObjectsMetadataResponse.h","UURLSResponse*":"BeamableCore/Public/AutoGen/URLSResponse.h","UCloudsavingBasicURLResponse*":"BeamableCore/Public/AutoGen/CloudsavingBasicURLResponse.h","UCloudsavingBasicReference*":"BeamableCore/Public/AutoGen/CloudsavingBasicReference.h","UObjectMetadataResponse*":"BeamableCore/Public/AutoGen/ObjectMetadataResponse.h","UMetadataPair*":"BeamableCore/Public/AutoGen/MetadataPair.h","UCloudsavingBasicManifest*":"BeamableCore/Public/AutoGen/CloudsavingBasicManifest.h","UPlayerBasicCloudDataRequestBody*":"BeamableCore/Public/AutoGen/PlayerBasicCloudDataRequestBody.h","UUploadRequestsFromPortal*":"BeamableCore/Public/AutoGen/UploadRequestsFromPortal.h","UUploadRequests*":"BeamableCore/Public/AutoGen/UploadRequests.h","UReplaceObjectsRequestBody*":"BeamableCore/Public/AutoGen/ReplaceObjectsRequestBody.h","UUploadRequestBody*":"BeamableCore/Public/AutoGen/UploadRequestBody.h","UUploadRequestFromPortal*":"BeamableCore/Public/AutoGen/UploadRequestFromPortal.h","UCompletePurchaseRequestBody*":"BeamableCore/Public/AutoGen/CompletePurchaseRequestBody.h","UGetProductsResponse*":"BeamableCore/Public/AutoGen/GetProductsResponse.h","UTrackPurchaseRequestBody*":"BeamableCore/Public/AutoGen/TrackPurchaseRequestBody.h","UFacebookUpdatedEntry*":"BeamableCore/Public/AutoGen/FacebookUpdatedEntry.h","UGetPricesRequestBody*":"BeamableCore/Public/AutoGen/GetPricesRequestBody.h","UFacebookPaymentUpdateRequestBody*":"BeamableCore/Public/AutoGen/FacebookPaymentUpdateRequestBody.h","UGetOrderInfoRequestBody*":"BeamableCore/Public/AutoGen/GetOrderInfoRequestBody.h","UListAuditRequestBody*":"BeamableCore/Public/AutoGen/ListAuditRequestBody.h","UProductView*":"BeamableCore/Public/AutoGen/ProductView.h","UFailPurchaseRequestBody*":"BeamableCore/Public/AutoGen/FailPurchaseRequestBody.h","UBeginPurchaseRequestBody*":"BeamableCore/Public/AutoGen/BeginPurchaseRequestBody.h","USteamOrderInfoItem*":"BeamableCore/Public/AutoGen/SteamOrderInfoItem.h","UVerifyPurchaseRequestBody*":"BeamableCore/Public/AutoGen/VerifyPurchaseRequestBody.h","USubscriptionVerificationRequestBody*":"BeamableCore/Public/AutoGen/SubscriptionVerificationRequestBody.h","UGetProductResponse*":"BeamableCore/Public/AutoGen/GetProductResponse.h","ULocalizedPriceMap*":"BeamableCore/Public/AutoGen/LocalizedPriceMap.h","ULocalizedPrice*":"BeamableCore/Public/AutoGen/LocalizedPrice.h","UPaymentResultResponse*":"BeamableCore/Public/AutoGen/PaymentResultResponse.h","UBeginPurchaseResponse*":"BeamableCore/Public/AutoGen/BeginPurchaseResponse.h","USteamOrderInfoResponse*":"BeamableCore/Public/AutoGen/SteamOrderInfoResponse.h","UGetProductRequestBody*":"BeamableCore/Public/AutoGen/GetProductRequestBody.h","UCancelPurchaseRequestBody*":"BeamableCore/Public/AutoGen/CancelPurchaseRequestBody.h","USteamAuthRequestBody*":"BeamableCore/Public/AutoGen/SteamAuthRequestBody.h","UFacebookPaymentUpdateResponse*":"BeamableCore/Public/AutoGen/FacebookPaymentUpdateResponse.h","USubscriptionVerificationResponse*":"BeamableCore/Public/AutoGen/SubscriptionVerificationResponse.h","UEmptyRsp*":"BeamableCore/Public/AutoGen/EmptyRsp.h","USendNotification*":"BeamableCore/Public/AutoGen/SendNotification.h","URegisterReq*":"BeamableCore/Public/AutoGen/RegisterReq.h","USendReq*":"BeamableCore/Public/AutoGen/SendReq.h","USendMsg*":"BeamableCore/Public/AutoGen/SendMsg.h","UNotificationRequestData*":"BeamableCore/Public/AutoGen/NotificationRequestData.h","UServerEvent*":"BeamableCore/Public/AutoGen/ServerEvent.h","UNotificationRequestBody*":"BeamableCore/Public/AutoGen/NotificationRequestBody.h","USubscriberDetailsResponse*":"BeamableCore/Public/AutoGen/SubscriberDetailsResponse.h","UPromotable*":"BeamableCore/Public/AutoGen/Promotable.h","UArchiveProjectRequestBody*":"BeamableCore/Public/AutoGen/ArchiveProjectRequestBody.h","UUpdateGameHierarchyRequestBody*":"BeamableCore/Public/AutoGen/UpdateGameHierarchyRequestBody.h","ULaunchMessageListResponse*":"BeamableCore/Public/AutoGen/LaunchMessageListResponse.h","UCustomerResponse*":"BeamableCore/Public/AutoGen/CustomerResponse.h","UCustomersResponse*":"BeamableCore/Public/AutoGen/CustomersResponse.h","UCreatePlanRequestBody*":"BeamableCore/Public/AutoGen/CreatePlanRequestBody.h","UContentLimits*":"BeamableCore/Public/AutoGen/ContentLimits.h","UServiceLimits*":"BeamableCore/Public/AutoGen/ServiceLimits.h","UFailedInFlightFilterRequestBody*":"BeamableCore/Public/AutoGen/FailedInFlightFilterRequestBody.h","UGatewayLimits*":"BeamableCore/Public/AutoGen/GatewayLimits.h","URealmConfigChangeRequestBody*":"BeamableCore/Public/AutoGen/RealmConfigChangeRequestBody.h","URealmConfiguration*":"BeamableCore/Public/AutoGen/RealmConfiguration.h","UNewCustomerRequestBody*":"BeamableCore/Public/AutoGen/NewCustomerRequestBody.h","UPromoteRealmResponseOld*":"BeamableCore/Public/AutoGen/PromoteRealmResponseOld.h","UCustomerView*":"BeamableCore/Public/AutoGen/CustomerView.h","UGetGameResponse*":"BeamableCore/Public/AutoGen/GetGameResponse.h","UPromoteRealmRequestBody*":"BeamableCore/Public/AutoGen/PromoteRealmRequestBody.h","UCreateLaunchMessageRequestBody*":"BeamableCore/Public/AutoGen/CreateLaunchMessageRequestBody.h","URealmConfigSaveRequestBody*":"BeamableCore/Public/AutoGen/RealmConfigSaveRequestBody.h","UInFlightFailureResponse*":"BeamableCore/Public/AutoGen/InFlightFailureResponse.h","UPromotionScope*":"BeamableCore/Public/AutoGen/PromotionScope.h","UServicePlan*":"BeamableCore/Public/AutoGen/ServicePlan.h","UCustomerViewResponse*":"BeamableCore/Public/AutoGen/CustomerViewResponse.h","UAliasAvailableResponse*":"BeamableCore/Public/AutoGen/AliasAvailableResponse.h","URealmPromotion*":"BeamableCore/Public/AutoGen/RealmPromotion.h","UBeamoLimits*":"BeamableCore/Public/AutoGen/BeamoLimits.h","UProject*":"BeamableCore/Public/AutoGen/Project.h","URedisShardRequestBody*":"BeamableCore/Public/AutoGen/RedisShardRequestBody.h","URealmConfigResponse*":"BeamableCore/Public/AutoGen/RealmConfigResponse.h","UCustomer*":"BeamableCore/Public/AutoGen/Customer.h","UAliasAvailableRequestBody*":"BeamableCore/Public/AutoGen/AliasAvailableRequestBody.h","UPromotion*":"BeamableCore/Public/AutoGen/Promotion.h","UGetGameRequestBody*":"BeamableCore/Public/AutoGen/GetGameRequestBody.h","UInFlightFailure*":"BeamableCore/Public/AutoGen/InFlightFailure.h","UBatchDeleteInFlightRequestBody*":"BeamableCore/Public/AutoGen/BatchDeleteInFlightRequestBody.h","UWebSocketConfiguration*":"BeamableCore/Public/AutoGen/WebSocketConfiguration.h","UNewCustomerResponse*":"BeamableCore/Public/AutoGen/NewCustomerResponse.h","UDataDomain*":"BeamableCore/Public/AutoGen/DataDomain.h","UServicePlansResponse*":"BeamableCore/Public/AutoGen/ServicePlansResponse.h","URenameProjectRequestBody*":"BeamableCore/Public/AutoGen/RenameProjectRequestBody.h","UNewGameRequestBody*":"BeamableCore/Public/AutoGen/NewGameRequestBody.h","UCreateProjectRequestBody*":"BeamableCore/Public/AutoGen/CreateProjectRequestBody.h","UUnarchiveProjectRequestBody*":"BeamableCore/Public/AutoGen/UnarchiveProjectRequestBody.h","URedisShard*":"BeamableCore/Public/AutoGen/RedisShard.h","UPromoteRealmResponse*":"BeamableCore/Public/AutoGen/PromoteRealmResponse.h","URemoveLaunchMessageRequestBody*":"BeamableCore/Public/AutoGen/RemoveLaunchMessageRequestBody.h","UProjectView*":"BeamableCore/Public/AutoGen/ProjectView.h","URealmsBasicAccount*":"BeamableCore/Public/AutoGen/RealmsBasicAccount.h","UPlayerId*":"BeamableCore/Public/AutoGen/PlayerId.h","UFriend*":"BeamableCore/Public/AutoGen/Friend.h","UInvite*":"BeamableCore/Public/AutoGen/Invite.h","USocial*":"BeamableCore/Public/AutoGen/Social.h","UGetSocialStatusesResponse*":"BeamableCore/Public/AutoGen/GetSocialStatusesResponse.h","UPlayerIdRequestBody*":"BeamableCore/Public/AutoGen/PlayerIdRequestBody.h","UFriendshipStatus*":"BeamableCore/Public/AutoGen/FriendshipStatus.h","UMakeFriendshipRequestBody*":"BeamableCore/Public/AutoGen/MakeFriendshipRequestBody.h","UGetSocialStatusesRequestBody*":"BeamableCore/Public/AutoGen/GetSocialStatusesRequestBody.h","UImportFriendsRequestBody*":"BeamableCore/Public/AutoGen/ImportFriendsRequestBody.h","USendFriendRequestBody*":"BeamableCore/Public/AutoGen/SendFriendRequestBody.h","UOfferDefinition*":"BeamableCore/Public/AutoGen/OfferDefinition.h","UEntitlementRequirement*":"BeamableCore/Public/AutoGen/EntitlementRequirement.h","UGetSkusReq*":"BeamableCore/Public/AutoGen/GetSkusReq.h","UListing*":"BeamableCore/Public/AutoGen/Listing.h","UResultResponse*":"BeamableCore/Public/AutoGen/ResultResponse.h","USKU*":"BeamableCore/Public/AutoGen/SKU.h","UGetCatalogResponse*":"BeamableCore/Public/AutoGen/GetCatalogResponse.h","USKUDefinitions*":"BeamableCore/Public/AutoGen/SKUDefinitions.h","UPrice*":"BeamableCore/Public/AutoGen/Price.h","UCommerceLootRoll*":"BeamableCore/Public/AutoGen/CommerceLootRoll.h","UPeriod*":"BeamableCore/Public/AutoGen/Period.h","UOfferConstraint*":"BeamableCore/Public/AutoGen/OfferConstraint.h","UGetSKUsResponse*":"BeamableCore/Public/AutoGen/GetSKUsResponse.h","UGetCatalogReq*":"BeamableCore/Public/AutoGen/GetCatalogReq.h","USaveCatalogRequestBody*":"BeamableCore/Public/AutoGen/SaveCatalogRequestBody.h","USaveSKUsRequestBody*":"BeamableCore/Public/AutoGen/SaveSKUsRequestBody.h","UOfferRequirement*":"BeamableCore/Public/AutoGen/OfferRequirement.h","UCohortRequirement*":"BeamableCore/Public/AutoGen/CohortRequirement.h","UCatalog*":"BeamableCore/Public/AutoGen/Catalog.h","UStore*":"BeamableCore/Public/AutoGen/Store.h","UReportPurchaseRequestBody*":"BeamableCore/Public/AutoGen/ReportPurchaseRequestBody.h","UGetActiveListingRequestBody*":"BeamableCore/Public/AutoGen/GetActiveListingRequestBody.h","UGetOffersReq*":"BeamableCore/Public/AutoGen/GetOffersReq.h","UClearStatusRequestBody*":"BeamableCore/Public/AutoGen/ClearStatusRequestBody.h","UPlayerListingView*":"BeamableCore/Public/AutoGen/PlayerListingView.h","UStatSubscriptionNotification*":"BeamableCore/Public/AutoGen/StatSubscriptionNotification.h","UGetTotalCouponResponse*":"BeamableCore/Public/AutoGen/GetTotalCouponResponse.h","UGiveCouponReq*":"BeamableCore/Public/AutoGen/GiveCouponReq.h","UGetStoresReq*":"BeamableCore/Public/AutoGen/GetStoresReq.h","UPlayerStoreView*":"BeamableCore/Public/AutoGen/PlayerStoreView.h","UPurchaseRequestBody*":"BeamableCore/Public/AutoGen/PurchaseRequestBody.h","UPlayerOfferView*":"BeamableCore/Public/AutoGen/PlayerOfferView.h","UActiveListingResponse*":"BeamableCore/Public/AutoGen/ActiveListingResponse.h","UUpdateListingCooldownRequestBody*":"BeamableCore/Public/AutoGen/UpdateListingCooldownRequestBody.h","UGetActiveOffersResponse*":"BeamableCore/Public/AutoGen/GetActiveOffersResponse.h","UCooldownModifierRequestBody*":"BeamableCore/Public/AutoGen/CooldownModifierRequestBody.h","UClientDataEntry*":"BeamableCore/Public/AutoGen/ClientDataEntry.h","URewardCalendarDay*":"BeamableCore/Public/AutoGen/RewardCalendarDay.h","UCalendarView*":"BeamableCore/Public/AutoGen/CalendarView.h","UCalendarClaimRequestBody*":"BeamableCore/Public/AutoGen/CalendarClaimRequestBody.h","UCalendarQueryResponse*":"BeamableCore/Public/AutoGen/CalendarQueryResponse.h","UListTagsResponse*":"BeamableCore/Public/AutoGen/ListTagsResponse.h","UWebhookComet*":"BeamableCore/Public/AutoGen/WebhookComet.h","UAnnouncementContent*":"BeamableCore/Public/AutoGen/AnnouncementContent.h","UAnnouncementContentResponse*":"BeamableCore/Public/AutoGen/AnnouncementContentResponse.h","ULocalizationRef*":"BeamableCore/Public/AutoGen/LocalizationRef.h","UAnnouncementAttachment*":"BeamableCore/Public/AutoGen/AnnouncementAttachment.h","URouteVariable*":"BeamableCore/Public/AutoGen/RouteVariable.h","UWebhookInvocationStrategy*":"BeamableCore/Public/AutoGen/WebhookInvocationStrategy.h","URouteParameter*":"BeamableCore/Public/AutoGen/RouteParameter.h","URouteVariables*":"BeamableCore/Public/AutoGen/RouteVariables.h","UPlayerReward*":"BeamableCore/Public/AutoGen/PlayerReward.h","UVariableReference*":"BeamableCore/Public/AutoGen/VariableReference.h","UAttachmentProperty*":"BeamableCore/Public/AutoGen/AttachmentProperty.h","URouteParameters*":"BeamableCore/Public/AutoGen/RouteParameters.h","UListDefinitionsResponse*":"BeamableCore/Public/AutoGen/ListDefinitionsResponse.h","UServiceRoute*":"BeamableCore/Public/AutoGen/ServiceRoute.h","UCurrencyChangeReward*":"BeamableCore/Public/AutoGen/CurrencyChangeReward.h","UDeleteAnnouncementRequestBody*":"BeamableCore/Public/AutoGen/DeleteAnnouncementRequestBody.h","UListTagsRequestBody*":"BeamableCore/Public/AutoGen/ListTagsRequestBody.h","UAnnouncementDto*":"BeamableCore/Public/AutoGen/AnnouncementDto.h","UWebhookReward*":"BeamableCore/Public/AutoGen/WebhookReward.h","UNewItemReward*":"BeamableCore/Public/AutoGen/NewItemReward.h","USearchAnnouncementsRequestBody*":"BeamableCore/Public/AutoGen/SearchAnnouncementsRequestBody.h","UAnnouncementRawResponse*":"BeamableCore/Public/AutoGen/AnnouncementRawResponse.h","UAnnouncementQuery*":"BeamableCore/Public/AutoGen/AnnouncementQuery.h","UAnnouncementState*":"BeamableCore/Public/AutoGen/AnnouncementState.h","UAnnouncementRequestBody*":"BeamableCore/Public/AutoGen/AnnouncementRequestBody.h","UAnnouncementQueryResponse*":"BeamableCore/Public/AutoGen/AnnouncementQueryResponse.h","UAnnouncementView*":"BeamableCore/Public/AutoGen/AnnouncementView.h","UUpdateMailRequestBody*":"BeamableCore/Public/AutoGen/UpdateMailRequestBody.h","UGetTemplateRequestBody*":"BeamableCore/Public/AutoGen/GetTemplateRequestBody.h","UAttachmentRequestBody*":"BeamableCore/Public/AutoGen/AttachmentRequestBody.h","UMailResponse*":"BeamableCore/Public/AutoGen/MailResponse.h","UMailTemplate*":"BeamableCore/Public/AutoGen/MailTemplate.h","USendMailRequestBody*":"BeamableCore/Public/AutoGen/SendMailRequestBody.h","UAttachment*":"BeamableCore/Public/AutoGen/Attachment.h","UAcceptMultipleAttachments*":"BeamableCore/Public/AutoGen/AcceptMultipleAttachments.h","UGetMailDetailsRequestBody*":"BeamableCore/Public/AutoGen/GetMailDetailsRequestBody.h","UMessage*":"BeamableCore/Public/AutoGen/Message.h","UMailSuccessResponse*":"BeamableCore/Public/AutoGen/MailSuccessResponse.h","UBulkSendMailRequestBody*":"BeamableCore/Public/AutoGen/BulkSendMailRequestBody.h","UMailRewards*":"BeamableCore/Public/AutoGen/MailRewards.h","UMailSearchClause*":"BeamableCore/Public/AutoGen/MailSearchClause.h","UMailSearchRequestBody*":"BeamableCore/Public/AutoGen/MailSearchRequestBody.h","UMailSearchResponse*":"BeamableCore/Public/AutoGen/MailSearchResponse.h","USendMailObjectRequestBody*":"BeamableCore/Public/AutoGen/SendMailObjectRequestBody.h","USendMailResponse*":"BeamableCore/Public/AutoGen/SendMailResponse.h","UMyMailUpdate*":"BeamableCore/Public/AutoGen/MyMailUpdate.h","UMailQueryResponse*":"BeamableCore/Public/AutoGen/MailQueryResponse.h","UBulkUpdateMailObjectRequestBody*":"BeamableCore/Public/AutoGen/BulkUpdateMailObjectRequestBody.h","UListMailCategoriesResponse*":"BeamableCore/Public/AutoGen/ListMailCategoriesResponse.h","UMailSearchResponseClause*":"BeamableCore/Public/AutoGen/MailSearchResponseClause.h","USessionHistoryRequestBody*":"BeamableCore/Public/AutoGen/SessionHistoryRequestBody.h","USessionHeartbeat*":"BeamableCore/Public/AutoGen/SessionHeartbeat.h","UEra*":"BeamableCore/Public/AutoGen/Era.h","UOnlineStatusResponses*":"BeamableCore/Public/AutoGen/OnlineStatusResponses.h","USessionHistoryResponse*":"BeamableCore/Public/AutoGen/SessionHistoryResponse.h","ULocalDate*":"BeamableCore/Public/AutoGen/LocalDate.h","UStartSessionRequestBody*":"BeamableCore/Public/AutoGen/StartSessionRequestBody.h","UCohortEntry*":"BeamableCore/Public/AutoGen/CohortEntry.h","UOnlineStatusRequestBody*":"BeamableCore/Public/AutoGen/OnlineStatusRequestBody.h","USessionClientHistoryRequestBody*":"BeamableCore/Public/AutoGen/SessionClientHistoryRequestBody.h","UPlayerOnlineStatusResponse*":"BeamableCore/Public/AutoGen/PlayerOnlineStatusResponse.h","UGamerTag*":"BeamableCore/Public/AutoGen/GamerTag.h","USessionUser*":"BeamableCore/Public/AutoGen/SessionUser.h","USessionLanguageContext*":"BeamableCore/Public/AutoGen/SessionLanguageContext.h","UIsoChronology*":"BeamableCore/Public/AutoGen/IsoChronology.h","USessionClientHistoryResponse*":"BeamableCore/Public/AutoGen/SessionClientHistoryResponse.h","UPaymentTotal*":"BeamableCore/Public/AutoGen/PaymentTotal.h","UStartSessionResponse*":"BeamableCore/Public/AutoGen/StartSessionResponse.h","UBaseContentReference*":"BeamableCore/Public/AutoGen/BaseContentReference.h","UClientManifestResponse*":"BeamableCore/Public/AutoGen/ClientManifestResponse.h","FClientContentInfoTableRow":"BeamableCore/Public/AutoGen/Rows/ClientContentInfoTableRow.h","UDiscordWhitelistedInfo*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/DiscordWhitelistedInfo.h","UAddRequestArgs*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/AddRequestArgs.h","UDiscordSampleMsUpdateFromDiscordResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/DiscordSampleMsUpdateFromDiscordResponse.h","UMSPlaygroundAddResponse*":"Source/BeamableUnrealMicroserviceClients/Public/AutoGen/MSPlaygroundAddResponse.h"}} \ No newline at end of file diff --git a/README.md b/README.md index 3d3ce343..e74d96d8 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,8 @@ Regardless of who you are, we recommend run through the [Introduction to the SDK - If you are a game maker looking to implement highly specific features, browse the documentation for [Content](https://beamable.github.io/UnrealSDK/Feature%20Guides/Unreal%20SDK%20-%20Content) and [Microservices](https://beamable.github.io/UnrealSDK/Feature%20Guides/Unreal%20SDK%20-%20Microservices) to think about how to structure your game's data and custom data with Beamable. - If you are looking to integrate Beamable into your game through Unreal's `IOnlineSubsystem`, take a look at the [Online Subsystem Beamable](https://beamable.github.io/UnrealSDK/Feature%20Guides/Unreal%20SDK%20-%20Online%20Subsystem). -If you have any questions, feel free to contact us through one of our Customer Success channels. \ No newline at end of file +If you have any questions, feel free to contact us through one of our Customer Success channels. + + +## For Beamable Developers +After cloning this repo, remember to run `init_repo.sh` and `docs_build.sh serve` such that the repo is configured correctly and you have a locally running server that serves the current branch's version of the docs. Please always run them from the root of the repo. \ No newline at end of file