Files
UnrealEngineUWP/Engine/Source/Runtime/SessionServices/Private/SessionInstanceInfo.cpp
ryan durand 0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00

109 lines
3.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SessionInstanceInfo.h"
#include "EngineServiceMessages.h"
#include "HAL/PlatformProcess.h"
#include "MessageEndpointBuilder.h"
#include "SessionServiceMessages.h"
#include "SessionLogMessage.h"
/* FSessionInstanceInfo structors
*****************************************************************************/
FSessionInstanceInfo::FSessionInstanceInfo(const FGuid& InInstanceId, const TSharedRef<ISessionInfo>& InOwner, const TSharedRef<IMessageBus, ESPMode::ThreadSafe>& InMessageBus)
: Authorized(false)
, EngineVersion(0)
, InstanceId(InInstanceId)
, Owner(InOwner)
{
MessageEndpoint = FMessageEndpoint::Builder("FSessionInstanceInfo", InMessageBus)
.Handling<FSessionServiceLog>(this, &FSessionInstanceInfo::HandleSessionLogMessage);
}
/* FSessionInstanceInfo interface
*****************************************************************************/
void FSessionInstanceInfo::UpdateFromMessage(const FEngineServicePong& Message, const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context)
{
if (Message.InstanceId != InstanceId)
{
return;
}
CurrentLevel = Message.CurrentLevel;
EngineAddress = Context->GetSender();
EngineVersion = Message.EngineVersion;
HasBegunPlay = Message.HasBegunPlay;
WorldTimeSeconds = Message.WorldTimeSeconds;
InstanceType = Message.InstanceType;
}
void FSessionInstanceInfo::UpdateFromMessage(const FSessionServicePong& Message, const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context)
{
if (Message.InstanceId != InstanceId)
{
return;
}
if (MessageEndpoint.IsValid() && (ApplicationAddress != Context->GetSender()))
{
MessageEndpoint->Send(new FSessionServiceLogSubscribe(), Context->GetSender());
}
Authorized = Message.Authorized;
ApplicationAddress = Context->GetSender();
BuildDate = Message.BuildDate;
DeviceName = Message.DeviceName;
InstanceName = Message.InstanceName;
PlatformName = Message.PlatformName;
LastUpdateTime = FDateTime::UtcNow();
}
/* FSessionInstanceInfo interface
*****************************************************************************/
void FSessionInstanceInfo::ExecuteCommand(const FString& CommandString)
{
if (MessageEndpoint.IsValid() && EngineAddress.IsValid())
{
MessageEndpoint->Send(new FEngineServiceExecuteCommand(CommandString, FPlatformProcess::UserName(false)), EngineAddress);
}
}
void FSessionInstanceInfo::Terminate()
{
if (MessageEndpoint.IsValid() && EngineAddress.IsValid())
{
MessageEndpoint->Send(new FEngineServiceTerminate(FPlatformProcess::UserName(false)), EngineAddress);
}
}
/* FSessionInstanceInfo callbacks
*****************************************************************************/
void FSessionInstanceInfo::HandleSessionLogMessage(const FSessionServiceLog& Message, const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context)
{
TSharedRef<FSessionLogMessage> LogMessage = MakeShareable(
new FSessionLogMessage(
InstanceId,
InstanceName,
Message.TimeSeconds,
Message.Data,
(ELogVerbosity::Type)Message.Verbosity,
Message.Category
)
);
LogMessages.Add(LogMessage);
LogReceivedEvent.Broadcast(AsShared(), LogMessage);
}