2014-12-07 19:09:38 -05:00
|
|
|
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
#include "SessionServicesPrivatePCH.h"
|
2014-12-12 17:38:18 -05:00
|
|
|
#include "ISessionServicesModule.h"
|
2014-03-14 14:13:41 -04:00
|
|
|
#include "ModuleManager.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Implements the SessionServices module.
|
|
|
|
|
*
|
|
|
|
|
* @todo gmp: needs better error handling in case MessageBusPtr is invalid
|
|
|
|
|
*/
|
|
|
|
|
class FSessionServicesModule
|
2015-09-16 22:18:19 -04:00
|
|
|
: public FSelfRegisteringExec
|
|
|
|
|
, public ISessionServicesModule
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
/** Default constructor. */
|
|
|
|
|
FSessionServicesModule()
|
|
|
|
|
: SessionManager(nullptr)
|
|
|
|
|
, SessionService(nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{ }
|
|
|
|
|
|
2015-09-16 22:18:19 -04:00
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
// FSelfRegisteringExec interface
|
|
|
|
|
|
|
|
|
|
virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override
|
|
|
|
|
{
|
|
|
|
|
if (FParse::Command(&Cmd, TEXT("SESSION")))
|
|
|
|
|
{
|
|
|
|
|
if (FParse::Command(&Cmd, TEXT("STATUS")))
|
|
|
|
|
{
|
|
|
|
|
Ar.Logf(TEXT("Instance ID: %s"), *FApp::GetInstanceId().ToString());
|
|
|
|
|
Ar.Logf(TEXT("Instance Name: %s"), *FApp::GetInstanceName());
|
|
|
|
|
Ar.Logf(TEXT("Session ID: %s"), *FApp::GetSessionId().ToString());
|
|
|
|
|
Ar.Logf(TEXT("Session Name: %s"), *FApp::GetSessionName());
|
|
|
|
|
Ar.Logf(TEXT("Session Owner: %s"), *FApp::GetSessionOwner());
|
|
|
|
|
Ar.Logf(TEXT("Standalone: %s"), FApp::IsStandalone() ? *GYes.ToString() : *GNo.ToString());
|
|
|
|
|
}
|
|
|
|
|
else if (FParse::Command(&Cmd, TEXT("SETNAME")))
|
|
|
|
|
{
|
|
|
|
|
FApp::SetSessionName(FParse::Token(Cmd, false));
|
|
|
|
|
}
|
|
|
|
|
else if (FParse::Command(&Cmd, TEXT("SETOWNER")))
|
|
|
|
|
{
|
|
|
|
|
FApp::SetSessionOwner(FParse::Token(Cmd, false));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// show usage
|
|
|
|
|
Ar.Log(TEXT("Usage: SESSION <Command>"));
|
|
|
|
|
Ar.Log(TEXT(""));
|
|
|
|
|
Ar.Log(TEXT("Command"));
|
|
|
|
|
Ar.Log(TEXT(" STATUS = Displays the status of this application session"));
|
|
|
|
|
Ar.Log(TEXT(" SETNAME <Name> = Sets the name of this instance"));
|
|
|
|
|
Ar.Log(TEXT(" SETOWNER <Owner> = Sets the name of the owner of this instance"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
public:
|
|
|
|
|
|
2014-06-12 23:22:18 -04:00
|
|
|
// ISessionServicesModule interface
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
virtual ISessionManagerRef GetSessionManager() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
if (!SessionManager.IsValid())
|
|
|
|
|
{
|
|
|
|
|
SessionManager = MakeShareable(new FSessionManager(MessageBusPtr.Pin().ToSharedRef()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return SessionManager.ToSharedRef();
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
virtual ISessionServiceRef GetSessionService() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
if (!SessionService.IsValid())
|
|
|
|
|
{
|
|
|
|
|
SessionService = MakeShareable(new FSessionService(MessageBusPtr.Pin().ToSharedRef()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return SessionService.ToSharedRef();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2014-06-12 23:22:18 -04:00
|
|
|
// IModuleInterface interface
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
virtual void StartupModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
MessageBusPtr = IMessagingModule::Get().GetDefaultBus();
|
|
|
|
|
check(MessageBusPtr.IsValid());
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
virtual void ShutdownModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
SessionManager.Reset();
|
|
|
|
|
SessionService.Reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
/** Holds a weak pointer to the message bus. */
|
2014-03-14 14:13:41 -04:00
|
|
|
IMessageBusWeakPtr MessageBusPtr;
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
/** Holds the session manager singleton. */
|
2014-03-14 14:13:41 -04:00
|
|
|
ISessionManagerPtr SessionManager;
|
|
|
|
|
|
2014-10-17 19:14:57 -04:00
|
|
|
/** Holds the session service singleton. */
|
2014-03-14 14:13:41 -04:00
|
|
|
ISessionServicePtr SessionService;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_MODULE(FSessionServicesModule, SessionServices);
|