Files
UnrealEngine/Engine/Source/Runtime/Messaging/Public/IMessageSender.h
2025-05-18 13:04:45 +08:00

51 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "IMessageContext.h"
#include "Templates/SharedPointer.h"
class FString;
/**
* Interface for message senders.
*
* Classes that implement this interface are able to send messages on a message bus. Each message sender must be uniquely
* identifiable with a message address that is returned by the IMessageSender.GetSenderAddress method. It is recommended
* that implementors of this interface generate a GUID for each instance, which must not change throughout the lifetime of
* the instance.
*
* The sending of messages is accomplished with the IMessageBus.Forward, IMessageBus.Publish and IMessageBus.Send methods.
* In case an error occurs during the sending of a message, the IMessageSender.NotifyMessageError method will be called.
*
* This interface provides a rather low-level mechanism for receiving messages. Instead of implementing it, Most users will
* want to use an instance of FMessageEndpoint, which provides a much more convenient way of sending and receiving messages.
*
* @see FMessageEndpoint, IMessageBus, IMessageReceiver
*/
class IMessageSender
{
public:
/**
* Gets the sender's address.
*
* @return The message address.
*/
virtual FMessageAddress GetSenderAddress() = 0;
/**
* Notifies the sender of errors.
*
* @param Context The context of the message that generated the error.
* @param Error The error string.
*/
virtual void NotifyMessageError(const TSharedRef<IMessageContext, ESPMode::ThreadSafe>& Context, const FString& Error) = 0;
public:
/** Virtual destructor. */
virtual ~IMessageSender() { }
};