Files
UnrealEngineUWP/Engine/Source/Runtime/Messaging/Private/Bus/MessageDispatchTask.cpp
ryan gerleve b41214417e Resolving conflict from Dev-Enterprise.
/src/ROBOMERGE_ENGINE_Dev_Networking/Engine/Source/Runtime/Sockets/Private/BSDSockets/SocketsBSD.cpp - merging //UE4/Main/Engine/Source/Runtime/Sockets/Private/BSDSockets/SocketsBSD.cpp#20


--------------------------------------
Copying //UE4/Dev-Enterprise[at]4705006 to Dev-Main (//UE4/Dev-Main)

#rb none
#lockdown Nick.Penwarden

#ROBOMERGE-OWNER: ryan.gerleve
#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 4705151 in //UE4/Main/...
#ROBOMERGE-BOT: ENGINE (Main -> Dev-Networking)

[CL 4712032 by ryan gerleve in Dev-Networking branch]
2019-01-11 14:26:15 -05:00

74 lines
1.9 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "Bus/MessageDispatchTask.h"
#include "IMessageReceiver.h"
/* FMessageDispatchTask structors
*****************************************************************************/
FMessageDispatchTask::FMessageDispatchTask(
ENamedThreads::Type InThread,
TSharedRef<IMessageContext, ESPMode::ThreadSafe> InContext,
TWeakPtr<IMessageReceiver, ESPMode::ThreadSafe> InRecipient,
TSharedPtr<FMessageTracer, ESPMode::ThreadSafe> InTracer
)
: Context(InContext)
, RecipientPtr(InRecipient)
, Thread(InThread)
, TracerPtr(InTracer)
{ }
/* FMessageDispatchTask interface
*****************************************************************************/
void FMessageDispatchTask::DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent)
{
TSharedPtr<IMessageReceiver, ESPMode::ThreadSafe> Recipient = RecipientPtr.Pin();
if (!Recipient.IsValid())
{
return;
}
auto Tracer = TracerPtr.Pin();
if (Tracer.IsValid())
{
Tracer->TraceDispatchedMessage(Context, Recipient.ToSharedRef(), true);
}
Recipient->ReceiveMessage(Context);
if (TracerPtr.IsValid())
{
Tracer->TraceHandledMessage(Context, Recipient.ToSharedRef());
}
}
TStatId FMessageDispatchTask::GetStatId() const
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FMessageDispatchTask, STATGROUP_TaskGraphTasks);
}
/* FBusNotificationDispatchTask interface
*****************************************************************************/
void FBusNotificationDispatchTask::DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent)
{
TSharedPtr<IBusListener, ESPMode::ThreadSafe> Listener = ListenerPtr.Pin();
if (!Listener.IsValid())
{
return;
}
Listener->NotifyRegistration(Address, Notification);
}
TStatId FBusNotificationDispatchTask::GetStatId() const
{
RETURN_QUICK_DECLARE_CYCLE_STAT(FBusNotificationDispatchTask, STATGROUP_TaskGraphTasks);
}