Minor fixes to actor wiring
This commit is contained in:
parent
3ccacc2ca9
commit
e77adb65c0
@ -8,6 +8,12 @@
|
|||||||
#ifndef SKULLC_THREADS_ACTOR_OUTPUT_HPP_
|
#ifndef SKULLC_THREADS_ACTOR_OUTPUT_HPP_
|
||||||
#define SKULLC_THREADS_ACTOR_OUTPUT_HPP_
|
#define SKULLC_THREADS_ACTOR_OUTPUT_HPP_
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <optional>
|
||||||
|
#include <variant>
|
||||||
|
|
||||||
|
#include <threads_signal.hpp>
|
||||||
|
|
||||||
namespace Threads
|
namespace Threads
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -19,7 +25,7 @@ private:
|
|||||||
std::array<signal_variant, N> stored_signals_;
|
std::array<signal_variant, N> stored_signals_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using connection_type = std::optional<decltype(stored_signals_)::iterator>;
|
using connection_type = std::optional<typename decltype(stored_signals_)::iterator>;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
connection_type addConnection(Signallable<T>* signal)
|
connection_type addConnection(Signallable<T>* signal)
|
||||||
@ -49,7 +55,9 @@ public:
|
|||||||
{
|
{
|
||||||
if (it == *connection)
|
if (it == *connection)
|
||||||
{
|
{
|
||||||
*it = std::monostate;
|
delete *it;
|
||||||
|
|
||||||
|
*it = std::monostate{};
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,10 +92,17 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, typename Sender, typename Receiver>
|
template<typename T, typename Sender, typename Receiver>
|
||||||
typename Receiver::connection_type connectActors(Sender& sender, Receiver& receiver)
|
auto connectActors(Sender* sender, Receiver* receiver)
|
||||||
{
|
{
|
||||||
auto* signal = sender.getAllocatedSignal<T>();
|
auto* signal = receiver->template getAllocatedSignal<T>();
|
||||||
return receiver.addConnection(signal);
|
return sender->addConnection(signal);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T, typename Sender, typename Receiver>
|
||||||
|
auto connectActors(Sender& sender, Receiver& receiver)
|
||||||
|
{
|
||||||
|
auto* signal = receiver.template getAllocatedSignal<T>();
|
||||||
|
return sender.addConnection(signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
}// namespace Threads
|
}// namespace Threads
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user