Program Listing for File ThreadedNode.hpp

Return to documentation for file (include/depthai/pipeline/ThreadedNode.hpp)

#pragma once

#include "depthai/log/LogLevel.hpp"
#include "depthai/pipeline/Node.hpp"
#include "depthai/utility/AtomicBool.hpp"
#include "depthai/utility/JoiningThread.hpp"
#include "depthai/utility/spimpl.h"

namespace dai {

class ThreadedNode : public Node {
   private:
    JoiningThread thread;
    AtomicBool running{false};

   public:
    using Node::Node;
    ThreadedNode();
    virtual ~ThreadedNode();

    virtual void onStart() {}

    virtual void onStop() {}

    // override the following methods
    void start() override;
    void wait() override;
    void stop() override;

    // virtual 'run' method
    virtual void run() = 0;

    // check if still running
    bool isRunning() const;

    virtual void setLogLevel(dai::LogLevel level);

    virtual dai::LogLevel getLogLevel() const;

    class Impl;
    spimpl::impl_ptr<Impl> pimpl;
};

}  // namespace dai