blob: fbf766202c1f895c67063c44fcebf4e322c97027 [file] [log] [blame]
#pragma once
#include <cstddef>
#include <memory>
#include <vector>
#include "Configuration.h"
#include "Message.h"
#include "RocketMQ.h"
#include "SendCallback.h"
ROCKETMQ_NAMESPACE_BEGIN
class FifoProducerImpl;
class FifoProducerBuilder;
class ProducerImpl;
class FifoProducer {
public:
static FifoProducerBuilder newBuilder();
void send(MessageConstPtr message, SendCallback callback);
private:
std::shared_ptr<FifoProducerImpl> impl_;
explicit FifoProducer(std::shared_ptr<FifoProducerImpl> impl) : impl_(std::move(impl)) {
}
void start();
friend class FifoProducerBuilder;
};
class FifoProducerBuilder {
public:
FifoProducerBuilder();
FifoProducerBuilder& withConfiguration(Configuration configuration);
FifoProducerBuilder& withTopics(const std::vector<std::string>& topics);
FifoProducerBuilder& withConcurrency(std::size_t concurrency);
FifoProducer build();
private:
std::shared_ptr<FifoProducerImpl> impl_;
std::shared_ptr<ProducerImpl> producer_impl_;
};
ROCKETMQ_NAMESPACE_END