#pragma once
#ifndef PUBLISHER_H
#define PUBLISHER_H

#include "localize_utils/utils.h"
#include "localize_utils/pcl_point_type.h"
#include "system/parameter.h"

namespace juefx{

class Publisher
{
public:
    using Ptr = boost::shared_ptr<Publisher>;
    Publisher();

    void Reset();

    static Publisher::Ptr& Instance();

    virtual void init(const string &out_pose_topic,
                      const string &out_cloud_topic) = 0;

    virtual void load() = 0;

    virtual void PublishPose(const IsometryData &pose) = 0;

    virtual void PublishCloud(const PointCloudJ &cloud) = 0;
};

} // end of namespace
#endif // PUBLISHER_H