Browse Source

* Update cmake project structure

* Replaced cpputils with cppcore and cpplogging library
master
bergmann 6 years ago
parent
commit
1cd9f577c0
23 changed files with 330 additions and 202 deletions
  1. +3
    -0
      .gitmodules
  2. +54
    -13
      CMakeLists.txt
  3. +0
    -46
      cmake/Findcpputils.cmake
  4. +0
    -33
      cmake/Findrabbitmq.cmake
  5. +16
    -0
      cmake/config.h.in
  6. +10
    -0
      cmake/cppamqp-config.cmake
  7. +31
    -0
      cmake/cppamqp-var.cmake
  8. +1
    -1
      cmake/modules
  9. +0
    -6
      cmake/options.cmake
  10. +0
    -4
      include/cppamqp/config.h
  11. +5
    -5
      include/cppamqp/enums.h
  12. +3
    -3
      include/cppamqp/exception.h
  13. +4
    -4
      include/cppamqp/exception.inl
  14. +15
    -15
      include/cppamqp/publish_options.h
  15. +133
    -34
      src/CMakeLists.txt
  16. +2
    -2
      src/cppamqp/channel.cpp
  17. +3
    -3
      src/cppamqp/connection.cpp
  18. +4
    -4
      src/cppamqp/helper.cpp
  19. +1
    -1
      src/cppamqp/publish_options.cpp
  20. +39
    -26
      test/CMakeLists.txt
  21. +0
    -0
      test/cppamqp/amqp.cpp
  22. +4
    -1
      test/cppamqp/mock.cpp
  23. +2
    -1
      test/cppamqp/mock.h

+ 3
- 0
.gitmodules View File

@@ -1,3 +1,6 @@
[submodule "cmake/modules"]
path = cmake/modules
url = b3rgmann@git.bergmann89.de:cpp/CmakeModules.git
[submodule "/home/bergmann/projects/TotoStarOnline/projects/worker/cppamqp/cmake/modules"]
path = /home/bergmann/projects/TotoStarOnline/projects/worker/cppamqp/cmake/modules
url = b3rgmann@git.bergmann89.de:cpp/CmakeModules.git

+ 54
- 13
CMakeLists.txt View File

@@ -1,15 +1,56 @@
# Initialize CMake ################################################################################

CMake_Minimum_Required ( VERSION 3.5.1 FATAL_ERROR )
Include ( CTest )
If ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/" )

# Projects ########################################################################################

Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )
CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR )

# Set CMAKE_BUILD_TYPE
If ( NOT CMAKE_BUILD_TYPE )
Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE )
EndIf ( NOT CMAKE_BUILD_TYPE )
Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel )

# Set CMAKE_MODULE_PATH
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
EndIf ( )
If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" )
Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" )
EndIf ( )

# Project #########################################################################################

Include ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppamqp-var.cmake" )
Project ( cppamqp
DESCRIPTION "A simple library"
VERSION "${CPPAMQP_VERSION}" )
Include ( CTest )
Include ( GNUInstallDirs )

# Subdirectories
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test )

# Install
Include ( CMakePackageConfigHelpers )
Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppamqp-config-version.cmake"
VERSION ${CPPAMQP_VERSION}
COMPATIBILITY AnyNewerVersion )
Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppamqp-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppamqp-config.cmake"
@ONLY )

Set ( ConfigPackageLocation "${CPPAMQP_INSTALL_DIR_SHARE}/cmake" )
Install ( EXPORT
cppamqp
NAMESPACE
cppamqp::
DESTINATION
${ConfigPackageLocation} )
Install ( FILES
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppamqp-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cppamqp-config-version.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel )

+ 0
- 46
cmake/Findcpputils.cmake View File

@@ -1,46 +0,0 @@
Include ( ExternalProject )
Include ( FindPackageHandleStandardArgs )

Set ( CPPUTILS_PATH ${CMAKE_BINARY_DIR}/extern/cpputils )

If ( NOT TARGET cpputils_extern )
ExternalProject_Add ( cpputils_extern
PREFIX ${CPPUTILS_PATH}
TMP_DIR ${CPPUTILS_PATH}/tmp
STAMP_DIR ${CPPUTILS_PATH}/stamp
SOURCE_DIR ${CPPUTILS_PATH}/src
BINARY_DIR ${CPPUTILS_PATH}/build
INSTALL_DIR ${CPPUTILS_PATH}/install
GIT_REPOSITORY "https://git.bergmann89.de/cpp/cpputils.git"
GIT_TAG "master"
TEST_COMMAND make test
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH})
EndIf ( )

