#pragma once

#include <map>
#include <memory>
#include <thread>

#include "behavior/tasks/types.hpp"
#include "behavior/tasks/base/BaseTask.hpp"


namespace drp::managers {

/**
 * The SendManager class.
 * Handle everything related to sending messages.
 */
class SendManager {
public:
    explicit SendManager(const std::shared_ptr<Context>& context);

    void run() const;
    [[noreturn]] void loop() const;

private:
    std::shared_ptr<Context> context;
    std::map<task::TaskType, std::shared_ptr<task::BaseTask>> registry;
};


}