From d272410836a25a293a4efd8fd6e8f9bfded04ece Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 18 Mar 2015 21:48:57 +0100 Subject: [PATCH] [DEV] Correct mixer of multiple flow --- river/Interface.cpp | 3 ++- river/Interface.h | 9 ++++++++ river/io/Node.cpp | 51 ++++++++++++++++++++++++--------------------- 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/river/Interface.cpp b/river/Interface.cpp index 71c8523..817a136 100644 --- a/river/Interface.cpp +++ b/river/Interface.cpp @@ -34,7 +34,8 @@ bool river::Interface::init(float _freq, m_config = _config; m_mode = river::modeInterface_unknow; std::string type = m_config->getStringValue("io", "error"); - m_name = _node->getName() + "__" + (_node->isInput()==true?"input":"output") + "__" + type; + static int32_t uid=0; + m_name = _node->getName() + "__" + (_node->isInput()==true?"input":"output") + "__" + type + "__" + etk::to_string(uid++); if (type == "output") { m_mode = river::modeInterface_output; } else if (type == "input") { diff --git a/river/Interface.h b/river/Interface.h index dc5e0b1..1532980 100644 --- a/river/Interface.h +++ b/river/Interface.h @@ -229,6 +229,15 @@ namespace river { public: virtual void generateDot(etk::FSNode& _node, const std::string& _nameIO, bool _isLink=true); virtual std::string getDotNodeName() const; + private: + //statusFunction m_statusFunction; + public: + void generateStatus(const std::string& _origin, const std::string& _status) { + m_process.generateStatus(_origin, _status); + } + void setStatusFunction(drain::statusFunction _newFunction) { + m_process.setStatusFunction(_newFunction); + } }; }; diff --git a/river/io/Node.cpp b/river/io/Node.cpp index 81cbfeb..181330e 100644 --- a/river/io/Node.cpp +++ b/river/io/Node.cpp @@ -219,31 +219,34 @@ int32_t river::io::Node::newOutput(void* _outputBuffer, std::vector output; RIVER_VERBOSE("resize=" << _nbChunk*m_process.getInputConfig().getMap().size()); output.resize(_nbChunk*m_process.getInputConfig().getMap().size(), 0); - const int32_t* outputTmp = nullptr; - std::vector outputTmp2; - RIVER_VERBOSE("resize=" << sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk); - outputTmp2.resize(sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk, 0); - for (size_t iii=0; iii< m_list.size(); ++iii) { - if (m_list[iii] == nullptr) { - continue; - } - if (m_list[iii]->getMode() != river::modeInterface_output) { - continue; - } - RIVER_VERBOSE(" IO name="<< m_list[iii]->getName()); - // clear datas ... - memset(&outputTmp2[0], 0, sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk); - RIVER_VERBOSE(" request Data="<< _nbChunk << " time=" << _time); - m_list[iii]->systemNeedOutputData(_time, &outputTmp2[0], _nbChunk, sizeof(int32_t)*m_process.getInputConfig().getMap().size()); - RIVER_VERBOSE(" Mix it ..."); - outputTmp = reinterpret_cast(&outputTmp2[0]); - // Add data to the output tmp buffer : - for (size_t kkk=0; kkk outputTmp2; + RIVER_VERBOSE("resize=" << sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk); + outputTmp2.resize(sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk, 0); + for (size_t iii=0; iii< m_list.size(); ++iii) { + if (m_list[iii] == nullptr) { + continue; + } + if (m_list[iii]->getMode() != river::modeInterface_output) { + continue; + } + RIVER_VERBOSE(" IO name="<< m_list[iii]->getName() << " " << iii); + // clear datas ... + memset(&outputTmp2[0], 0, sizeof(int32_t)*m_process.getInputConfig().getMap().size()*_nbChunk); + RIVER_VERBOSE(" request Data="<< _nbChunk << " time=" << _time); + m_list[iii]->systemNeedOutputData(_time, &outputTmp2[0], _nbChunk, sizeof(int32_t)*m_process.getInputConfig().getMap().size()); + outputTmp = reinterpret_cast(&outputTmp2[0]); + RIVER_VERBOSE(" Mix it ..."); + // Add data to the output tmp buffer : + for (size_t kkk=0; kkk0) { - m_process.generateDot(_node, 3, m_uid, nameIn, nameOut, true); + m_process.generateDotProcess(_node, 3, m_uid, nameIn, nameOut, true); } _node << " node [shape=square];\n"; if (nbOutput>0) {