1
0
Fork 0

source can create and terminate universes

This commit is contained in:
Kevin Matz 2021-06-20 09:12:14 -04:00
parent f223d5fea4
commit b2316fe388
5 changed files with 29 additions and 4 deletions

View File

@ -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));

View File

@ -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;

View File

@ -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();

View File

@ -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

View File

@ -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_;
};