Check duplicated node by introduing isNodeDuplicated function.
Change-Id: Id7eadd1daaa8d8c87ba91df5003c2cd004f09c60
Signed-off-by: Inki Dae <inki.dae@samsung.com>
std::condition_variable _event;
std::mutex _mutex;
+ bool isNodeDuplicated(const std::vector<std::shared_ptr<INode> > &target, const std::shared_ptr<INode> &newNode);
+
public:
CallbackNode() = default;
virtual ~CallbackNode() = default;
void threadCb(std::shared_ptr<INode> &node);
void verifyGraph();
+ bool isNodeDuplicated(const std::vector<std::shared_ptr<INode> > &target, const std::shared_ptr<INode> &newNode);
public:
TaskManager() = default;
std::condition_variable _event;
std::mutex _mutex;
+ bool isNodeDuplicated(const std::vector<std::shared_ptr<INode> > &target, const std::shared_ptr<INode> &newNode);
+
public:
TaskNode() = default;
virtual ~TaskNode() = default;
*/
#include <cstring>
+#include <algorithm>
#include "SingleoLog.h"
#include "SingleoException.h"
#include "CallbackNode.h"
_cb = cb;
}
+bool CallbackNode::isNodeDuplicated(const vector<shared_ptr<INode> > &target, const shared_ptr<INode> &newNode)
+{
+ return find_if(target.begin(), target.end(),
+ [&newNode](const shared_ptr<INode> &node) { return node == newNode; }) != target.end();
+}
+
void CallbackNode::addDependency(std::shared_ptr<INode> node)
{
+ if (isNodeDuplicated(_dependencies, node)) {
+ SINGLEO_LOGE("A given node has already been registered.");
+ throw InvalidOperation("A given node has already been registered.");
+ }
+
_dependencies.push_back(node);
}
#include <cstring>
#include <queue>
#include <map>
+#include <algorithm>
#include "SingleoException.h"
#include "SingleoLog.h"
return _inputs;
}
+bool TaskManager::isNodeDuplicated(const vector<shared_ptr<INode> > &target, const shared_ptr<INode> &newNode)
+{
+ return find_if(target.begin(), target.end(),
+ [&newNode](const shared_ptr<INode> &node) { return node == newNode; }) != target.end();
+}
+
void TaskManager::addNode(std::shared_ptr<INode> node)
{
+ if (isNodeDuplicated(_nodes, node)) {
+ SINGLEO_LOGE("A given node has already been registered.");
+ throw InvalidOperation("A given node has already been registered.");
+ }
+
_nodes.push_back(node);
node->configure();
}
* limitations under the License.
*/
+#include <algorithm>
+#include "SingleoLog.h"
+#include "SingleoException.h"
#include "TaskNode.h"
using namespace std;
+using namespace singleo::exception;
namespace singleo
{
return _inputBuffer;
}
+bool TaskNode::isNodeDuplicated(const vector<shared_ptr<INode> > &target, const shared_ptr<INode> &newNode)
+{
+ return find_if(target.begin(), target.end(),
+ [&newNode](const shared_ptr<INode> &node) { return node == newNode; }) != target.end();
+}
+
void TaskNode::addDependency(std::shared_ptr<INode> node)
{
+ if (isNodeDuplicated(_dependencies, node)) {
+ SINGLEO_LOGE("A given node has already been registered.");
+ throw InvalidOperation("A given node has already been registered.");
+ }
+
_dependencies.push_back(node);
}