Set ( CPPUTILS_LIBRARY ${CPPUTILS_PATH}/install/lib/libcpputils.so )
Set ( CPPUTILS_INCLUDE_DIR ${CPPUTILS_PATH}/install/include )
Set ( CPPUTILS_LIBRARIES ${CPPUTILS_LIBRARY} )
Set ( CPPUTILS_INCLUDE_DIRS ${CPPUTILS_INCLUDE_DIR} )

File ( MAKE_DIRECTORY ${CPPUTILS_INCLUDE_DIR} )

Find_Package_Handle_Standard_Args ( cpputils DEFAULT_MSG
CPPUTILS_LIBRARY
CPPUTILS_INCLUDE_DIR )

If ( NOT TARGET cpputils )
Add_Library ( cpputils SHARED IMPORTED )
Add_Dependencies ( cpputils cpputils_extern )
Set_Property ( TARGET cpputils
PROPERTY IMPORTED_LOCATION ${CPPUTILS_LIBRARY} )
Set_Property ( TARGET cpputils
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CPPUTILS_INCLUDE_DIRS} )
Install ( FILES ${CPPUTILS_LIBRARY} DESTINATION lib )
If ( CPPHIBERNATE_INSTALL_DEV_FILES )
Install ( DIRECTORY ${CPPUTILS_INCLUDE_DIR}/ DESTINATION include )
EndIf ( )
EndIf ( )

+ 0
- 33
cmake/Findrabbitmq.cmake View File

@@ -1,33 +0,0 @@
Find_Library ( RABBITMQ_LIBRARY
NAMES rabbitmq
PATH_SUFFIXES rabbitmq )

Find_File ( RABBITMQ_INCLUDE_DIR
NAMES amqp.h )

Get_Filename_Component ( RABBITMQ_INCLUDE_DIR
${RABBITMQ_INCLUDE_DIR}
DIRECTORY )

Include ( FindPackageHandleStandardArgs )

Find_Package_Handle_Standard_Args ( rabbitmq DEFAULT_MSG
RABBITMQ_LIBRARY
RABBITMQ_INCLUDE_DIR )

Mark_As_Advanced ( RABBITMQ_LIBRARY
RABBITMQ_LIBRARIES )

If ( RABBITMQ_FOUND )
Set ( RABBITMQ_LIBRARIES ${RABBITMQ_LIBRARY} )
Set ( RABBITMQ_INCLUDE_DIRS ${RABBITMQ_INCLUDE_DIR} )

If ( NOT TARGET rabbitmq )
Add_Library ( rabbitmq UNKNOWN IMPORTED )
Set_Property ( TARGET rabbitmq
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${RABBITMQ_INCLUDE_DIRS}" )
Set_Property ( TARGET rabbitmq
APPEND
PROPERTY IMPORTED_LOCATION "${RABBITMQ_LIBRARY}")
EndIf ( )
EndIf ( )

+ 16
- 0
cmake/config.h.in View File

@@ -0,0 +1,16 @@
#pragma once

#include <amqp.h>
#include <amqp_tcp_socket.h>

#cmakedefine CPPAMQP_HAS_CPPLOGGING

#ifdef CPPAMQP_HAS_CPPLOGGING
#include <cpplogging/interface.h>
#define cppamqp_log(p_level) \
cpplogging_global_log(p_level)
#else
#include <iostream>
#define cppamqp_log(p_level) \
::std::cout << #p_level << ' ' << __FILE__ << ':' << __LINE__ << " - "
#endif

+ 10
- 0
cmake/cppamqp-config.cmake View File

@@ -0,0 +1,10 @@
# cppamqp-config.cmake - package configuration file

Message ( WARNING "Please configure the dependencies of this package!" )
# Include ( CMakeFindDependencyMacro )
# Find_Dependency ( <dependency> )

Include ( FindPackageHandleStandardArgs )
Set ( ${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE} )
Find_Package_Handle_Standard_Args ( cppamqp CONFIG_MODE )
Include ( "${CMAKE_CURRENT_LIST_DIR}/cppamqp.cmake")

+ 31
- 0
cmake/cppamqp-var.cmake View File

@@ -0,0 +1,31 @@
# Version
Set ( CPPAMQP_VERSION_MAJOR 1 )
Set ( CPPAMQP_VERSION_MINOR 0 )
Set ( CPPAMQP_VERSION_PATCH 0 )
Set ( CPPAMQP_VERSION_BUILD 0 )
Set ( CPPAMQP_VERSION_SHORT "${CPPAMQP_VERSION_MAJOR}.${CPPAMQP_VERSION_MINOR}" )
Set ( CPPAMQP_VERSION "${CPPAMQP_VERSION_SHORT}.${CPPAMQP_VERSION_PATCH}.${CPPAMQP_VERSION_BUILD}" )
Set ( CPPAMQP_NAME "cppamqp-${CPPAMQP_VERSION_SHORT}" )
Set ( CPPAMQP_OUTPUTNAME "cppamqp" )

# Install directories
Set ( CPPAMQP_INSTALL_DIR_INCLUDE "include/${CPPAMQP_NAME}" )
Set ( CPPAMQP_INSTALL_DIR_LIB "lib" )
Set ( CPPAMQP_INSTALL_DIR_SHARE "share/${CPPAMQP_NAME}" )

# C Standard
Set ( CMAKE_C_STANDARD 11 )
Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_STANDARD_REQUIRED ON )
Set ( CMAKE_CXX_STANDARD_REQUIRED ON )

