UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ChaosVDRemoteSessionsManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
6#include "Containers/Ticker.h"
7#include "IMessageContext.h"
8#include "Misc/DateTime.h"
9#include "Misc/Guid.h"
11
12#include "ChaosVDRemoteSessionsManager.generated.h"
13
14class IMessageContext;
17class IMessageBus;
18
19USTRUCT()
21{
23
24 UPROPERTY()
25 FGuid ControllerInstanceId;
26};
27
28USTRUCT()
30{
32
33 UPROPERTY()
34 FGuid InstanceId;
35
36 UPROPERTY()
37 FGuid SessionId;
38
39 UPROPERTY()
40 FString SessionName;
41
42 UPROPERTY()
44};
45
46USTRUCT()
51
52USTRUCT()
81
82USTRUCT()
97
98USTRUCT()
100{
102
106
107 UPROPERTY()
108 FGuid InstanceId = FGuid();
109
110 UPROPERTY()
111 TArray<uint8> DataBuffer;
112};
113
114UENUM()
116{
117 Inactive,
118 Active
119};
120
121USTRUCT()
123{
125
129
130 UPROPERTY()
131 FGuid InstanceId = FGuid();
132
133 UPROPERTY()
134 int64 QueuedDataBytesNum = 0;
135
136 UPROPERTY()
138};
139
140USTRUCT()
142{
144
145 UPROPERTY()
146 FString ChannelName;
147
148 UPROPERTY()
149 bool bIsEnabled = false;
150
151 UPROPERTY()
152 bool bCanChangeChannelState = false;
153
154 bool bWaitingUpdatedState = false;
155};
156
157USTRUCT()
164
165USTRUCT()
176
177USTRUCT()
182
183USTRUCT()
185{
187
188 UPROPERTY()
189 FGuid InstanceId;
190
191 UPROPERTY()
192 TArray<FChaosVDDataChannelState> DataChannelsStates;
193
194 UPROPERTY()
195 bool bIsRecording = false;
196};
197
198UENUM()
200{
201 None = 0,
203 CanExpire = 1 << 1,
204 IsMultiSessionWrapper = 1 << 2,
205};
207
208UENUM()
216
217
222{
227
228 virtual ~FChaosVDSessionInfo() = default;
229
230protected:
231
235
236public:
237
239 FString SessionName;
244
246
248
250
251 CHAOSSOLVERENGINE_API virtual bool IsRecording() const;
252
256
257
258 UE_DEPRECATED(5.7, "This method will no longer be used and there is not a replacement planned.")
259 virtual bool IsConnected() const;
260
265
266protected:
270
272};
273
279{
283
284 virtual ~FChaosVDMultiSessionInfo() override = default;
285
286 CHAOSSOLVERENGINE_API virtual bool IsRecording() const override;
288
289 template<typename TCallback>
290 void EnumerateInnerSessions(const TCallback& Callback) const
291 {
293 {
295 {
296 if (!Callback(SessionPtr.ToSharedRef()))
297 {
298 return;
299 }
300 }
301 }
302 }
303
305};
306
308
311
312
314{
315public:
317
318 UE_DEPRECATED(5.7, "Use Initialize()")
322
323 CHAOSSOLVERENGINE_API void ReInitializeMessagingSystem(const TSharedPtr<IMessageBus>& InMessageBus);
324
326 {
327 return SessionsUpdatedDelegate;
328 }
329
331 {
332 return SessionDiscoveredDelegate;
333 }
334
336 {
337 return SessionExpiredDelegate;
338 }
339
341
346 CHAOSSOLVERENGINE_API void EnumerateMessageTypes(const FVisitorFunction& InVisitor);
347
351 CHAOSSOLVERENGINE_API void StartSessionDiscovery();
352
356 CHAOSSOLVERENGINE_API void StopSessionDiscovery();
357
364
369 CHAOSSOLVERENGINE_API void SendStopRecordingCommand(const FMessageAddress& InDestinationAddress);
370
377
383
388 template<typename CallbackType>
390 {
391 for (const TPair<FGuid, TSharedPtr<FChaosVDSessionInfo>>& ActiveSession : ActiveSessionsByInstanceId)
392 {
393 if (ActiveSession.Value)
394 {
395 bool bContinue = Callback(ActiveSession.Value.ToSharedRef());
396
397 if (!bContinue)
398 {
399 return;
400 }
401 }
402 }
403 }
404
409 void PublishRecordingStatusUpdate(const FChaosVDRecordingStatusMessage& InUpdateMessage);
410
415 void PublishTraceConnectionDetailsUpdate(const FChaosVDTraceConnectionDetailsMessage& InUpdateMessage);
416
421 void PublishDataChannelStateChangeUpdate(const FChaosVDChannelStateChangeResponseMessage& InNewStateData);
422
427 {
428 return RecordingStartedDelegate;
429 }
430
435 {
436 return RecordingStoppedDelegate;
437 }
438
454
457 {
458 return MessagingInitializedDelegate;
459 }
460
462 {
463 return MessageBusPtr;
464 }
465
467 {
468 return MessageEndpoint;
469 }
470
474 CHAOSSOLVERENGINE_API static constexpr bool IsController();
475
480 CHAOSSOLVERENGINE_API void RegisterExternalSupportedMessageType(const UScriptStruct* ScriptStruct);
481
482private:
483
484 void RegisterBuiltInMessageTypes();
485
486 void InitializeMessagingSystem(const TSharedPtr<IMessageBus>& InMessageBus);
487 void ShutdownMessagingSystem();
488
493 void SendFullSessionStateRequestCommand(const FMessageAddress& InDestinationAddress);
494
499 void RegisterSessionInMultiSessionWrapper(const TSharedRef<FChaosVDSessionInfo>& InSessionInfoRef);
500
505 void DeRegisterSessionInMultiSessionWrapper(const TSharedRef<FChaosVDSessionInfo>& InSessionInfoRef);
506
513 TSharedPtr<FChaosVDSessionInfo> CreatedWrapperSessionInfo(FGuid InstanceId, const FString& SessionName);
514
515 /***
516 * Creates the messagebus endpoint this session manager will use
517 */
519
520 bool Tick(float DeltaTime);
521
525 void SendPing();
526
531 void SendPong(const FChaosVDSessionPing& InMessage);
532
533 void HandleSessionPongMessage(const FChaosVDSessionPong& InMessage, const TSharedRef<IMessageContext>& InContext);
534 void HandleSessionPingMessage(const FChaosVDSessionPing& InMessage, const TSharedRef<IMessageContext>& InContext);
535 void HandleRecordingStatusUpdateMessage(const FChaosVDRecordingStatusMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
536 void HandleConnectionDetailsUpdateMessage(const FChaosVDTraceConnectionDetailsMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
537 void HandleRecordingStartCommandMessage(const FChaosVDStartRecordingCommandMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
538 void HandleRecordingStopCommandMessage(const FChaosVDStopRecordingCommandMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
539 void HandleChangeDataChannelStateCommandMessage(const FChaosVDChannelStateChangeCommandMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
540 void HandleChangeDataChannelStateResponseMessage(const FChaosVDChannelStateChangeResponseMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
541 void HandleFullSessionStateRequestMessage(const FChaosVDFullSessionInfoRequestMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
542 void HandleFullSessionStateResponseMessage(const FChaosVDFullSessionInfoResponseMessage& InMessage, const TSharedRef<IMessageContext>& InContext);
543
544 enum class ERemoveSessionOptions : uint8
545 {
546 None = 0,
547 ForceRemoveAll = 1 << 0
548 };
549 FRIEND_ENUM_CLASS_FLAGS(ERemoveSessionOptions)
550
551 void RemoveExpiredSessions(ERemoveSessionOptions Options = ERemoveSessionOptions::None);
552
553 void ProcessPendingMessagesForSession(const FChaosVDSessionPong& InMessage, const TSharedRef<FChaosVDSessionInfo>& InSessionInfoPtr);
554
556 FDateTime LastPingTime;
557
559 TWeakPtr<IMessageBus> MessageBusPtr;
560
562 TSharedPtr<FMessageEndpoint> MessageEndpoint;
563
564 TMap<FGuid, TSharedPtr<FChaosVDSessionInfo>> ActiveSessionsByInstanceId;
565 TMap<FGuid, FChaosVDRecordingStatusMessage> PendingRecordingStatusMessages;
566 TMap<FGuid, FChaosVDTraceDetails> PendingRecordingConnectionDetailsMessages;
567
568 FSimpleMulticastDelegate SessionsUpdatedDelegate;
569 FChaosVDSessionDiscoverDelegate SessionDiscoveredDelegate;
570 FChaosVDSessionDiscoverDelegate SessionExpiredDelegate;
571
572 FChaosVDRecordingStateChangeDelegate RecordingStartedDelegate;
573 FChaosVDRecordingStateChangeDelegate RecordingStoppedDelegate;
574
576
577 FMessagingInitialized MessagingInitializedDelegate;
578
579 TArray<const UScriptStruct*> SupportedMessageTypes;
580
581 bool bInitialized = false;
582};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
EChaosVDRecordingMode
Definition ChaosVDRecordingDetails.h:11
ERelayThrottlingState
Definition ChaosVDRemoteSessionsManager.h:116
EChaosVDRemoteSessionAttributes
Definition ChaosVDRemoteSessionsManager.h:200
EChaosVDRemoteSessionReadyState
Definition ChaosVDRemoteSessionsManager.h:210
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define FRIEND_ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:17
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
EBuildTargetType
Definition GenericPlatformMisc.h:158
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
decltype(auto) get(TupleType &&val)
Definition Tuple.h:940
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition ChaosVDRemoteSessionsManager.h:314
FChaosVDRecordingStateChangeDelegate & OnSessionRecordingStarted()
Definition ChaosVDRemoteSessionsManager.h:426
static CHAOSSOLVERENGINE_API const FString LocalEditorSessionName
Definition ChaosVDRemoteSessionsManager.h:444
static CHAOSSOLVERENGINE_API const FGuid InvalidSessionGUID
Definition ChaosVDRemoteSessionsManager.h:451
void EnumerateActiveSessions(const CallbackType &Callback)
Definition ChaosVDRemoteSessionsManager.h:389
static CHAOSSOLVERENGINE_API const FString AllRemoteClientsTargetName
Definition ChaosVDRemoteSessionsManager.h:441
static CHAOSSOLVERENGINE_API const FGuid AllSessionsWrapperGUID
Definition ChaosVDRemoteSessionsManager.h:449
TWeakPtr< FMessageEndpoint > GetMessageBusEndPoint()
Definition ChaosVDRemoteSessionsManager.h:466
static CHAOSSOLVERENGINE_API const FString AllRemoteServersTargetName
Definition ChaosVDRemoteSessionsManager.h:440
static CHAOSSOLVERENGINE_API const FGuid AllRemoteClientsWrapperGUID
Definition ChaosVDRemoteSessionsManager.h:448
FMessagingInitialized & OnMessagingInitialized()
Definition ChaosVDRemoteSessionsManager.h:456
FSimpleMulticastDelegate & OnSessionsUpdated()
Definition ChaosVDRemoteSessionsManager.h:325
static CHAOSSOLVERENGINE_API const FGuid LocalSessionID
Definition ChaosVDRemoteSessionsManager.h:453
static CHAOSSOLVERENGINE_API const FGuid CustomSessionsWrapperGUID
Definition ChaosVDRemoteSessionsManager.h:450
FChaosVDSessionDiscoverDelegate & OnSessionDiscovered()
Definition ChaosVDRemoteSessionsManager.h:330
TWeakPtr< IMessageBus > GetMessageBusInstance()
Definition ChaosVDRemoteSessionsManager.h:461
static CHAOSSOLVERENGINE_API const FString CustomSessionsTargetName
Definition ChaosVDRemoteSessionsManager.h:443
TFunction< void(const UScriptStruct *)> FVisitorFunction
Definition ChaosVDRemoteSessionsManager.h:340
static CHAOSSOLVERENGINE_API const FName MessageBusEndPointName
Definition ChaosVDRemoteSessionsManager.h:445
static CHAOSSOLVERENGINE_API const FGuid LocalEditorSessionID
Definition ChaosVDRemoteSessionsManager.h:452
DECLARE_MULTICAST_DELEGATE_TwoParams(FMessagingInitialized, TSharedPtr< IMessageBus > NewMessageBus, TSharedPtr< FMessageEndpoint > NewEndpoint)
static CHAOSSOLVERENGINE_API const FString AllRemoteSessionsTargetName
Definition ChaosVDRemoteSessionsManager.h:439
static CHAOSSOLVERENGINE_API const FString AllSessionsTargetName
Definition ChaosVDRemoteSessionsManager.h:442
static CHAOSSOLVERENGINE_API const FGuid AllRemoteServersWrapperGUID
Definition ChaosVDRemoteSessionsManager.h:447
FChaosVDSessionDiscoverDelegate & OnSessionExpired()
Definition ChaosVDRemoteSessionsManager.h:335
FChaosVDRecordingStateChangeDelegate & OnSessionRecordingStopped()
Definition ChaosVDRemoteSessionsManager.h:434
static CHAOSSOLVERENGINE_API const FGuid AllRemoteSessionsWrapperGUID
Definition ChaosVDRemoteSessionsManager.h:446
Definition MessageEndpoint.h:70
Definition NameTypes.h:617
Definition IMessageBus.h:114
Definition IMessageContext.h:225
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Definition Class.h:1720
@ false
Definition radaudio_common.h:23
Definition ChaosVDRemoteSessionsManager.h:159
Definition ChaosVDRemoteSessionsManager.h:167
Definition ChaosVDRemoteSessionsManager.h:142
Definition ChaosVDRemoteSessionsManager.h:179
Definition ChaosVDRemoteSessionsManager.h:185
Definition ChaosVDRemoteSessionsManager.h:279
virtual ~FChaosVDMultiSessionInfo() override=default
void EnumerateInnerSessions(const TCallback &Callback) const
Definition ChaosVDRemoteSessionsManager.h:290
TMap< FGuid, TWeakPtr< FChaosVDSessionInfo > > InnerSessionsByInstanceID
Definition ChaosVDRemoteSessionsManager.h:304
FChaosVDMultiSessionInfo()
Definition ChaosVDRemoteSessionsManager.h:280
virtual CHAOSSOLVERENGINE_API bool IsRecording() const override
Definition ChaosVDRemoteSessionsManager.cpp:65
virtual CHAOSSOLVERENGINE_API EChaosVDRecordingMode GetRecordingMode() const override
Definition ChaosVDRemoteSessionsManager.cpp:81
Definition ChaosVDRemoteSessionsManager.h:54
PRAGMA_DISABLE_DEPRECATION_WARNINGS FChaosVDRecordingStatusMessage(const FChaosVDRecordingStatusMessage &Other)=default
FChaosVDRecordingStatusMessage & operator=(FChaosVDRecordingStatusMessage &&Other) noexcept=default
FChaosVDRecordingStatusMessage & operator=(const FChaosVDRecordingStatusMessage &Other)=default
FChaosVDRecordingStatusMessage(FChaosVDRecordingStatusMessage &&Other) noexcept=default
Definition ChaosVDRemoteSessionsManager.h:100
Definition ChaosVDRemoteSessionsManager.h:123
Definition ChaosVDRemoteSessionsManager.h:222
EChaosVDRecordingMode LastRequestedRecordingMode
Definition ChaosVDRemoteSessionsManager.h:267
EBuildTargetType BuildTargetType
Definition ChaosVDRemoteSessionsManager.h:242
FChaosVDRecordingStatusMessage LastKnownRecordingState
Definition ChaosVDRemoteSessionsManager.h:245
EChaosVDRemoteSessionReadyState ReadyState
Definition ChaosVDRemoteSessionsManager.h:243
FChaosVDSessionInfo(EChaosVDRemoteSessionAttributes InSessionTypeAttributes)
Definition ChaosVDRemoteSessionsManager.h:232
virtual ~FChaosVDSessionInfo()=default
FDateTime LastPingTime
Definition ChaosVDRemoteSessionsManager.h:241
TMap< FString, FChaosVDDataChannelState > DataChannelsStatesByName
Definition ChaosVDRemoteSessionsManager.h:247
virtual CHAOSSOLVERENGINE_API EChaosVDRecordingMode GetRecordingMode() const
Definition ChaosVDRemoteSessionsManager.cpp:45
FMessageAddress Address
Definition ChaosVDRemoteSessionsManager.h:240
CHAOSSOLVERENGINE_API const FChaosVDTraceDetails & GetConnectionDetails()
Definition ChaosVDRemoteSessionsManager.cpp:35
FGuid InstanceId
Definition ChaosVDRemoteSessionsManager.h:238
EChaosVDRemoteSessionAttributes GetSessionTypeAttributes() const
Definition ChaosVDRemoteSessionsManager.h:261
virtual CHAOSSOLVERENGINE_API bool IsRecording() const
Definition ChaosVDRemoteSessionsManager.cpp:40
virtual CHAOSSOLVERENGINE_API void SetLastRequestedRecordingMode(EChaosVDRecordingMode NewRecordingMode)
Definition ChaosVDRemoteSessionsManager.cpp:55
FString SessionName
Definition ChaosVDRemoteSessionsManager.h:239
FChaosVDSessionInfo()
Definition ChaosVDRemoteSessionsManager.h:223
FChaosVDTraceDetails LastKnownConnectionDetails
Definition ChaosVDRemoteSessionsManager.h:268
const EChaosVDRemoteSessionAttributes SessionTypeAttributes
Definition ChaosVDRemoteSessionsManager.h:269
virtual bool IsConnected() const
Definition ChaosVDRemoteSessionsManager.cpp:60
virtual CHAOSSOLVERENGINE_API EChaosVDRecordingMode GetLastRequestedRecordingMode() const
Definition ChaosVDRemoteSessionsManager.cpp:50
Definition ChaosVDRemoteSessionsManager.h:21
Definition ChaosVDRemoteSessionsManager.h:30
Definition ChaosVDRecordingDetails.h:34
Definition ChaosVDRemoteSessionsManager.h:48
Definition ChaosVDRemoteSessionsManager.h:84
Definition ChaosVDRecordingDetails.h:53
Definition DateTime.h:76
Definition Guid.h:109
Definition IMessageContext.h:26
Definition ResourceArray.h:31
Definition Tuple.h:652