Program Listing for File FilterBase.h

Return to documentation for file (include/mola_kernel/interfaces/FilterBase.h)

/* -------------------------------------------------------------------------
 *   A Modular Optimization framework for Localization and mApping  (MOLA)
 * Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
 * See LICENSE for license information.
 * ------------------------------------------------------------------------- */
#pragma once

#include <mola_kernel/interfaces/RawDataConsumer.h>
#include <mola_kernel/interfaces/RawDataSourceBase.h>
#include <mrpt/core/WorkerThreadsPool.h>
#include <mrpt/system/COutputLogger.h>

namespace mola
{
class FilterBase : public RawDataSourceBase, RawDataConsumer
{
    DEFINE_VIRTUAL_MRPT_OBJECT(FilterBase)

   public:
    FilterBase();

    virtual CObservation::Ptr doFilter(const CObservation::Ptr& o) = 0;
    void spinOnce() override;

    // Virtual interface of any RawDataConsumer
    void onNewObservation(const CObservation::Ptr& o) override;

   protected:
    // Virtual interface of any RawDataSource
    void initialize_rds(const Yaml& cfg) override;

   private:
    mrpt::WorkerThreadsPool thread_pool_;
};

}  // namespace mola