20 #ifndef HEDGEHOG_CORE_SENDER_H 21 #define HEDGEHOG_CORE_SENDER_H 25 #include "core_notifier.h" 26 #include "../../../node/core_node.h" 27 #include "../receiver/core_receiver.h" 34 template<
class Output>
43 CoreNode(name, type, numberThreads) {
44 HLOG_SELF(0,
"Creating CoreSender with type: " << (
int) type <<
" and name: " << name)
48 ~CoreSender()
override {HLOG_SELF(0,
"Destructing CoreSender")}
64 virtual std::set<CoreSender<Output> *>
getSenders() = 0;
70 std::map<
CoreNode *, std::shared_ptr<CoreNode>> &correspondenceMap)
override {
72 sender->duplicateEdge(duplicateNode, correspondenceMap);
78 #endif //HEDGEHOG_CORE_SENDER_H NodeType type() const
Node type accessor.
Receiver Interface, receive one data type from CoreSender.
virtual void sendAndNotify(std::shared_ptr< Output > data)=0
Interface to send and notify a data to all connected CoreReceiver.
Core Notifier interface, emit notification to CoreSlot.
virtual void addReceiver(CoreReceiver< Output > *receiver)=0
Interface to add a CoreReceiver to this CoreSender.
~CoreSender() override
CoreSender destructor.
virtual void removeReceiver(CoreReceiver< Output > *receiver)=0
Interface to remove a CoreReceiver from this CoreSender.
NodeType
Hedgehog node's type.
Sender interface, send data to CoreReceiver.
CoreSender(std::string_view const &name, NodeType const type, size_t const numberThreads)
CoreSender constructor.
Main Hedgehog core abstraction.
void duplicateEdge(CoreNode *duplicateNode, std::map< CoreNode *, std::shared_ptr< CoreNode >> &correspondenceMap) override
Duplicate all the edges from this to it's copy duplicateNode.
virtual std::set< CoreSender< Output > * > getSenders()=0
Get inner CoreSender represented by this one in the case of outer graph for example.
std::string_view const & name() const
Node name accessor.
size_t numberThreads() const
Number of threads associated accessor.