seperate termination from ending semantics
This commit is contained in:
parent
619430fe50
commit
9f407da475
|
@ -25,27 +25,75 @@
|
|||
|
||||
namespace SACN {
|
||||
|
||||
/**
|
||||
* @brief Source::Source
|
||||
* @param cid
|
||||
*/
|
||||
Source::Source(UUID::uuid cid)
|
||||
: Appliance(cid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Source::create
|
||||
* @param num
|
||||
*/
|
||||
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);
|
||||
return;
|
||||
universes_.emplace(num, new Universe());
|
||||
|
||||
auto source = std::shared_ptr<UniverseSource>(new UniverseSource());
|
||||
source->setCID(this->cid());
|
||||
source->setDescription(this->name());
|
||||
source->setUniverse(num);
|
||||
universes_[num]->setSource(source);
|
||||
}
|
||||
|
||||
Universe * Source::universe(const uint16_t num) {
|
||||
if (universes_.count(num))
|
||||
|
||||
/**
|
||||
* @brief Source::terminate
|
||||
* @param num
|
||||
*/
|
||||
void Source::terminate(const uint16_t num)
|
||||
{
|
||||
if (!universes_.count(num))
|
||||
return;
|
||||
|
||||
auto source = universes_[num]->source();
|
||||
source->setOptions(0 | source->isForced()
|
||||
| source->isPreview()
|
||||
| DATA::STREAM_TERMINATED);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Source::end
|
||||
* @param num
|
||||
*/
|
||||
void Source::end(const uint16_t num)
|
||||
{
|
||||
if (!universes_.count(num))
|
||||
return;
|
||||
|
||||
universes_.erase(num);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Source::universe
|
||||
* @param num
|
||||
* @return
|
||||
*/
|
||||
Universe * Source::universe(const uint16_t num)
|
||||
{
|
||||
if (!universes_.count(num))
|
||||
return 0;
|
||||
|
||||
return universes_.at(num);
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // SACN
|
||||
|
|
|
@ -39,6 +39,9 @@ public:
|
|||
virtual void terminate(const uint16_t);
|
||||
Universe * universe(const uint16_t);
|
||||
|
||||
protected:
|
||||
virtual void end(const uint16_t);
|
||||
|
||||
private:
|
||||
std::unordered_map <uint16_t, Universe *> universes_;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue