5#include "CoreMinimal.h"
6#include "Dom/JsonObject.h"
10using TEventMulticastDelegate = TMulticastDelegate<void(
const TEvent& Event)>;
11template <
class TEvent>
12using TEventDelegate =
typename TEventMulticastDelegate<TEvent>::FDelegate;
13template <
class TEvent,
class UserClass>
14using TEventDelegateUObjectMethodPtr =
typename TEventDelegate<TEvent>::template TMethodPtr<UserClass>;
15template <
class TEvent,
class UserClass>
16using TEventDelegateSpMethodPtr =
typename TEventDelegate<TEvent>::template TMethodPtr<UserClass>;
18class IJsonEventSubscription
21 virtual ~IJsonEventSubscription() = 0;
22 virtual bool OnMessage(
const TSharedRef<FJsonObject>&) = 0;
23 virtual int32 Unsubscribe(UObject* Object) = 0;
26inline IJsonEventSubscription::~IJsonEventSubscription() =
default;
29class TJsonEventSubscription final :
public IJsonEventSubscription
32 virtual bool OnMessage(
const TSharedRef<FJsonObject>&)
override;
33 virtual int32 Unsubscribe(UObject* Object)
override;
35 TEventMulticastDelegate<T> Delegate;
38using FEventSubscriptionPtr = TSharedPtr<IJsonEventSubscription>;
41bool TJsonEventSubscription<T>::OnMessage(
const TSharedRef<FJsonObject>&
JsonObject)
48 check(OutStruct.Type == T::StaticType());
50 Delegate.Broadcast(OutStruct);
55int32 TJsonEventSubscription<T>::Unsubscribe(UObject* Object)
57 return Delegate.RemoveAll(Object);
STREAMJSON_API bool JsonObjectToUStruct(const TSharedRef< FJsonObject > &JsonObject, const UStruct *StructDefinition, void *OutStruct)
Converts from a Json Object to a UStruct, using importText.
Definition JsonObjectDeserialization.cpp:684
Conversion to and from dynamic JSON objects.
Definition StreamJson.h:16