# Git Version
Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER )
If ( HAS_GIT_HELPER )
GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/..
CPPAMQP_VERSION_MAJOR
CPPAMQP_VERSION_MINOR
CPPAMQP_VERSION_PATCH
CPPAMQP_VERSION_BUILD
CPPAMQP_VERSION_HASH )
EndIf ( )

+ 1
- 1
cmake/modules

@@ -1 +1 @@
Subproject commit b125a1a176ae0aada1cd2ec90919061d202dcea9
Subproject commit 1a32531aef2deeebd5637b1873bc4e976628801c

+ 0
- 6
cmake/options.cmake View File

@@ -1,6 +0,0 @@
Option ( CPPAMQP_BUILD_SHARED
"Build cppamqp shared library"
ON )
Option ( CPPAMQP_INSTALL_DEV_FILES
"Install development files of cppamqp"
ON )

+ 0
- 4
include/cppamqp/config.h View File

@@ -1,4 +0,0 @@
#pragma once

#include <amqp.h>
#include <amqp_tcp_socket.h>

+ 5
- 5
include/cppamqp/enums.h View File

@@ -1,7 +1,7 @@
#pragma once

#include <cppamqp/config.h>
#include <cpputils/misc/flags.h>
#include <cppcore/misc/flags.h>

namespace cppamqp
{
@@ -28,14 +28,14 @@ namespace cppamqp
exclusive,
auto_delete,
};
using queue_flags = utl::shifted_flags<queue_flag>;
using queue_flags = ::cppcore::shifted_flags<queue_flag>;

enum class publish_flag
{
mandatory,
immediate,
};
using publish_flags = utl::shifted_flags<publish_flag>;
using publish_flags = ::cppcore::shifted_flags<publish_flag>;

enum class consume_flag
{
@@ -43,6 +43,6 @@ namespace cppamqp
no_ack,
exclusive,
};
using consume_flags = utl::shifted_flags<consume_flag>;
using consume_flags = ::cppcore::shifted_flags<consume_flag>;

}
}

+ 3
- 3
include/cppamqp/exception.h View File

@@ -3,13 +3,13 @@
#include <string>
#include <cppamqp/enums.h>
#include <cppamqp/config.h>
#include <cpputils/misc/exception.h>
#include <cppcore/misc/exception.h>

namespace cppamqp
{

struct exception
: public utl::exception
: public ::cppcore::exception
{
amqp_status_enum status { AMQP_STATUS_OK };

@@ -18,4 +18,4 @@ namespace cppamqp
inline exception(const std::string& p_message, amqp_status_enum p_status);
};

}
}

+ 4
- 4
include/cppamqp/exception.inl View File

