mirror of https://github.com/zeldaret/botw.git
ksys: Add MessageProcessor
This commit is contained in:
parent
176d687698
commit
8ac6752866
|
|
@ -48872,7 +48872,7 @@
|
|||
0x00000071007b6e1c,sub_71007B6E1C,92,
|
||||
0x00000071007b6e78,sub_71007B6E78,160,
|
||||
0x00000071007b6f18,sub_71007B6F18,24,
|
||||
0x00000071007b6f30,sub_71007B6F30,12,_ZN4ksys15MessageReceiver9setField0ERKj
|
||||
0x00000071007b6f30,sub_71007B6F30,12,_ZN4ksys15MessageReceiver10setQueueIdERKj
|
||||
0x00000071007b6f3c,sub_71007B6F3C,88,
|
||||
0x00000071007b6f94,StateMachineWrapper::dtor,80,
|
||||
0x00000071007b6fe4,StateMachineWrapper::dtorDelete,88,
|
||||
|
|
@ -88845,15 +88845,15 @@
|
|||
0x00000071010bfccc,sub_71010BFCCC,8,_ZNK4ksys7Message11getUserDataEv
|
||||
0x00000071010bfcd4,sub_71010BFCD4,8,_ZNK4ksys7Message10getField48Ev
|
||||
0x00000071010bfcdc,sub_71010BFCDC,44,_ZNK4ksys7Message17shouldBeProcessedEv
|
||||
0x00000071010bfd08,sub_71010BFD08,8,_ZNK4ksys7Message10getField60Ev
|
||||
0x00000071010bfd08,sub_71010BFD08,8,_ZNK4ksys7Message9shouldAckEv
|
||||
0x00000071010bfd10,sub_71010BFD10,36,_ZN4ksys7Message14setDestinationERKNS_16MesTransceiverIdE
|
||||
0x00000071010bfd34,sub_71010BFD34,12,_ZN4ksys7Message10setField48ERKj
|
||||
0x00000071010bfd40,Struct1A::ctor,56,_ZN4ksys15MessageReceiverC1Ev
|
||||
0x00000071010bfd78,Struct1A::dtor,28,_ZN4ksys15MessageReceiverD1Ev
|
||||
0x00000071010bfd94,j__ZdlPv_1195,4,_ZN4ksys15MessageReceiverD0Ev
|
||||
0x00000071010bfd98,Struct1C::getId,8,_ZN4ksys15MessageReceiver5getIdEv
|
||||
0x00000071010bfda0,sub_71010BFDA0,8,_ZN4ksys15MessageReceiver2m1EPv
|
||||
0x00000071010bfda8,nullsub_4504,4,_ZN4ksys15MessageReceiver2m2EPv
|
||||
0x00000071010bfda0,sub_71010BFDA0,8,_ZN4ksys15MessageReceiver7receiveERKNS_7MessageE
|
||||
0x00000071010bfda8,nullsub_4504,4,_ZN4ksys15MessageReceiver7receiveERKNS_10MessageAckE
|
||||
0x00000071010bfdac,StateMachine::ctor,44,
|
||||
0x00000071010bfdd8,StateMachine::getState,64,
|
||||
0x00000071010bfe18,StateMachine::run,76,
|
||||
|
|
@ -88875,13 +88875,13 @@
|
|||
0x00000071010c0004,Struct1B::ctor,56,_ZN4ksys17MessageReceiverExC1Ev
|
||||
0x00000071010c003c,j_Struct1A::dtor,4,_ZN4ksys17MessageReceiverExD1Ev
|
||||
0x00000071010c0040,sub_71010C0040,36,_ZN4ksys17MessageReceiverExD0Ev
|
||||
0x00000071010c0064,sub_71010C0064,12,_ZN4ksys17MessageReceiverEx2m1EPv
|
||||
0x00000071010c0070,sub_71010C0070,60,_ZN4ksys17MessageReceiverEx2m2EPv
|
||||
0x00000071010c0064,sub_71010C0064,12,_ZN4ksys17MessageReceiverEx7receiveERKNS_7MessageE
|
||||
0x00000071010c0070,sub_71010C0070,60,_ZN4ksys17MessageReceiverEx7receiveERKNS_10MessageAckE
|
||||
0x00000071010c00ac,sub_71010C00AC,32,_ZNK4ksys17MessageReceiverEx9checkFlagEv
|
||||
0x00000071010c00cc,sub_71010C00CC,16,_ZNK4ksys17MessageReceiverEx12checkCounterEv
|
||||
0x00000071010c00dc,sub_71010C00DC,48,_ZN4ksys17MessageReceiverEx7setFlagEb
|
||||
0x00000071010c010c,sub_71010C010C,8,_ZN4ksys17MessageReceiverEx2m6EPv
|
||||
0x00000071010c0114,nullsub_4510,4,_ZN4ksys17MessageReceiverEx2m7EPv
|
||||
0x00000071010c010c,sub_71010C010C,8,_ZN4ksys17MessageReceiverEx13handleMessageERKNS_7MessageE
|
||||
0x00000071010c0114,nullsub_4510,4,_ZN4ksys17MessageReceiverEx9handleAckERKNS_10MessageAckE
|
||||
0x00000071010c0118,Struct1C::x,16,_ZN4ksys17MessageReceiverEx14setFlagPointerEPh
|
||||
0x00000071010c0128,sub_71010C0128,16,_ZN4ksys17MessageReceiverEx16clearFlagPointerEv
|
||||
0x00000071010c0138,sub_71010C0138,112,_ZNK4ksys17MessageReceiverEx27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
|
|
@ -88890,8 +88890,8 @@
|
|||
0x00000071010c026c,Struct1C::ctor,56,_ZN4ksys22MessageReceiverAdapterC1EPNS_15MessageReceiverE
|
||||
0x00000071010c02a4,Struct1C::dtor,4,_ZN4ksys22MessageReceiverAdapterD1Ev
|
||||
0x00000071010c02a8,sub_71010C02A8,36,_ZN4ksys22MessageReceiverAdapterD0Ev
|
||||
0x00000071010c02cc,sub_71010C02CC,16,_ZN4ksys22MessageReceiverAdapter2m6EPv
|
||||
0x00000071010c02dc,sub_71010C02DC,16,_ZN4ksys22MessageReceiverAdapter2m7EPv
|
||||
0x00000071010c02cc,sub_71010C02CC,16,_ZN4ksys22MessageReceiverAdapter13handleMessageERKNS_7MessageE
|
||||
0x00000071010c02dc,sub_71010C02DC,16,_ZN4ksys22MessageReceiverAdapter9handleAckERKNS_10MessageAckE
|
||||
0x00000071010c02ec,sub_71010C02EC,204,_ZNK4ksys22MessageReceiverAdapter27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x00000071010c03b8,sub_71010C03B8,92,_ZNK4ksys22MessageReceiverAdapter18getRuntimeTypeInfoEv
|
||||
0x00000071010c0414,sub_71010C0414,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys17MessageReceiverExEE9isDerivedEPKNS0_9InterfaceE
|
||||
|
|
@ -96836,10 +96836,10 @@
|
|||
0x00000071012fd400,sub_71012FD400,92,_ZThn632_NK4ksys3res4UMii18getRuntimeTypeInfoEv
|
||||
0x00000071012fd45c,sub_71012FD45C,8,_ZThn632_NK4ksys3res4UMii10needsParseEv
|
||||
0x00000071012fd464,sub_71012FD464,372,_ZN4ksys3res4UMii33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x00000071012fd5d8,sub_71012FD5D8,24,
|
||||
0x00000071012fd5f0,nullsub_4849,4,
|
||||
0x00000071012fd5f4,j__ZdlPv_1323,4,
|
||||
0x00000071012fd5f8,sub_71012FD5F8,532,
|
||||
0x00000071012fd5d8,sub_71012FD5D8,24,_ZN4ksys16MessageProcessorC1EPNS0_6LoggerE
|
||||
0x00000071012fd5f0,nullsub_4849,4,_ZN4ksys16MessageProcessorD1Ev
|
||||
0x00000071012fd5f4,j__ZdlPv_1323,4,_ZN4ksys16MessageProcessorD0Ev
|
||||
0x00000071012fd5f8,sub_71012FD5F8,532,_ZN4ksys16MessageProcessor7processEPNS_7MessageE
|
||||
0x00000071012fd80c,ThreadD0::ctor,60,_ZN4ksys4util9TaskQueueC1EPN4sead4HeapE
|
||||
0x00000071012fd848,sub_71012FD848,52,_ZN4ksys4util9TaskQueueD2Ev
|
||||
0x00000071012fd87c,sub_71012FD87C,60,_ZN4ksys4util9TaskQueueD0Ev
|
||||
|
|
@ -97508,14 +97508,14 @@
|
|||
0x0000007101320b24,sub_7101320B24,4,
|
||||
0x0000007101320b28,sub_7101320B28,88,
|
||||
0x0000007101320b80,sub_7101320B80,32,
|
||||
0x0000007101320ba0,sub_7101320BA0,44,
|
||||
0x0000007101320bcc,nullsub_4864,4,
|
||||
0x0000007101320bd0,j__ZdlPv_1364,4,
|
||||
0x0000007101320bd4,sub_7101320BD4,8,
|
||||
0x0000007101320bdc,sub_7101320BDC,8,
|
||||
0x0000007101320be4,sub_7101320BE4,8,
|
||||
0x0000007101320bec,sub_7101320BEC,8,
|
||||
0x0000007101320bf4,sub_7101320BF4,8,
|
||||
0x0000007101320ba0,sub_7101320BA0,44,_ZN4ksys10MessageAckC1EbbRKNS_16MesTransceiverIdERKNS_11MessageTypeEPv
|
||||
0x0000007101320bcc,nullsub_4864,4,_ZN4ksys10MessageAckD1Ev
|
||||
0x0000007101320bd0,j__ZdlPv_1364,4,_ZN4ksys10MessageAckD0Ev
|
||||
0x0000007101320bd4,sub_7101320BD4,8,_ZNK4ksys10MessageAck18isDestinationValidEv
|
||||
0x0000007101320bdc,sub_7101320BDC,8,_ZNK4ksys10MessageAck9isSuccessEv
|
||||
0x0000007101320be4,sub_7101320BE4,8,_ZNK4ksys10MessageAck14getDestinationEv
|
||||
0x0000007101320bec,sub_7101320BEC,8,_ZNK4ksys10MessageAck7getTypeEv
|
||||
0x0000007101320bf4,sub_7101320BF4,8,_ZNK4ksys10MessageAck11getUserDataEv
|
||||
0x0000007101320bfc,sub_7101320BFC,48,
|
||||
0x0000007101320c2c,sub_7101320C2C,204,
|
||||
0x0000007101320cf8,sub_7101320CF8,92,
|
||||
|
|
|
|||
|
Can't render this file because it is too large.
|
|
|
@ -9,8 +9,12 @@ target_sources(uking PRIVATE
|
|||
Thread/ManagedTaskHandle.h
|
||||
Thread/Message.cpp
|
||||
Thread/Message.h
|
||||
Thread/MessageAck.cpp
|
||||
Thread/MessageAck.h
|
||||
Thread/MessageDispatcherBase.cpp
|
||||
Thread/MessageDispatcherBase.h
|
||||
Thread/MessageProcessor.cpp
|
||||
Thread/MessageProcessor.h
|
||||
Thread/MessageReceiver.cpp
|
||||
Thread/MessageReceiver.h
|
||||
Thread/MessageReceiverAdapter.cpp
|
||||
|
|
|
|||
|
|
@ -6,13 +6,14 @@ Message::Message() = default;
|
|||
|
||||
Message::Message(const MesTransceiverId& source, const MesTransceiverId& destination,
|
||||
const MessageType& type, void* user_data, const Message::DelayParams& delay_params,
|
||||
bool x)
|
||||
bool ack)
|
||||
: mSource(source), mDestination(destination), mType(type), mUserData(user_data),
|
||||
mDelayParams(delay_params), _60(x) {}
|
||||
mDelayParams(delay_params), mShouldAck(ack) {}
|
||||
|
||||
Message::Message(const MesTransceiverId& source, const MessageType& type, void* user_data,
|
||||
const Message::DelayParams& delay_params, bool x)
|
||||
: mSource(source), mType(type), mUserData(user_data), mDelayParams(delay_params), _60(x) {}
|
||||
const Message::DelayParams& delay_params, bool ack)
|
||||
: mSource(source), mType(type), mUserData(user_data), mDelayParams(delay_params),
|
||||
mShouldAck(ack) {}
|
||||
|
||||
Message::~Message() = default;
|
||||
|
||||
|
|
@ -46,8 +47,8 @@ bool Message::shouldBeProcessed() const {
|
|||
return mDelayParams.delayer->shouldProcessMessage();
|
||||
}
|
||||
|
||||
bool Message::getField60() const {
|
||||
return _60;
|
||||
bool Message::shouldAck() const {
|
||||
return mShouldAck;
|
||||
}
|
||||
|
||||
void Message::setDestination(const MesTransceiverId& dest) {
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@ public:
|
|||
|
||||
Message();
|
||||
Message(const MesTransceiverId& source, const MesTransceiverId& destination,
|
||||
const MessageType& type, void* user_data, const DelayParams& delay_params, bool x);
|
||||
const MessageType& type, void* user_data, const DelayParams& delay_params, bool ack);
|
||||
Message(const MesTransceiverId& source, const MessageType& type, void* user_data,
|
||||
const DelayParams& delay_params, bool x);
|
||||
const DelayParams& delay_params, bool ack);
|
||||
|
||||
virtual ~Message();
|
||||
|
||||
|
|
@ -49,11 +49,18 @@ public:
|
|||
virtual const MessageType& getType() const;
|
||||
virtual void* getUserData() const;
|
||||
virtual u32 getField48() const;
|
||||
virtual bool getField60() const;
|
||||
virtual bool shouldAck() const;
|
||||
virtual void setDestination(const MesTransceiverId& dest);
|
||||
virtual void setField48(const u32& v);
|
||||
virtual bool shouldBeProcessed() const;
|
||||
|
||||
bool hasDelayer() const { return mDelayParams.delayer != nullptr; }
|
||||
|
||||
void decrementDelay() {
|
||||
if (mDelayParams.delay_ticks != 0)
|
||||
--mDelayParams.delay_ticks;
|
||||
}
|
||||
|
||||
private:
|
||||
MesTransceiverId mSource{};
|
||||
MesTransceiverId mDestination{};
|
||||
|
|
@ -61,7 +68,7 @@ private:
|
|||
void* mUserData{};
|
||||
u32 _48 = 0xffffffff;
|
||||
DelayParams mDelayParams{};
|
||||
bool _60 = true;
|
||||
bool mShouldAck = true;
|
||||
};
|
||||
|
||||
} // namespace ksys
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
#include "KingSystem/Utils/Thread/MessageAck.h"
|
||||
|
||||
namespace ksys {
|
||||
|
||||
MessageAck::MessageAck(bool dest_valid, bool success,
|
||||
const MesTransceiverId& destination, const MessageType& type,
|
||||
void* user_data)
|
||||
: mDestValid(dest_valid), mSuccess(success), mDestination(destination), mType(type),
|
||||
mUserData(user_data) {}
|
||||
|
||||
MessageAck::~MessageAck() = default;
|
||||
|
||||
bool MessageAck::isDestinationValid() const {
|
||||
return mDestValid;
|
||||
}
|
||||
|
||||
bool MessageAck::isSuccess() const {
|
||||
return mSuccess;
|
||||
}
|
||||
|
||||
const MesTransceiverId& MessageAck::getDestination() const {
|
||||
return mDestination;
|
||||
}
|
||||
|
||||
const MessageType& MessageAck::getType() const {
|
||||
return mType;
|
||||
}
|
||||
|
||||
void* MessageAck::getUserData() const {
|
||||
return mUserData;
|
||||
}
|
||||
|
||||
} // namespace ksys
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#pragma once
|
||||
|
||||
namespace ksys {
|
||||
|
||||
struct MesTransceiverId;
|
||||
struct MessageType;
|
||||
|
||||
class MessageAck {
|
||||
public:
|
||||
MessageAck(bool dest_valid, bool success, const MesTransceiverId& destination,
|
||||
const MessageType& type, void* user_data);
|
||||
virtual ~MessageAck();
|
||||
|
||||
virtual bool isDestinationValid() const;
|
||||
virtual bool isSuccess() const;
|
||||
virtual const MesTransceiverId& getDestination() const;
|
||||
virtual const MessageType& getType() const;
|
||||
virtual void* getUserData() const;
|
||||
|
||||
private:
|
||||
bool mDestValid{};
|
||||
bool mSuccess{};
|
||||
const MesTransceiverId& mDestination;
|
||||
const MessageType& mType;
|
||||
void* mUserData{};
|
||||
};
|
||||
|
||||
} // namespace ksys
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
#include "KingSystem/Utils/Thread/MessageProcessor.h"
|
||||
#include <tuple>
|
||||
#include "KingSystem/Utils/Thread/Message.h"
|
||||
#include "KingSystem/Utils/Thread/MessageAck.h"
|
||||
#include "KingSystem/Utils/Thread/MessageReceiver.h"
|
||||
|
||||
namespace ksys {
|
||||
|
||||
MessageProcessor::MessageProcessor(Logger* logger) : mLogger(logger) {}
|
||||
|
||||
MessageProcessor::~MessageProcessor() = default;
|
||||
|
||||
static bool checkTransceiver(const MesTransceiverId& id) {
|
||||
if (!id.next)
|
||||
return false;
|
||||
|
||||
MesTransceiverId* next = *id.next;
|
||||
if (!next)
|
||||
return false;
|
||||
|
||||
const auto& fields = [](const MesTransceiverId& i) { return std::tie(i.queue_id, i.id); };
|
||||
return fields(id) == fields(*next);
|
||||
}
|
||||
|
||||
bool MessageProcessor::process(Message* message) {
|
||||
message->decrementDelay();
|
||||
|
||||
if (!message->shouldBeProcessed())
|
||||
return false;
|
||||
|
||||
bool success = false;
|
||||
bool dest_valid = false;
|
||||
|
||||
const auto& dest = message->getDestination();
|
||||
if (checkTransceiver(dest)) {
|
||||
success = dest.receiver->receive(*message) & 1;
|
||||
mLogger->log(*message, success);
|
||||
dest_valid = true;
|
||||
}
|
||||
|
||||
const auto& src = message->getSource();
|
||||
if (!message->hasDelayer() || checkTransceiver(src)) {
|
||||
if (message->shouldAck()) {
|
||||
const auto& source = message->getSource();
|
||||
if (checkTransceiver(source)) {
|
||||
auto* receiver = source.receiver;
|
||||
const MessageAck ack{dest_valid, success, message->getDestination(),
|
||||
message->getType(), message->getUserData()};
|
||||
receiver->receive(ack);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mLogger->log(*message, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace ksys
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
namespace ksys {
|
||||
|
||||
class Message;
|
||||
|
||||
class MessageProcessor {
|
||||
public:
|
||||
class Logger {
|
||||
public:
|
||||
Logger() = default;
|
||||
virtual ~Logger() = default;
|
||||
virtual void log(const Message& message, bool success) = 0;
|
||||
};
|
||||
|
||||
explicit MessageProcessor(Logger* logger);
|
||||
virtual ~MessageProcessor();
|
||||
virtual bool process(Message* message);
|
||||
|
||||
private:
|
||||
Logger* mLogger{};
|
||||
};
|
||||
|
||||
} // namespace ksys
|
||||
|
|
@ -12,10 +12,10 @@ MesTransceiverId* MessageReceiver::getId() {
|
|||
return &mTransceiverId;
|
||||
}
|
||||
|
||||
bool MessageReceiver::m1(void*) {
|
||||
int MessageReceiver::receive(const Message& message) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MessageReceiver::m2(void* x) {}
|
||||
void MessageReceiver::receive(const MessageAck& ack) {}
|
||||
|
||||
} // namespace ksys
|
||||
|
|
|
|||
|
|
@ -5,14 +5,17 @@
|
|||
|
||||
namespace ksys {
|
||||
|
||||
class Message;
|
||||
class MessageAck;
|
||||
|
||||
class MessageReceiver {
|
||||
public:
|
||||
MessageReceiver();
|
||||
virtual ~MessageReceiver();
|
||||
virtual MesTransceiverId* getId();
|
||||
virtual bool m1(void*);
|
||||
virtual void m2(void* x);
|
||||
virtual void setField0(const u32& value) { mTransceiverId.queue_id = value; }
|
||||
virtual int receive(const Message& message);
|
||||
virtual void receive(const MessageAck& ack);
|
||||
virtual void setQueueId(const u32& id) { mTransceiverId.queue_id = id; }
|
||||
|
||||
protected:
|
||||
MesTransceiverId mTransceiverId;
|
||||
|
|
|
|||
|
|
@ -2,17 +2,16 @@
|
|||
|
||||
namespace ksys {
|
||||
|
||||
MessageReceiverAdapter::MessageReceiverAdapter(MessageReceiver* wrapped)
|
||||
: mReceiver(wrapped) {}
|
||||
MessageReceiverAdapter::MessageReceiverAdapter(MessageReceiver* wrapped) : mReceiver(wrapped) {}
|
||||
|
||||
MessageReceiverAdapter::~MessageReceiverAdapter() = default;
|
||||
|
||||
bool MessageReceiverAdapter::m6(void* x) {
|
||||
return mReceiver->m1(x);
|
||||
int MessageReceiverAdapter::handleMessage(const Message& message) {
|
||||
return mReceiver->receive(message);
|
||||
}
|
||||
|
||||
void MessageReceiverAdapter::m7(void* x) {
|
||||
return mReceiver->m2(x);
|
||||
void MessageReceiverAdapter::handleAck(const MessageAck& ack) {
|
||||
return mReceiver->receive(ack);
|
||||
}
|
||||
|
||||
} // namespace ksys
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ public:
|
|||
~MessageReceiverAdapter() override;
|
||||
|
||||
protected:
|
||||
bool m6(void* x) override;
|
||||
void m7(void* x) override;
|
||||
int handleMessage(const Message& message) override;
|
||||
void handleAck(const MessageAck& ack) override;
|
||||
|
||||
private:
|
||||
MessageReceiver* mReceiver;
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ MessageReceiverEx::MessageReceiverEx() = default;
|
|||
|
||||
MessageReceiverEx::~MessageReceiverEx() = default;
|
||||
|
||||
bool MessageReceiverEx::m1(void* x) {
|
||||
return m6(x);
|
||||
int MessageReceiverEx::receive(const Message& message) {
|
||||
return handleMessage(message);
|
||||
}
|
||||
|
||||
void MessageReceiverEx::m2(void* x) {
|
||||
m7(x);
|
||||
void MessageReceiverEx::receive(const MessageAck& ack) {
|
||||
handleAck(ack);
|
||||
--mCounter;
|
||||
static_cast<void>(mCounter.load());
|
||||
}
|
||||
|
|
@ -32,11 +32,11 @@ void MessageReceiverEx::setFlag(bool update_counter) {
|
|||
}
|
||||
}
|
||||
|
||||
bool MessageReceiverEx::m6(void* x) {
|
||||
int MessageReceiverEx::handleMessage(const Message& message) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MessageReceiverEx::m7(void* x) {}
|
||||
void MessageReceiverEx::handleAck(const MessageAck& ack) {}
|
||||
|
||||
void MessageReceiverEx::setFlagPointer(u8* ptr) {
|
||||
if (ptr) {
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ class MessageReceiverEx : public MessageReceiver {
|
|||
public:
|
||||
MessageReceiverEx();
|
||||
~MessageReceiverEx() override;
|
||||
bool m1(void*) override;
|
||||
void m2(void* x) override;
|
||||
int receive(const Message& message) override;
|
||||
void receive(const MessageAck& ack) override;
|
||||
|
||||
bool checkFlag() const;
|
||||
bool checkCounter() const;
|
||||
|
|
@ -23,8 +23,8 @@ public:
|
|||
SEAD_RTTI_BASE(MessageReceiverEx)
|
||||
|
||||
protected:
|
||||
virtual bool m6(void* x);
|
||||
virtual void m7(void* x);
|
||||
virtual int handleMessage(const Message& message);
|
||||
virtual void handleAck(const MessageAck& ack);
|
||||
|
||||
private:
|
||||
u8* mFlag{};
|
||||
|
|
|
|||
Loading…
Reference in New Issue