UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SessionManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Misc/Guid.h"
7#include "IMessageContext.h"
8#include "IMessageBus.h"
9#include "MessageEndpoint.h"
11#include "ISessionInfo.h"
12#include "SessionLogMessage.h"
13#include "ISessionManager.h"
14#include "Containers/Ticker.h"
15
16class FSessionInfo;
19
24 : public TSharedFromThis<FSessionManager>
25 , public ISessionManager
26{
27public:
28
35
38
39public:
40
41 //~ ISessionManager interface
42
43 virtual void AddOwner(const FString& InOwner) override;
45 virtual const TSharedPtr<ISessionInfo>& GetSelectedSession() const override;
46 virtual void GetSessions(TArray<TSharedPtr<ISessionInfo>>& OutSessions) const override;
47 virtual bool IsInstanceSelected(const TSharedRef<ISessionInstanceInfo>& Instance) const override;
48
49 DECLARE_DERIVED_EVENT(FSessionManager, ISessionManager::FCanSelectSessionEvent, FCanSelectSessionEvent)
51 {
52 return CanSelectSessionDelegate;
53 }
54
55 DECLARE_DERIVED_EVENT(FSessionManager, ISessionManager::FInstanceSelectionChangedEvent, FInstanceSelectionChangedEvent)
57 {
58 return InstanceSelectionChangedDelegate;
59 }
60
61 DECLARE_DERIVED_EVENT(FSessionManager, ISessionManager::FLogReceivedEvent, FLogReceivedEvent)
63 {
64 return LogReceivedEvent;
65 }
66
67 DECLARE_DERIVED_EVENT(FSessionManager, ISessionManager::FSelectedSessionChangedEvent, FSelectedSessionChangedEvent)
69 {
70 return SelectedSessionChangedEvent;
71 }
72
75 virtual void RemoveOwner(const FString& InOwner) override;
76 virtual bool SelectSession(const TSharedPtr<ISessionInfo>& Session) override;
78
79protected:
80
86 void FindExpiredSessions(const FDateTime& Now);
87
93 bool IsValidOwner(const FString& Owner);
94
96 void RefreshSessions();
97
99 void SendPing();
100
101private:
102
104 void HandleEnginePongMessage(const FEngineServicePong& Message, const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context);
105
107 void HandleLogReceived(const TSharedRef<ISessionInfo>& Session, const TSharedRef<ISessionInstanceInfo>& Instance, const TSharedRef<FSessionLogMessage>& Message);
108
110 void HandleSessionPongMessage(const FSessionServicePong& Message, const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context);
111
113 bool HandleTicker(float DeltaTime);
114
115 virtual TSharedPtr<ISessionInstanceInfo> GetInstance(const FGuid& Id) const override;
116
117private:
118
120 FGuid AutomationControllerAddress;
121
123 FDateTime LastPingTime;
124
127
130
133
135 TSharedPtr<ISessionInfo> SelectedSession;
136
139
140private:
141
143 FCanSelectSessionEvent CanSelectSessionDelegate;
144
146 FInstanceSelectionChangedEvent InstanceSelectionChangedDelegate;
147
149 TArray<FString> FilteredOwners;
150
152 FLogReceivedEvent LogReceivedEvent;
153
155 FSelectedSessionChangedEvent SelectedSessionChangedEvent;
156
158 FSimpleMulticastDelegate SessionsUpdatedDelegate;
159
161 FSimpleMulticastDelegate SessionInstanceUpdatedDelegate;
162
164 FTSTicker::FDelegateHandle TickDelegateHandle;
165};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DERIVED_EVENT(OwningType, BaseTypeEvent, EventName)
Definition Delegate.h:231
Definition SessionInfo.h:23
Definition SessionManager.h:26
void RefreshSessions()
Definition SessionManager.cpp:223
virtual const TArray< TSharedPtr< ISessionInstanceInfo > > & GetSelectedInstances() const override
Definition SessionManager.cpp:68
bool IsValidOwner(const FString &Owner)
Definition SessionManager.cpp:204
virtual bool SelectSession(const TSharedPtr< ISessionInfo > &Session) override
Definition SessionManager.cpp:116
virtual FCanSelectSessionEvent & OnCanSelectSession() override
Definition SessionManager.h:50
virtual const TSharedPtr< ISessionInfo > & GetSelectedSession() const override
Definition SessionManager.cpp:74
virtual void GetSessions(TArray< TSharedPtr< ISessionInfo > > &OutSessions) const override
Definition SessionManager.cpp:80
virtual FSimpleMulticastDelegate & OnSessionsUpdated() override
Definition SessionManager.cpp:97
virtual FSimpleMulticastDelegate & OnSessionInstanceUpdated() override
Definition SessionManager.cpp:103
virtual void AddOwner(const FString &InOwner) override
Definition SessionManager.cpp:62
virtual FSelectedSessionChangedEvent & OnSelectedSessionChanged() override
Definition SessionManager.h:68
virtual bool SetInstanceSelected(const TSharedRef< ISessionInstanceInfo > &Instance, bool Selected) override
Definition SessionManager.cpp:154
virtual bool IsInstanceSelected(const TSharedRef< ISessionInstanceInfo > &Instance) const override
Definition SessionManager.cpp:91
void SendPing()
Definition SessionManager.cpp:243
virtual FInstanceSelectionChangedEvent & OnInstanceSelectionChanged() override
Definition SessionManager.h:56
void FindExpiredSessions(const FDateTime &Now)
Definition SessionManager.cpp:184
~FSessionManager()
Definition SessionManager.cpp:52
virtual void RemoveOwner(const FString &InOwner) override
Definition SessionManager.cpp:109
virtual FLogReceivedEvent & OnLogReceived() override
Definition SessionManager.h:62
Definition ISessionManager.h:14
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Definition DateTime.h:76
Definition EngineServiceMessages.h:29
Definition Guid.h:109
Definition SessionServiceMessages.h:41