1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
#pragma once
#include "imessagebus.h"
#include "iradiant.h"
#include "messages/MapOperationMessage.h"
namespace test
{
// Listens for MapOperationMessages
class MapOperationMonitor
{
private:
std::size_t _msgSubscription;
bool _messageReceived;
std::string _lastReceivedMessage;
public:
MapOperationMonitor() :
_messageReceived(false)
{
// Subscribe to the event asking for the target path
_msgSubscription = GlobalRadiantCore().getMessageBus().addListener(
radiant::IMessage::Type::MapOperationFinished,
radiant::TypeListener<map::OperationMessage>(
[this](map::OperationMessage& msg)
{
_messageReceived = true;
_lastReceivedMessage = msg.getMessage();
}));
}
bool messageReceived() const
{
return _messageReceived;
}
const std::string& getLastReceivedMessage() const
{
return _lastReceivedMessage;
}
~MapOperationMonitor()
{
GlobalRadiantCore().getMessageBus().removeListener(_msgSubscription);
}
};
}
|