botw/src/KingSystem/Utils/Thread/MessageTransceiverBase.h

43 lines
1.4 KiB
C++

#pragma once
#include <basis/seadTypes.h>
namespace ksys {
class IMessageBroker;
class IMessageBrokerRegister;
class MessageDispatcherBase;
struct MesTransceiverId;
class MessageReceiverEx;
struct MessageType;
class MessageTransceiverBase {
public:
MessageTransceiverBase();
virtual ~MessageTransceiverBase();
bool checkReceiverFlag() const;
bool isWaitingForAck() const;
virtual bool sendMessage(const MesTransceiverId& dest, const MessageType& type, void* user_data,
bool ack);
virtual bool sendMessageOnProcessingThread(const MesTransceiverId& dest,
const MessageType& type, void* user_data, bool ack);
virtual bool sendMessage(IMessageBroker& broker, const MessageType& type, void* user_data,
bool ack);
virtual bool sendMessageOnProcessingThread(IMessageBroker& broker, const MessageType& type,
void* user_data, bool ack);
virtual MessageReceiverEx* getReceiver() const = 0;
MessageDispatcherBase* getDispatcher();
MesTransceiverId* getId() const { return mId; }
IMessageBrokerRegister* getRegister(IMessageBroker& broker) const;
static void setGlobalDispatcher(MessageDispatcherBase* dispatcher);
private:
static MessageDispatcherBase* sDispatcher;
MessageDispatcherBase* mDispatcher = sDispatcher;
MesTransceiverId* mId{};
};
} // namespace ksys