Files
UnrealEngineUWP/Engine/Source/Developer/SessionServices/Private/SessionServicesModule.cpp
2014-03-14 14:13:41 -04:00

88 lines
1.8 KiB
C++

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
/*=============================================================================
SessionServicesModule.cpp: Implements the FSessionServicesModule class.
=============================================================================*/
#include "SessionServicesPrivatePCH.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(NULL)
, SessionService(NULL)
{ }
public:
// Begin 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();
}
// End ISessionServicesModule interface
public:
// Begin IModuleInterface interface
virtual void StartupModule( ) OVERRIDE
{
MessageBusPtr = IMessagingModule::Get().GetDefaultBus();
check(MessageBusPtr.IsValid());
}
virtual void ShutdownModule( ) OVERRIDE
{
SessionManager.Reset();
SessionService.Reset();
}
// End IModuleInterface interface
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);