You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
78 lines
1.6 KiB
C++
78 lines
1.6 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "SessionServicesPrivatePCH.h"
|
|
#include "ISessionServicesModule.h"
|
|
#include "ModuleManager.h"
|
|
|
|
|
|
/**
|
|
* Implements the SessionServices module.
|
|
*
|
|
* @todo gmp: needs better error handling in case MessageBusPtr is invalid
|
|
*/
|
|
class FSessionServicesModule
|
|
: public ISessionServicesModule
|
|
{
|
|
public:
|
|
|
|
/** Default constructor. */
|
|
FSessionServicesModule()
|
|
: SessionManager(nullptr)
|
|
, SessionService(nullptr)
|
|
{ }
|
|
|
|
public:
|
|
|
|
// ISessionServicesModule interface
|
|
|
|
virtual ISessionManagerRef GetSessionManager() override
|
|
{
|
|
if (!SessionManager.IsValid())
|
|
{
|
|
SessionManager = MakeShareable(new FSessionManager(MessageBusPtr.Pin().ToSharedRef()));
|
|
}
|
|
|
|
return SessionManager.ToSharedRef();
|
|
}
|
|
|
|
virtual ISessionServiceRef GetSessionService() override
|
|
{
|
|
if (!SessionService.IsValid())
|
|
{
|
|
SessionService = MakeShareable(new FSessionService(MessageBusPtr.Pin().ToSharedRef()));
|
|
}
|
|
|
|
return SessionService.ToSharedRef();
|
|
}
|
|
|
|
public:
|
|
|
|
// IModuleInterface interface
|
|
|
|
virtual void StartupModule() override
|
|
{
|
|
MessageBusPtr = IMessagingModule::Get().GetDefaultBus();
|
|
check(MessageBusPtr.IsValid());
|
|
}
|
|
|
|
virtual void ShutdownModule() override
|
|
{
|
|
SessionManager.Reset();
|
|
SessionService.Reset();
|
|
}
|
|
|
|
private:
|
|
|
|
/** Holds a weak pointer to the message bus. */
|
|
IMessageBusWeakPtr MessageBusPtr;
|
|
|
|
/** Holds the session manager singleton. */
|
|
ISessionManagerPtr SessionManager;
|
|
|
|
/** Holds the session service singleton. */
|
|
ISessionServicePtr SessionService;
|
|
};
|
|
|
|
|
|
IMPLEMENT_MODULE(FSessionServicesModule, SessionServices);
|