source can create and terminate universes
This commit is contained in:
parent
f223d5fea4
commit
b2316fe388
|
@ -21,7 +21,7 @@ QSacnNode::QSacnNode(QUuid cid)
|
|||
|
||||
void QSacnNode::subscribe(const uint16_t num)
|
||||
{
|
||||
if (universe(num)) // already subscribed
|
||||
if (Receiver::universe(num)) // already subscribed
|
||||
return;
|
||||
qDebug() << "Subscribing to universe" << QString::number(num);
|
||||
Receiver::subscribe(num);
|
||||
|
@ -31,7 +31,7 @@ void QSacnNode::subscribe(const uint16_t num)
|
|||
|
||||
void QSacnNode::unsubscribe(const uint16_t num)
|
||||
{
|
||||
if (!universe(num)) // not subscribed
|
||||
if (!Receiver::universe(num)) // not subscribed
|
||||
return;
|
||||
qDebug() << "Unsubscribing from universe " << QString::number(num);
|
||||
leaveMulticastGroup(IPv4MulticastAddress(num));
|
||||
|
|
|
@ -49,7 +49,7 @@ void Receiver::unsubscribe(const uint16_t num) {
|
|||
universes_.erase(num);
|
||||
}
|
||||
|
||||
SACN::Universe * Receiver::universe(uint16_t universe) {
|
||||
Universe * Receiver::universe(const uint16_t universe) {
|
||||
if (universes_.count(universe))
|
||||
return universes_.at(universe);
|
||||
return 0;
|
||||
|
|
|
@ -39,7 +39,7 @@ public:
|
|||
Receiver(UUID::uuid = UUID::uuid());
|
||||
virtual void subscribe(const uint16_t);
|
||||
virtual void unsubscribe(const uint16_t);
|
||||
SACN::Universe * universe(uint16_t universe);
|
||||
Universe * universe(const uint16_t);
|
||||
|
||||
void discoveryStart();
|
||||
void discoveryStop();
|
||||
|
|
|
@ -31,4 +31,21 @@ Source::Source(UUID::uuid cid)
|
|||
|
||||
}
|
||||
|
||||
void Source::create(const uint16_t num)
|
||||
{
|
||||
if (!universes_.count(num))
|
||||
universes_.emplace(num, new Universe());
|
||||
}
|
||||
|
||||
void Source::terminate(const uint16_t num) {
|
||||
if (universes_.count(num))
|
||||
universes_.erase(num);
|
||||
}
|
||||
|
||||
Universe * Source::universe(const uint16_t num) {
|
||||
if (universes_.count(num))
|
||||
return universes_.at(num);
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // SACN
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "sacn.h"
|
||||
#include "universe.h"
|
||||
#include <unordered_map>
|
||||
|
||||
namespace SACN {
|
||||
|
||||
|
@ -33,6 +35,12 @@ class Source
|
|||
{
|
||||
public:
|
||||
Source(UUID::uuid = UUID::uuid());
|
||||
virtual void create(const uint16_t);
|
||||
virtual void terminate(const uint16_t);
|
||||
Universe * universe(const uint16_t);
|
||||
|
||||
private:
|
||||
std::unordered_map <uint16_t, Universe *> universes_;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue