new name for the ArpitratingUniverse class
This commit is contained in:
parent
6def8d52b9
commit
a99a191e13
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 507 KiB After Width: | Height: | Size: 512 KiB |
|
@ -9,8 +9,8 @@ target_sources(${PROJECT_NAME}
|
|||
sacn/data.h
|
||||
sacn/extended.cpp
|
||||
sacn/extended.h
|
||||
sacn/mergeproxyuniverse.cpp
|
||||
sacn/mergeproxyuniverse.h
|
||||
sacn/arbitratinguniverse.cpp
|
||||
sacn/arbitratinguniverse.h
|
||||
sacn/node.cpp
|
||||
sacn/receiver.cpp
|
||||
sacn/sacn.h
|
||||
|
|
|
@ -22,14 +22,14 @@
|
|||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "mergeproxyuniverse.h"
|
||||
#include "arbitratinguniverse.h"
|
||||
|
||||
namespace sACN {
|
||||
|
||||
/**
|
||||
* @brief MergeProxyUniverse::MergeProxyUniverse
|
||||
*/
|
||||
MergeProxyUniverse::MergeProxyUniverse()
|
||||
ArbitratingUniverse::ArbitratingUniverse()
|
||||
: sACN::Universe()
|
||||
{
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ MergeProxyUniverse::MergeProxyUniverse()
|
|||
/**
|
||||
* @brief MergeProxyUniverse::~MergeProxyUniverse
|
||||
*/
|
||||
MergeProxyUniverse::~MergeProxyUniverse()
|
||||
ArbitratingUniverse::~ArbitratingUniverse()
|
||||
{
|
||||
for (auto& [_, universe] : sources_)
|
||||
delete universe;
|
||||
|
@ -49,7 +49,7 @@ MergeProxyUniverse::~MergeProxyUniverse()
|
|||
* @brief MergeProxyUniverse::sources
|
||||
* @return
|
||||
*/
|
||||
const std::vector<DATA::data_header> MergeProxyUniverse::sources() const
|
||||
const std::vector<DATA::data_header> ArbitratingUniverse::sources() const
|
||||
{
|
||||
std::vector<DATA::data_header> keys;
|
||||
for (const auto& [key, _] : sources_)
|
||||
|
@ -63,7 +63,7 @@ const std::vector<DATA::data_header> MergeProxyUniverse::sources() const
|
|||
* @param src
|
||||
* @return
|
||||
*/
|
||||
Universe* MergeProxyUniverse::sourceUniverse(const DATA::data_header &src)
|
||||
Universe* ArbitratingUniverse::sourceUniverse(const DATA::data_header &src)
|
||||
{
|
||||
if (!hasSourceUniverse(src))
|
||||
newProvenance_(src);
|
||||
|
@ -76,7 +76,7 @@ Universe* MergeProxyUniverse::sourceUniverse(const DATA::data_header &src)
|
|||
* @param src
|
||||
* @return
|
||||
*/
|
||||
bool MergeProxyUniverse::hasSourceUniverse(const DATA::data_header& src) const
|
||||
bool ArbitratingUniverse::hasSourceUniverse(const DATA::data_header& src) const
|
||||
{
|
||||
if (sources_.count(src))
|
||||
return true;
|
||||
|
@ -88,7 +88,7 @@ bool MergeProxyUniverse::hasSourceUniverse(const DATA::data_header& src) const
|
|||
* @brief MergeProxyUniverse::hassources
|
||||
* @return
|
||||
*/
|
||||
bool MergeProxyUniverse::hasSources() const
|
||||
bool ArbitratingUniverse::hasSources() const
|
||||
{
|
||||
if (sources_.size())
|
||||
return true;
|
||||
|
@ -100,7 +100,7 @@ bool MergeProxyUniverse::hasSources() const
|
|||
* @brief MergeProxyUniverse::deleteSourceUniverse
|
||||
* @param src
|
||||
*/
|
||||
void MergeProxyUniverse::deleteSourceUniverse(const DATA::data_header& src)
|
||||
void ArbitratingUniverse::deleteSourceUniverse(const DATA::data_header& src)
|
||||
{
|
||||
if (sources_.count(src))
|
||||
{
|
||||
|
@ -114,7 +114,7 @@ void MergeProxyUniverse::deleteSourceUniverse(const DATA::data_header& src)
|
|||
* @brief MergeProxyUniverse::addSourceUniverse
|
||||
* @param universe
|
||||
*/
|
||||
void MergeProxyUniverse::addSourceUniverse(Universe* universe)
|
||||
void ArbitratingUniverse::addSourceUniverse(Universe* universe)
|
||||
{
|
||||
sources_.at(*universe->provenance()) = universe;
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ void MergeProxyUniverse::addSourceUniverse(Universe* universe)
|
|||
* @brief MergeProxyUniverse::dataChangedNotifier
|
||||
* @param dmx
|
||||
*/
|
||||
void MergeProxyUniverse::dataChangedNotifier(DMX::Universe* dmx)
|
||||
void ArbitratingUniverse::dataChangedNotifier(DMX::Universe* dmx)
|
||||
{
|
||||
auto sacn = static_cast<sACN::Universe*>(dmx);
|
||||
auto universe = dominant_();
|
||||
|
@ -140,7 +140,7 @@ void MergeProxyUniverse::dataChangedNotifier(DMX::Universe* dmx)
|
|||
* @brief MergeProxyUniverse::isSyncronized
|
||||
* @return
|
||||
*/
|
||||
bool MergeProxyUniverse::isSyncronized() const
|
||||
bool ArbitratingUniverse::isSyncronized() const
|
||||
{
|
||||
auto universe = dominant_();
|
||||
if (!universe)
|
||||
|
@ -153,7 +153,7 @@ bool MergeProxyUniverse::isSyncronized() const
|
|||
* @brief MergeProxyUniverse::provenance
|
||||
* @return
|
||||
*/
|
||||
std::shared_ptr<DATA::data_header> MergeProxyUniverse::provenance() const
|
||||
std::shared_ptr<DATA::data_header> ArbitratingUniverse::provenance() const
|
||||
{
|
||||
auto universe = dominant_();
|
||||
if (!universe)
|
||||
|
@ -167,7 +167,7 @@ std::shared_ptr<DATA::data_header> MergeProxyUniverse::provenance() const
|
|||
* @param pdu
|
||||
* @param src
|
||||
*/
|
||||
void MergeProxyUniverse::set(std::shared_ptr<ACN::DMP::Pdu> pdu,
|
||||
void ArbitratingUniverse::set(std::shared_ptr<ACN::DMP::Pdu> pdu,
|
||||
std::shared_ptr<DATA::data_header> src)
|
||||
{
|
||||
if (!sources_.count(*src))
|
||||
|
@ -180,7 +180,7 @@ void MergeProxyUniverse::set(std::shared_ptr<ACN::DMP::Pdu> pdu,
|
|||
/**
|
||||
* @brief MergeProxyUniverse::synchronize
|
||||
*/
|
||||
void MergeProxyUniverse::synchronize()
|
||||
void ArbitratingUniverse::synchronize()
|
||||
{
|
||||
for ( auto& [_, uni] : sources_)
|
||||
uni->synchronize();
|
||||
|
@ -191,7 +191,7 @@ void MergeProxyUniverse::synchronize()
|
|||
* @brief MergeProxyUniverse::data
|
||||
* @return
|
||||
*/
|
||||
const DMX::DimmerData * MergeProxyUniverse::data() const
|
||||
const DMX::DimmerData * ArbitratingUniverse::data() const
|
||||
{
|
||||
auto universe = dominant_();
|
||||
if (!universe)
|
||||
|
@ -205,7 +205,7 @@ const DMX::DimmerData * MergeProxyUniverse::data() const
|
|||
* @param s
|
||||
* @return
|
||||
*/
|
||||
uint8_t MergeProxyUniverse::slot(const uint16_t s) const
|
||||
uint8_t ArbitratingUniverse::slot(const uint16_t s) const
|
||||
{
|
||||
auto universe = dominant_();
|
||||
if (!universe)
|
||||
|
@ -218,7 +218,7 @@ uint8_t MergeProxyUniverse::slot(const uint16_t s) const
|
|||
* @brief MergeProxyUniverse::rxRate
|
||||
* @return
|
||||
*/
|
||||
double MergeProxyUniverse::rxRate()
|
||||
double ArbitratingUniverse::rxRate()
|
||||
{
|
||||
auto universe = dominant_();
|
||||
if (!universe)
|
||||
|
@ -231,7 +231,7 @@ double MergeProxyUniverse::rxRate()
|
|||
* @brief MergeProxyUniverse::dominant_
|
||||
* @return
|
||||
*/
|
||||
Universe* MergeProxyUniverse::dominant_() const
|
||||
Universe* ArbitratingUniverse::dominant_() const
|
||||
{
|
||||
Universe* ret = nullptr;
|
||||
for (auto& [_, uni] : sources_)
|
||||
|
@ -249,10 +249,10 @@ Universe* MergeProxyUniverse::dominant_() const
|
|||
* @brief MergeProxyUniverse::newSource_
|
||||
* @param src
|
||||
*/
|
||||
void MergeProxyUniverse::newProvenance_(const DATA::data_header &src)
|
||||
void ArbitratingUniverse::newProvenance_(const DATA::data_header &src)
|
||||
{
|
||||
sources_.emplace(src, new Universe());
|
||||
sources_.at(src)->onData(std::bind(&sACN::MergeProxyUniverse::dataChangedNotifier,
|
||||
sources_.at(src)->onData(std::bind(&sACN::ArbitratingUniverse::dataChangedNotifier,
|
||||
this, std::placeholders::_1));
|
||||
}
|
||||
|
|
@ -31,20 +31,20 @@
|
|||
namespace sACN {
|
||||
|
||||
/**
|
||||
* @brief The MergeProxyUniverse class
|
||||
* @brief The ArbitratingUniverse class
|
||||
*
|
||||
* > \cite sACN 6.2.3.1 Multiple Sources at Highest Priority
|
||||
* >
|
||||
* > It is possible for there to be multiple sources, all transmitting data at the
|
||||
* > highest currently active priority for a given universe. When this occurs,
|
||||
* > receivers must handle these sources in some way.
|
||||
* > It is possible for there to be multiple sources, all transmitting data
|
||||
* > at the highest currently active priority for a given universe. When this
|
||||
* > occurs, receivers must handle these sources in some way.
|
||||
*/
|
||||
class MergeProxyUniverse
|
||||
class ArbitratingUniverse
|
||||
: public sACN::Universe
|
||||
{
|
||||
public:
|
||||
MergeProxyUniverse();
|
||||
~MergeProxyUniverse();
|
||||
ArbitratingUniverse();
|
||||
~ArbitratingUniverse();
|
||||
|
||||
// Source universes:
|
||||
const std::vector<DATA::data_header> sources() const;
|
|
@ -65,7 +65,7 @@ Receiver::~Receiver()
|
|||
void Receiver::subscribe(const uint16_t num) {
|
||||
if (universes_.count(num))
|
||||
return;
|
||||
universes_.emplace(num, new MergeProxyUniverse());
|
||||
universes_.emplace(num, new ArbitratingUniverse());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#include "data.h"
|
||||
#include "extended.h"
|
||||
#include "sacn.h"
|
||||
#include "mergeproxyuniverse.h"
|
||||
#include "arbitratinguniverse.h"
|
||||
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
@ -52,7 +52,7 @@ namespace sACN {
|
|||
* > documentation for the device.
|
||||
*
|
||||
* sACN::Receiver has a merge limit maximum constrained by device memory, not
|
||||
* to excede 18,446,744,073,709,551,615 (2^64) sources.
|
||||
* to excede 18,446,744,073,709,551,615 (2^64) sources on most platforms.
|
||||
*
|
||||
* > \cite sACN If merging or arbitration is implemented the algorithm used
|
||||
* > shall be declared in user documentation for the device.
|
||||
|
@ -93,7 +93,7 @@ protected:
|
|||
void discoveryListHanlder(ACN::PDU::Message<EXTENDED::DISCOVERY::Pdu>);
|
||||
|
||||
private:
|
||||
std::unordered_map<uint16_t, MergeProxyUniverse*> universes_;
|
||||
std::unordered_map<uint16_t, ArbitratingUniverse*> universes_;
|
||||
std::vector<EXTENDED::DISCOVERY::Watcher> discoveryCallbacks_;
|
||||
};
|
||||
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
* @brief \cite sACN E1.31 Lightweight streaming protocol for transport of
|
||||
* DMX512 \cite DMX using ACN \cite ACN.
|
||||
*
|
||||
* > # 1 Introduction
|
||||
* >
|
||||
* > ## 1.1 Scope
|
||||
* >
|
||||
* # 1 Introduction
|
||||
*
|
||||
* ## 1.1 Scope
|
||||
*
|
||||
* > This standard describes a mechanism to transfer DMX512-A [DMX] packets
|
||||
* > over an IP network using a subset of the ACN protocol suite. It covers
|
||||
* > data format, data protocol, data addressing, and network management. It
|
||||
|
@ -41,9 +41,9 @@
|
|||
* > source. Sources transporting either data or synchronization packets must
|
||||
* > also advertise, via the Universe Discovery mechanism, what universes they
|
||||
* > are actively transmitting on.
|
||||
* >
|
||||
* > ## 1.2 Overview and Architecture
|
||||
* >
|
||||
*
|
||||
* ## 1.2 Overview and Architecture
|
||||
*
|
||||
* > This standard can be used to transfer DMX512-A \cite DMX packets of all
|
||||
* > START Codes via an ANSI E1.17 \cite ACN supported network. It also
|
||||
* > defines a method by which this \cite DMX data may be synchronized across
|
||||
|
|
Loading…
Reference in New Issue