mirror of
				https://github.com/Telecominfraproject/wlan-cloud-lib-cppkafka.git
				synced 2025-10-31 18:47:48 +00:00 
			
		
		
		
	Export symbols on Windows dll builds
This commit is contained in:
		| @@ -34,6 +34,7 @@ | |||||||
| #include <vector> | #include <vector> | ||||||
| #include <iosfwd> | #include <iosfwd> | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -47,7 +48,7 @@ namespace cppkafka { | |||||||
|  * pointer that this buffer points to will still until the call to Producer::produce |  * pointer that this buffer points to will still until the call to Producer::produce | ||||||
|  * returns. |  * returns. | ||||||
|  */ |  */ | ||||||
| class Buffer { | class CPPKAFKA_API Buffer { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * The type of data this buffer points to |      * The type of data this buffer points to | ||||||
|   | |||||||
| @@ -40,6 +40,7 @@ | |||||||
| #include "topic_configuration.h" | #include "topic_configuration.h" | ||||||
| #include "clonable_ptr.h" | #include "clonable_ptr.h" | ||||||
| #include "configuration_base.h" | #include "configuration_base.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -56,7 +57,7 @@ class KafkaHandleBase; | |||||||
|  * |  * | ||||||
|  * Some other overloads for Configuration::set are given via ConfigurationBase. |  * Some other overloads for Configuration::set are given via ConfigurationBase. | ||||||
|  */ |  */ | ||||||
| class Configuration : public ConfigurationBase<Configuration> { | class CPPKAFKA_API Configuration : public ConfigurationBase<Configuration> { | ||||||
| public: | public: | ||||||
|     using DeliveryReportCallback = std::function<void(Producer& producer, const Message&)>; |     using DeliveryReportCallback = std::function<void(Producer& producer, const Message&)>; | ||||||
|     using OffsetCommitCallback = std::function<void(Consumer& consumer, rd_kafka_resp_err_t, |     using OffsetCommitCallback = std::function<void(Consumer& consumer, rd_kafka_resp_err_t, | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ | |||||||
| #include <functional> | #include <functional> | ||||||
| #include "kafka_handle_base.h" | #include "kafka_handle_base.h" | ||||||
| #include "message.h" | #include "message.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -92,7 +93,7 @@ class TopicConfiguration; | |||||||
|  * } |  * } | ||||||
|  * \endcode |  * \endcode | ||||||
|  */ |  */ | ||||||
| class Consumer : public KafkaHandleBase { | class CPPKAFKA_API Consumer : public KafkaHandleBase { | ||||||
| public: | public: | ||||||
|     using AssignmentCallback = std::function<void(TopicPartitionList&)>; |     using AssignmentCallback = std::function<void(TopicPartitionList&)>; | ||||||
|     using RevocationCallback = std::function<void(const TopicPartitionList&)>; |     using RevocationCallback = std::function<void(const TopicPartitionList&)>; | ||||||
|   | |||||||
| @@ -33,13 +33,14 @@ | |||||||
| #include <stdexcept> | #include <stdexcept> | ||||||
| #include <string> | #include <string> | ||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Base class for all cppkafka exceptions |  * Base class for all cppkafka exceptions | ||||||
|  */ |  */ | ||||||
| class Exception : public std::exception { | class CPPKAFKA_API Exception : public std::exception { | ||||||
| public: | public: | ||||||
|     Exception(std::string message); |     Exception(std::string message); | ||||||
|  |  | ||||||
| @@ -51,7 +52,7 @@ private: | |||||||
| /** | /** | ||||||
|  * A configuration related error |  * A configuration related error | ||||||
|  */ |  */ | ||||||
| class ConfigException : public Exception { | class CPPKAFKA_API ConfigException : public Exception { | ||||||
| public: | public: | ||||||
|     ConfigException(const std::string& config_name, const std::string& error); |     ConfigException(const std::string& config_name, const std::string& error); | ||||||
| }; | }; | ||||||
| @@ -59,7 +60,7 @@ public: | |||||||
| /**  | /**  | ||||||
|  * Indicates a configuration option was not set |  * Indicates a configuration option was not set | ||||||
|  */ |  */ | ||||||
| class ConfigOptionNotFound : public Exception { | class CPPKAFKA_API ConfigOptionNotFound : public Exception { | ||||||
| public: | public: | ||||||
|     ConfigOptionNotFound(const std::string& config_name); |     ConfigOptionNotFound(const std::string& config_name); | ||||||
| }; | }; | ||||||
| @@ -67,7 +68,7 @@ public: | |||||||
| /** | /** | ||||||
|  * A generic rdkafka handle error |  * A generic rdkafka handle error | ||||||
|  */ |  */ | ||||||
| class HandleException : public Exception { | class CPPKAFKA_API HandleException : public Exception { | ||||||
| public: | public: | ||||||
|     HandleException(rd_kafka_resp_err_t error_code); |     HandleException(rd_kafka_resp_err_t error_code); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ | |||||||
| #include "topic_partition_list.h" | #include "topic_partition_list.h" | ||||||
| #include "topic_configuration.h" | #include "topic_configuration.h" | ||||||
| #include "configuration.h" | #include "configuration.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -51,7 +52,7 @@ class TopicMetadata; | |||||||
| /** | /** | ||||||
|  * Base class for kafka consumer/producer |  * Base class for kafka consumer/producer | ||||||
|  */ |  */ | ||||||
| class KafkaHandleBase { | class CPPKAFKA_API KafkaHandleBase { | ||||||
| public: | public: | ||||||
|     using OffsetTuple = std::tuple<int64_t, int64_t>; |     using OffsetTuple = std::tuple<int64_t, int64_t>; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								include/cppkafka/macros.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								include/cppkafka/macros.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2016, Matias Fontanini | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions are | ||||||
|  |  * met: | ||||||
|  |  * | ||||||
|  |  * * Redistributions of source code must retain the above copyright | ||||||
|  |  *   notice, this list of conditions and the following disclaimer. | ||||||
|  |  * * Redistributions in binary form must reproduce the above | ||||||
|  |  *   copyright notice, this list of conditions and the following disclaimer | ||||||
|  |  *   in the documentation and/or other materials provided with the | ||||||
|  |  *   distribution. | ||||||
|  |  * | ||||||
|  |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||||
|  |  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||||
|  |  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||||
|  |  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||||
|  |  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||||
|  |  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||||
|  |  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||||
|  |  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||||
|  |  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||||
|  |  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||||
|  |  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #ifndef CPPKAFKA_MACROS_H | ||||||
|  | #define CPPKAFKA_MACROS_H | ||||||
|  |  | ||||||
|  | // If cppkafka was built into a shared library | ||||||
|  | #if defined(_WIN32) && !defined(CPPKAFKA_STATIC) | ||||||
|  |     // Export/import symbols, depending on whether we're compiling or consuming the lib | ||||||
|  |     #ifdef cppkafka_EXPORTS | ||||||
|  |         #define CPPKAFKA_API __declspec(dllexport) | ||||||
|  |     #else | ||||||
|  |         #define CPPKAFKA_API __declspec(dllimport) | ||||||
|  |     #endif // cppkafka_EXPORTS | ||||||
|  | #else  | ||||||
|  |     // Otherwise, default this to an empty macro | ||||||
|  |     #define CPPKAFKA_API | ||||||
|  | #endif // _WIN32 && !CPPKAFKA_STATIC | ||||||
|  |  | ||||||
|  | #endif // CPPKAFKA_MACROS_H | ||||||
| @@ -35,6 +35,7 @@ | |||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
| #include "buffer.h" | #include "buffer.h" | ||||||
| #include "topic.h" | #include "topic.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -48,7 +49,7 @@ namespace cppkafka { | |||||||
|  * necessary when calling Consumer::poll() as any poll operation that returns a null pointer will |  * necessary when calling Consumer::poll() as any poll operation that returns a null pointer will | ||||||
|  * return an empty message. |  * return an empty message. | ||||||
|  */ |  */ | ||||||
| class Message { | class CPPKAFKA_API Message { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * Constructs a message that won't take ownership of the given pointer |      * Constructs a message that won't take ownership of the given pointer | ||||||
|   | |||||||
| @@ -36,13 +36,14 @@ | |||||||
| #include <cstdint> | #include <cstdint> | ||||||
| #include <unordered_set> | #include <unordered_set> | ||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Represents the metadata for a partition |  * Represents the metadata for a partition | ||||||
|  */ |  */ | ||||||
| class PartitionMetadata { | class CPPKAFKA_API PartitionMetadata { | ||||||
| public: | public: | ||||||
|     PartitionMetadata(const rd_kafka_metadata_partition& partition); |     PartitionMetadata(const rd_kafka_metadata_partition& partition); | ||||||
|  |  | ||||||
| @@ -81,7 +82,7 @@ private: | |||||||
| /** | /** | ||||||
|  * Represents the metadata for a topic |  * Represents the metadata for a topic | ||||||
|  */ |  */ | ||||||
| class TopicMetadata { | class CPPKAFKA_API TopicMetadata { | ||||||
| public: | public: | ||||||
|     TopicMetadata(const rd_kafka_metadata_topic& topic); |     TopicMetadata(const rd_kafka_metadata_topic& topic); | ||||||
|  |  | ||||||
| @@ -108,7 +109,7 @@ private: | |||||||
| /** | /** | ||||||
|  * Represents a broker's metadata |  * Represents a broker's metadata | ||||||
|  */ |  */ | ||||||
| class BrokerMetadata { | class CPPKAFKA_API BrokerMetadata { | ||||||
| public: | public: | ||||||
|     BrokerMetadata(const rd_kafka_metadata_broker_t& broker); |     BrokerMetadata(const rd_kafka_metadata_broker_t& broker); | ||||||
|  |  | ||||||
| @@ -135,7 +136,7 @@ private: | |||||||
| /** | /** | ||||||
|  * Represents metadata for brokers, topics and partitions |  * Represents metadata for brokers, topics and partitions | ||||||
|  */ |  */ | ||||||
| class Metadata { | class CPPKAFKA_API Metadata { | ||||||
| public: | public: | ||||||
|     Metadata(const rd_kafka_metadata_t* ptr); |     Metadata(const rd_kafka_metadata_t* ptr); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -30,6 +30,8 @@ | |||||||
| #ifndef CPPKAFKA_PARTITION_H | #ifndef CPPKAFKA_PARTITION_H | ||||||
| #define CPPKAFKA_PARTITION_H | #define CPPKAFKA_PARTITION_H | ||||||
|  |  | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -38,7 +40,7 @@ namespace cppkafka { | |||||||
|  * This class is basically a wrapper over an int that when default constructed will default |  * This class is basically a wrapper over an int that when default constructed will default | ||||||
|  * to using RD_KAFKA_PARTITION_UA so you don't need to use the macro name. |  * to using RD_KAFKA_PARTITION_UA so you don't need to use the macro name. | ||||||
|  */ |  */ | ||||||
| class Partition { | class CPPKAFKA_API Partition { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * \brief Constructs an unassigned partition |      * \brief Constructs an unassigned partition | ||||||
|   | |||||||
| @@ -36,6 +36,7 @@ | |||||||
| #include "buffer.h" | #include "buffer.h" | ||||||
| #include "topic.h" | #include "topic.h" | ||||||
| #include "partition.h" | #include "partition.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -77,7 +78,7 @@ class TopicConfiguration; | |||||||
|  *  |  *  | ||||||
|  * \endcode |  * \endcode | ||||||
|  */ |  */ | ||||||
| class Producer : public KafkaHandleBase { | class CPPKAFKA_API Producer : public KafkaHandleBase { | ||||||
| public: | public: | ||||||
|     enum PayloadPolicy { |     enum PayloadPolicy { | ||||||
|         COPY_PAYLOAD = RD_KAFKA_MSG_F_COPY, ///< Means RD_KAFKA_MSG_F_COPY |         COPY_PAYLOAD = RD_KAFKA_MSG_F_COPY, ///< Means RD_KAFKA_MSG_F_COPY | ||||||
|   | |||||||
| @@ -34,6 +34,7 @@ | |||||||
| #include <memory> | #include <memory> | ||||||
| #include <boost/optional.hpp> | #include <boost/optional.hpp> | ||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -42,7 +43,7 @@ namespace cppkafka { | |||||||
|  * |  * | ||||||
|  * This is a simple wrapper over a rd_kafka_topic_t* |  * This is a simple wrapper over a rd_kafka_topic_t* | ||||||
|  */ |  */ | ||||||
| class Topic { | class CPPKAFKA_API Topic { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * \brief Creates a Topic object that doesn't take ownership of the handle |      * \brief Creates a Topic object that doesn't take ownership of the handle | ||||||
|   | |||||||
| @@ -35,6 +35,7 @@ | |||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
| #include "clonable_ptr.h" | #include "clonable_ptr.h" | ||||||
| #include "configuration_base.h" | #include "configuration_base.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -46,7 +47,7 @@ class Buffer; | |||||||
|  * |  * | ||||||
|  * ConfigurationBase provides some extra overloads for set |  * ConfigurationBase provides some extra overloads for set | ||||||
|  */ |  */ | ||||||
| class TopicConfiguration : public ConfigurationBase<TopicConfiguration> { | class CPPKAFKA_API TopicConfiguration : public ConfigurationBase<TopicConfiguration> { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * \brief Partitioner callback |      * \brief Partitioner callback | ||||||
|   | |||||||
| @@ -33,13 +33,14 @@ | |||||||
| #include <string> | #include <string> | ||||||
| #include <iosfwd> | #include <iosfwd> | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Represents a topic/partition |  * Represents a topic/partition | ||||||
|  */ |  */ | ||||||
| class TopicPartition { | class CPPKAFKA_API TopicPartition { | ||||||
| public: | public: | ||||||
|     /** |     /** | ||||||
|      * Special offsets enum |      * Special offsets enum | ||||||
|   | |||||||
| @@ -34,6 +34,7 @@ | |||||||
| #include <iosfwd> | #include <iosfwd> | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
| #include <librdkafka/rdkafka.h> | #include <librdkafka/rdkafka.h> | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
| namespace cppkafka { | namespace cppkafka { | ||||||
|  |  | ||||||
| @@ -47,12 +48,12 @@ using TopicPartitionsListPtr = std::unique_ptr<rd_kafka_topic_partition_list_t, | |||||||
| using TopicPartitionList = std::vector<TopicPartition>; | using TopicPartitionList = std::vector<TopicPartition>; | ||||||
|  |  | ||||||
| // Conversions between rdkafka handles and TopicPartitionList | // Conversions between rdkafka handles and TopicPartitionList | ||||||
| TopicPartitionsListPtr convert(const std::vector<TopicPartition>& topic_partitions); | CPPKAFKA_API TopicPartitionsListPtr convert(const std::vector<TopicPartition>& topic_partitions); | ||||||
| std::vector<TopicPartition> convert(const TopicPartitionsListPtr& topic_partitions); | CPPKAFKA_API std::vector<TopicPartition> convert(const TopicPartitionsListPtr& topic_partitions); | ||||||
| std::vector<TopicPartition> convert(rd_kafka_topic_partition_list_t* topic_partitions); | CPPKAFKA_API std::vector<TopicPartition> convert(rd_kafka_topic_partition_list_t* topic_partitions); | ||||||
| TopicPartitionsListPtr make_handle(rd_kafka_topic_partition_list_t* handle); | CPPKAFKA_API TopicPartitionsListPtr make_handle(rd_kafka_topic_partition_list_t* handle); | ||||||
|  |  | ||||||
| std::ostream& operator<<(std::ostream& output, const TopicPartitionList& rhs); | CPPKAFKA_API std::ostream& operator<<(std::ostream& output, const TopicPartitionList& rhs); | ||||||
|  |  | ||||||
| } // cppkafka | } // cppkafka | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Matias Fontanini
					Matias Fontanini