Program Listing for File trickle.hpp

Return to documentation for file (trickle/trickle.hpp)

#ifndef TRICKLE_HPP_
#define TRICKLE_HPP_

#include <list>
#include <map>
#include <csignal>
#include <format>

#include "config/config.hpp"
#include "trickle_manager.hpp"

#include "ers/ers.h"
#include "bus.hpp"
#include "util.hpp"
#include "utility.hpp"

namespace trickle {

ERS_DECLARE_ISSUE(felix_log, trickle_issue, issue_message, ((const std::string&)issue_message))


template <class Config, class Device, class Buffer>
class Trickle {

    public:
        explicit Trickle(std::unique_ptr<Config> config) :
            cfg(std::move(config)), m_hostname(Util::get_full_hostname()){ };

        void start();

        void stop();

    public:
        std::unique_ptr<Config> cfg;
        std::list<std::shared_ptr<Device>> devices;
        std::map<int, std::shared_ptr<Buffer>> dma_buffers; //use device number as id

    private:
        std::string m_hostname{};
        std::map<int, Bus> m_bus_map{};
        std::map<int, std::list<TrickleManager<Buffer>>> m_trickle_managers{};
};

} // namespace trickle

#endif // TRICKLE_MANAGER_HPP_