diff --git a/common/cpp/include/asapo/common/internal/asapo_common_c_glue.h b/common/cpp/include/asapo/common/internal/asapo_common_c_glue.h index 6eb5c5cacde31986485ce8e0edf5933692d1a441..d1a85106f16802da239b7202e7aeaf7431981f23 100644 --- a/common/cpp/include/asapo/common/internal/asapo_common_c_glue.h +++ b/common/cpp/include/asapo/common/internal/asapo_common_c_glue.h @@ -103,4 +103,13 @@ AsapoHandlerHolder<std::string>* handle_or_null_t(const std::string& object, } + +template<typename u, typename t> +constexpr bool operator==(const u& lhs, const t& rhs) { + return static_cast<typename std::make_unsigned<u>::type>(lhs) + == static_cast<typename std::make_unsigned<typename std::underlying_type<t>::type>::type>(rhs); +} + + + #endif diff --git a/consumer/api/cpp/src/consumer_c_glue.cpp b/consumer/api/cpp/src/consumer_c_glue.cpp index 7edbfe800694bf7eb2899db1388c14b43a2a14e7..a60cbbb7e8b0e2efe76a60a5d824837803f459ff 100644 --- a/consumer/api/cpp/src/consumer_c_glue.cpp +++ b/consumer/api/cpp/src/consumer_c_glue.cpp @@ -52,11 +52,6 @@ typedef AsapoHandlerHolder<asapo::ConsumerErrorData>* AsapoConsumerErrorDataHand #include <algorithm> -template<typename t> -constexpr bool operator==(const unsigned int& lhs, const t& rhs) { - return lhs == static_cast<typename std::make_unsigned<typename std::underlying_type<t>::type>::type>(rhs); -} - #define dataGetterStart \ asapo::MessageData d; \ asapo::MessageMeta* fi = info ? new asapo::MessageMeta : nullptr; \ diff --git a/producer/api/cpp/src/producer_c_glue.cpp b/producer/api/cpp/src/producer_c_glue.cpp index 67c58df01e8b6f2e3a8d675a9d30c706e213c2a5..debd7d1ee1ebbcaabf01c8a5d466ed54f1ce34ed 100644 --- a/producer/api/cpp/src/producer_c_glue.cpp +++ b/producer/api/cpp/src/producer_c_glue.cpp @@ -14,6 +14,35 @@ typedef AsapoHandlerHolder<asapo::MessageHeader>* AsapoMessageHeaderHandle; extern "C" { #include "asapo/producer_c.h" + static_assert(kOpcodeUnknownOp == asapo::Opcode::kOpcodeUnknownOp&& + kOpcodeTransferData == asapo::Opcode::kOpcodeTransferData&& + kOpcodeTransferDatasetData == asapo::Opcode::kOpcodeTransferDatasetData&& + kOpcodeStreamInfo == asapo::Opcode::kOpcodeStreamInfo&& + kOpcodeLastStream == asapo::Opcode::kOpcodeLastStream&& + kOpcodeGetBufferData == asapo::Opcode::kOpcodeGetBufferData&& + kOpcodeAuthorize == asapo::Opcode::kOpcodeAuthorize&& + kOpcodeTransferMetaData == asapo::Opcode::kOpcodeTransferMetaData&& + kOpcodeDeleteStream == asapo::Opcode::kOpcodeDeleteStream&& + kOpcodeGetMeta == asapo::Opcode::kOpcodeGetMeta&& + kOpcodeCount == asapo::Opcode::kOpcodeCount, + "incompatible bit reps between c++ and c for asapo::OpCode"); + static_assert(kTcp == asapo::RequestHandlerType:: kTcp&& + kFilesystem == asapo::RequestHandlerType:: kFilesystem, + "incompatible bit reps between c++ and c for asapo::RequestHandlerType"); + + static_assert(kInsert == asapo::MetaIngestOp::kInsert&& + kReplace == asapo::MetaIngestOp::kReplace&& + kUpdate == asapo::MetaIngestOp::kUpdate, + "incompatible bit reps between c++ and c for asapo::MetaIngestOp"); + + static_assert(None == asapo::LogLevel::None&& + Error == asapo::LogLevel::Error&& + Info == asapo::LogLevel::Info&& + Debug == asapo::LogLevel::Debug&& + Warning == asapo::LogLevel::Warning, + "incompatible bit reps between c++ and c for asapo::LogLevel"); + + AsapoProducerHandle asapo_create_producer(const char* endpoint, uint8_t n_processing_threads, AsapoRequestHandlerType type,