@@ -6,18 +6,18 @@ namespace cppamqp
{

exception::exception(const std::string& p_message) :
utl::exception (p_message)
::cppcore::exception (p_message)
{ }

exception::exception(amqp_status_enum p_status) :
utl::exception (amqp_error_string2(p_status)),
::cppcore::exception (amqp_error_string2(p_status)),
status (p_status)
{ }

exception::exception(const std::string& p_message, amqp_status_enum p_status) :
utl::exception (p_message + " - " + amqp_error_string2(p_status) +
::cppcore::exception (p_message + " - " + amqp_error_string2(p_status) +
"(" + std::to_string(static_cast<int>(p_status)) + ")"),
status (p_status)
{ }

}
}

+ 15
- 15
include/cppamqp/publish_options.h View File

@@ -2,7 +2,7 @@

#include <cppamqp/enums.h>
#include <cppamqp/config.h>
#include <cpputils/container/nullable.h>
#include <cppcore/misc/nullable.h>

namespace cppamqp
{
@@ -15,19 +15,19 @@ namespace cppamqp
mutable amqp_basic_properties_t _properties;

public:
utl::nullable<std::string> content_type;
utl::nullable<std::string> content_encoding;
utl::nullable<delivery_mode_t> delivery_mode;
utl::nullable<uint8_t> priority;
utl::nullable<std::string> correlation_id;
utl::nullable<std::string> reply_to;
utl::nullable<std::string> expiration;
utl::nullable<std::string> message_id;
utl::nullable<uint64_t> timestamp;
utl::nullable<std::string> type;
utl::nullable<std::string> user_id;
utl::nullable<std::string> app_id;
utl::nullable<std::string> cluster_id;
::cppcore::nullable<std::string> content_type;
::cppcore::nullable<std::string> content_encoding;
::cppcore::nullable<delivery_mode_t> delivery_mode;
::cppcore::nullable<uint8_t> priority;
::cppcore::nullable<std::string> correlation_id;
::cppcore::nullable<std::string> reply_to;
::cppcore::nullable<std::string> expiration;
::cppcore::nullable<std::string> message_id;
::cppcore::nullable<uint64_t> timestamp;
::cppcore::nullable<std::string> type;
::cppcore::nullable<std::string> user_id;
::cppcore::nullable<std::string> app_id;
::cppcore::nullable<std::string> cluster_id;

inline publish_options();
inline publish_options(const amqp_basic_properties_t& prop);
@@ -38,4 +38,4 @@ namespace cppamqp
void reset ();
};

}
}

+ 133
- 34
src/CMakeLists.txt View File

@@ -1,48 +1,147 @@
# Initialize ######################################################################################

Include ( cotire OPTIONAL )
Include ( pedantic OPTIONAL )
Include ( strip_symbols OPTIONAL )
Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )

Include ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/options.cmake )
Option ( CPPAMQP_INSTALL_HEADER
"Install headers of cppamqp."
ON )
Option ( CPPAMQP_INSTALL_STATIC
"Install static library of cppamqp."
ON )
Option ( CPPAMQP_INSTALL_SHARED
"Install shared library of cppamqp."
ON )
Option ( CPPAMQP_INSTALL_DEBUG
"Install the stripped debug informations of cppamqp."
OFF )
Option ( CPPAMQP_NO_STRIP
"Do not strip debug symbols from binary."
OFF )

Set ( BUILD_SHARED_LIBS ${CPPAMQP_BUILD_SHARED} )
Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PEDANTIC_C_FLAGS}" )
Set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PEDANTIC_CXX_FLAGS}" )

# Dependencies ####################################################################################

Find_Package ( cpputils REQUIRED )
Find_Package ( rabbitmq REQUIRED )
Find_Package ( cppcore REQUIRED )
Find_Package ( cpplogging )
If ( cpplogging_FOUND )
Set ( CPPAMQP_HAS_CPPLOGGING true )
EndIf ( )

# Project: cppamqp ###############################################################################
# Object Library ##################################################################################

