diff options
| author | Léo Lam <leo@leolam.fr> | 2021-02-05 18:10:37 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-02-05 22:03:02 +0100 |
| commit | d5b981a233dd625815798e7f0db91fd14c2a30d8 (patch) | |
| tree | 2270914a0b09780b81665b97c342a5e1e3038013 /src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp | |
| parent | c2426371f710995aced40f41694355bdc8656861 (diff) | |
ksys: Add ActorMessageTransceiver
Diffstat (limited to 'src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp')
| -rw-r--r-- | src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp b/src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp new file mode 100644 index 00000000..5646de14 --- /dev/null +++ b/src/KingSystem/Utils/Thread/ActorMessageTransceiver.cpp @@ -0,0 +1,62 @@ +#include "KingSystem/Utils/Thread/ActorMessageTransceiver.h" +#include "KingSystem/ActorSystem/actActor.h" +#include "KingSystem/Utils/Thread/MessageTransceiverCommon.h" + +namespace ksys { + +ActorMessageTransceiver::ActorMessageTransceiver(IHandler& handler) : mReceiver(handler) { + registerReceiver(mReceiver); +} + +ActorMessageTransceiver::ActorMessageTransceiver(IHandler& handler, act::Actor* actor) + : mReceiver(handler), mActor(actor) { + registerReceiver(mReceiver); +} + +ActorMessageTransceiver::~ActorMessageTransceiver() { + deregisterReceiver(mReceiver); +} + +bool ActorMessageTransceiver::getDebugArg(bool ack) const { + return mActor && mActor->checkFlag(act::Actor::ActorFlag::_2e) && ack; +} + +bool ActorMessageTransceiver::sendMessage(const MesTransceiverId& dest, const MessageType& type, + void* user_data, bool ack) { + return sendMessageImpl(this, dest, type, user_data, ack, getDebugArg(ack)); +} + +bool ActorMessageTransceiver::sendMessageOnProcessingThread(const MesTransceiverId& dest, + const MessageType& type, + void* user_data, bool ack) { + return sendMessageOnProcessingThreadImpl(this, dest, type, user_data, ack, getDebugArg(ack)); +} + +bool ActorMessageTransceiver::sendMessage(IMessageBroker& broker, const MessageType& type, + void* user_data, bool ack) { + return sendMessageImpl(this, broker, type, user_data, ack, getDebugArg(ack)); +} + +bool ActorMessageTransceiver::sendMessageOnProcessingThread(IMessageBroker& broker, + const MessageType& type, + void* user_data, bool ack) { + return sendMessageOnProcessingThreadImpl(this, broker, type, user_data, ack, getDebugArg(ack)); +} + +MessageReceiverEx* ActorMessageTransceiver::getReceiver() { + return &mReceiver; +} + +ActorMessageTransceiver::Receiver::Receiver(IHandler& handler) : mHandler(handler) {} + +ActorMessageTransceiver::Receiver::~Receiver() = default; + +int ActorMessageTransceiver::Receiver::handleMessage(const Message& message) { + return mHandler.handleMessage(message); +} + +void ActorMessageTransceiver::Receiver::handleAck(const MessageAck& ack) { + return mHandler.handleAck(ack); +} + +} // namespace ksys |