# Build
Project ( cppamqp VERSION 1.0.0.0 LANGUAGES CXX )
Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
Set ( CPPAMQP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
File ( GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
Add_Library ( cppamqp ${SOURCE_FILES} )
Target_Include_Directories ( cppamqp
PUBLIC ${CPPAMQP_INCLUDE_DIR} )
Target_Link_Libraries ( cppamqp
cpputils
rabbitmq )
Set ( CPPAMQP_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
${CPPAMQP_GENERATED_INCLUDE_DIR}/cppamqp/config.h )
File ( GLOB_RECURSE CPPAMQP_HEADER_FILES ${CPPAMQP_INCLUDE_DIR}/*.h )
File ( GLOB_RECURSE CPPAMQP_INLINE_FILES ${CPPAMQP_INCLUDE_DIR}/*.inl )
File ( GLOB_RECURSE CPPAMQP_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
Add_Library ( cppamqp-objects
OBJECT
${CPPAMQP_HEADER_FILES}
${CPPAMQP_INLINE_FILES}
${CPPAMQP_SOURCE_FILES} )
Target_Include_Directories ( cppamqp-objects
PUBLIC
$<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
$<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
Target_Link_Libraries ( cppamqp-objects
PUBLIC
cppcore::cppcore )
If ( CPPAMQP_HAS_CPPLOGGING )
Target_Link_Libraries ( cppamqp-objects
PUBLIC
cpplogging::cpplogging-shared )
EndIf ( )

# Static Library ##################################################################################

Add_Library ( cppamqp-static STATIC $<TARGET_OBJECTS:cppamqp-objects> )
Set_Target_Properties ( cppamqp-static
PROPERTIES
OUTPUT_NAME "${CPPAMQP_OUTPUTNAME}"
VERSION ${CPPAMQP_VERSION} )
Target_Include_Directories ( cppamqp-static
PUBLIC
$<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
$<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
If ( CPPAMQP_HAS_CPPLOGGING )
Target_Link_Libraries ( cppamqp-static
PUBLIC
rabbitmq::rabbitmq-static
cpplogging::cpplogging-static )
EndIf ( )

# Shared Library ##################################################################################

Add_Library ( cppamqp-shared SHARED $<TARGET_OBJECTS:cppamqp-objects> )
Set_Target_Properties ( cppamqp-shared
PROPERTIES
OUTPUT_NAME "${CPPAMQP_OUTPUTNAME}"
VERSION ${CPPAMQP_VERSION}
SOVERSION ${CPPAMQP_VERSION_SHORT} )
Target_Include_Directories ( cppamqp-shared
PUBLIC
$<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
$<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
If ( CPPAMQP_HAS_CPPLOGGING )
Target_Link_Libraries ( cppamqp-shared
PUBLIC
rabbitmq::rabbitmq-shared
cpplogging::cpplogging-shared )
EndIf ( )

# Optimization ####################################################################################

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( cppamqp-objects ALL )
Pedantic_Apply_Flags_Target ( cppamqp-static ALL )
Pedantic_Apply_Flags_Target ( cppamqp-shared ALL )
EndIf ( )

# cotire
If ( HAS_COTIRE )
Cotire ( cppamqp-objects )
Cotire ( cppamqp-static )
Cotire ( cppamqp-shared )
EndIf ( )

# Install #########################################################################################

# Header
If ( CPPAMQP_INSTALL_HEADER )
Install ( FILES ${CPPAMQP_INCLUDE_DIR}/cppamqp.h
DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
Install ( DIRECTORY ${CPPAMQP_INCLUDE_DIR}/cppamqp
DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
Install ( DIRECTORY ${CPPAMQP_GENERATED_INCLUDE_DIR}/cppamqp
DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
EndIf ( )

# Install
If ( BUILD_SHARED_LIBS OR CPPAMQP_INSTALL_DEV_FILES )
Install ( TARGETS cppamqp DESTINATION lib )
# Static
If ( CPPAMQP_INSTALL_STATIC )
Install ( TARGETS cppamqp-static
EXPORT cppamqp
DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
EndIf ( )

If ( CPPAMQP_INSTALL_DEV_FILES )
Install ( FILES ${CPPAMQP_INCLUDE_DIR}/cppamqp.h DESTINATION include )
Install ( DIRECTORY ${CPPAMQP_INCLUDE_DIR}/cppamqp DESTINATION include )
# Shared
If ( CPPAMQP_INSTALL_SHARED )
Install ( TARGETS cppamqp-shared
EXPORT cppamqp
DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
EndIf ( )

# Optimize
If ( __COTIRE_INCLUDED )
Cotire ( cppamqp )
# Debug
If ( HAS_STRIP_SYMBOLS AND NOT CPPAMQP_NO_STRIP )
Strip_Symbols ( cppamqp-shared CPPAMQP_DBG_FILE )
If ( CPPAMQP_INSTALL_DEBUG )
Install ( FILES ${CPPAMQP_DBG_FILE}
DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
EndIf ( )
EndIf ( )
If ( __STRIP_SYMBOLS_INCLUDED AND BUILD_SHARED_LIBS )
Strip_Symbols ( cppamqp DBG_FILE )
EndIf ()

+ 2
- 2
src/cppamqp/channel.cpp View File

@@ -11,7 +11,7 @@ channel::internal::internal(const cppamqp::connection& p_connection, channel_num
, handle (p_handle)
{
if (handle <= 0)
throw utl::argument_exception("handle", "handle must be greater than 0");
throw ::cppcore::argument_exception("handle", "handle must be greater than 0");
amqp_channel_open(connection.handle(), handle);
__impl::check_and_raise(
amqp_get_rpc_reply(connection.handle()),
@@ -152,4 +152,4 @@ void channel::close(int status)
false);
_internal->handle = 0;
_internal.reset();
}
}

+ 3
- 3
src/cppamqp/connection.cpp View File

@@ -1,4 +1,4 @@
#include <cpputils/misc/time.h>
#include <cppcore/conversion/time.h>

#include <cppamqp/helper.h>
#include <cppamqp/message.inl>
@@ -100,7 +100,7 @@ channel connection::open_channel(channel_number c)

consume_result connection::consume_message(const std::chrono::milliseconds& timeout)
{
::timeval tv = utl::duration_cast<::timeval>(timeout);
::timeval tv = ::cppcore::duration_cast<::timeval>(timeout);
internal_envelope envelope;
amqp_maybe_release_buffers(handle());
auto ret = amqp_consume_message(
@@ -163,4 +163,4 @@ void connection::close(int status, bool force)
_internal->auto_close = false;
_internal->reply_code = status;
_internal.reset();
}
}

+ 4
- 4
src/cppamqp/helper.cpp View File

@@ -1,6 +1,6 @@
#include <cppamqp/helper.h>
#include <cppamqp/exception.inl>
#include <cpputils/logging/global.h>
#include <cpplogging/interface.h>

void ::cppamqp::__impl::check_and_raise(int returnCode, std::string msg, bool logOnly)
{
@@ -11,7 +11,7 @@ void ::cppamqp::__impl::check_and_raise(int returnCode, std::string msg, bool lo
if (!msg.empty())
msg += " - ";
msg += amqp_error_string2(returnCode);
log_global_message(error, msg);
cppamqp_log(error) << msg;
}
else
throw cppamqp::exception(msg, static_cast<amqp_status_enum>(returnCode));
@@ -30,7 +30,7 @@ void ::cppamqp::__impl::check_and_raise(const amqp_rpc_reply_t& reply, std::stri
msg += " - ";
msg += std::string("Server error: ID=") + std::to_string(reply.reply.id);
if (logOnly) {
log_global_message(error, msg);
cppamqp_log(error) << msg;
} else {
throw cppamqp::exception(msg);
}
@@ -47,7 +47,7 @@ void ::cppamqp::__impl::check_and_raise(const amqp_rpc_reply_t& reply, std::stri
msg += " - ";
msg += "unknown reply";
if (logOnly) {
log_global_message(error, msg);
cppamqp_log(error) << msg;
} else {
throw cppamqp::exception(msg);
}


+ 1
- 1
src/cppamqp/publish_options.cpp View File

@@ -12,7 +12,7 @@ inline amqp_bytes_t simpleConvert<amqp_bytes_t, std::string>(const std::string&
{ return __impl::make_bytes(value); }

template<class T, class S>
inline void addProperty(amqp_basic_properties_t& properties, amqp_flags_t flag, T amqp_basic_properties_t::*member, const utl::nullable<S>& value)
inline void addProperty(amqp_basic_properties_t& properties, amqp_flags_t flag, T amqp_basic_properties_t::*member, const ::cppcore::nullable<S>& value)
{
if (value)
{


+ 39
- 26
test/CMakeLists.txt View File

@@ -1,30 +1,43 @@
# Initialize ######################################################################################

Include ( cotire OPTIONAL )
Include ( pedantic OPTIONAL )
Include ( cmake_tests OPTIONAL )

Include ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/options.cmake )

Set ( CMAKE_CXX_STANDARD 17 )
Set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PEDANTIC_C_FLAGS}" )
Set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PEDANTIC_CXX_FLAGS}" )

# Project: test_cppamqp ##########################################################################

Project ( test_cppamqp )
File ( GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
Add_Executable ( test_cppamqp EXCLUDE_FROM_ALL ${SOURCE_FILES} )
Target_Link_Libraries ( test_cppamqp
cppamqp
gmock_main
gmock
gtest
pthread )
If ( __COTIRE_INCLUDED )
Cotire ( test_cppamqp )
Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS )

# Test ############################################################################################

Find_Package ( GTest )
If ( NOT "${GTest_FOUND}" )
Return ( )
EndIf ( )
If ( __CMAKE_TESTS_INCLUDED )
Add_CMake_Test ( NAME cppamqp
TARGET test_cppamqp )

File ( GLOB_RECURSE CPPAMQP_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h )
File ( GLOB_RECURSE CPPAMQP_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl )
File ( GLOB_RECURSE CPPAMQP_TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )

Add_Executable ( cppamqp-test
EXCLUDE_FROM_ALL
${CPPAMQP_TEST_HEADER_FILES}
${CPPAMQP_TEST_INLINE_FILES}
${CPPAMQP_TEST_SOURCE_FILES} )
Target_Link_Libraries ( cppamqp-test
PUBLIC
cppamqp-objects
GMock::Main )

# pedantic
If ( HAS_PEDANTIC )
Pedantic_Apply_Flags_Target ( cppamqp-test ALL )
EndIf ( )

# optimization
If ( HAS_COTIRE )
Cotire ( cppamqp-test )
EndIf ( )

# test
If ( HAS_CMAKE_TESTS )
Add_CMake_Test ( NAME cppamqp TARGET cppamqp-test )
Else ( )
Add_Test ( NAME cppamqp COMMAND cppamqp-test )
EndIf ( )

test/amqp.cpp → test/cppamqp/amqp.cpp View File


test/mock.cpp → test/cppamqp/mock.cpp View File

@@ -117,4 +117,7 @@ int amqp_basic_publish(amqp_connection_state_t state, amqp_channel_t channel, am
{ return (amqp_mock_instance ? amqp_mock_instance->amqp_basic_publish(state, channel, exchange, routing_key, mandatory, immediate, properties, body) : 0); }

amqp_basic_consume_ok_t* amqp_basic_consume(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_bytes_t consumer_tag, amqp_boolean_t no_local, amqp_boolean_t no_ack, amqp_boolean_t exclusive, amqp_table_t arguments)
{ return (amqp_mock_instance ? amqp_mock_instance->amqp_basic_consume(state, channel, queue, consumer_tag, no_local, no_ack, exclusive, arguments) : nullptr); }
{ return (amqp_mock_instance ? amqp_mock_instance->amqp_basic_consume(state, channel, queue, consumer_tag, no_local, no_ack, exclusive, arguments) : nullptr); }

amqp_basic_qos_ok_t* amqp_basic_qos(amqp_connection_state_t state, amqp_channel_t channel, uint32_t prefetch_size, uint16_t prefetch_count, amqp_boolean_t global)
{ return (amqp_mock_instance ? amqp_mock_instance->amqp_basic_qos(state, channel, prefetch_size, prefetch_count, global) : nullptr); }

test/mock.h → test/cppamqp/mock.h View File

@@ -34,6 +34,7 @@ public:
MOCK_METHOD6(amqp_queue_bind, amqp_queue_bind_ok_t* (amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_bytes_t exchange, amqp_bytes_t routing_key, amqp_table_t arguments));
MOCK_METHOD8(amqp_basic_publish, int (amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t exchange, amqp_bytes_t routing_key, amqp_boolean_t mandatory, amqp_boolean_t immediate, struct amqp_basic_properties_t_ const *properties, amqp_bytes_t body));
MOCK_METHOD8(amqp_basic_consume, amqp_basic_consume_ok_t* (amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_bytes_t consumer_tag, amqp_boolean_t no_local, amqp_boolean_t no_ack, amqp_boolean_t exclusive, amqp_table_t arguments));
MOCK_METHOD5(amqp_basic_qos, amqp_basic_qos_ok_t* (amqp_connection_state_t state, amqp_channel_t channel, uint32_t prefetch_size, uint16_t prefetch_count, amqp_boolean_t global));

static amqp_connection_state_t defaultConnectionState;
static amqp_socket_t* defaultSocket;
@@ -44,4 +45,4 @@ public:

~AmqpMock()
{ clearInstance(this); }
};
};

Loading…
Cancel
Save