Ver código fonte

0406 发送图片

caizm 2 anos atrás
pai
commit
ecc89acb23
100 arquivos alterados com 4803 adições e 691 exclusões
  1. 0 37
      CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake
  2. BIN
      CAE_Solution/Libs/rabbitmq/win/debug/bin/rabbitmq.4.dll
  3. 1 1
      CAE_Solution/Libs/rabbitmq/win/debug/include/amqp.h
  4. 1 1
      CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_framing.h
  5. 1 1
      CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_ssl_socket.h
  6. 1 1
      CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_tcp_socket.h
  7. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/amqp.h
  8. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/export.h
  9. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/framing.h
  10. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/ssl_socket.h
  11. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/tcp_socket.h
  12. 43 0
      CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake
  13. 0 0
      CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-c-config.cmake
  14. 4 4
      CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-targets-debug.cmake
  15. 42 34
      CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-targets.cmake
  16. BIN
      CAE_Solution/Libs/rabbitmq/win/debug/lib/librabbitmq.4.lib
  17. 1 1
      CAE_Solution/Libs/rabbitmq/win/debug/lib/pkgconfig/librabbitmq.pc
  18. BIN
      CAE_Solution/Libs/rabbitmq/win/debug/lib/rabbitmq.4.lib
  19. BIN
      CAE_Solution/Libs/rabbitmq/win/release/bin/rabbitmq.4.dll
  20. 11 0
      CAE_Solution/Libs/rabbitmq/win/release/include/amqp.h
  21. 12 0
      CAE_Solution/Libs/rabbitmq/win/release/include/amqp_framing.h
  22. 13 0
      CAE_Solution/Libs/rabbitmq/win/release/include/amqp_ssl_socket.h
  23. 11 0
      CAE_Solution/Libs/rabbitmq/win/release/include/amqp_tcp_socket.h
  24. 2437 0
      CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/amqp.h
  25. 42 0
      CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/export.h
  26. 1150 0
      CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/framing.h
  27. 287 0
      CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/ssl_socket.h
  28. 47 0
      CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/tcp_socket.h
  29. 43 0
      CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake
  30. 28 0
      CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-c-config.cmake
  31. 4 4
      CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-targets-release.cmake
  32. 115 0
      CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-targets.cmake
  33. BIN
      CAE_Solution/Libs/rabbitmq/win/release/lib/librabbitmq.4.lib
  34. 13 0
      CAE_Solution/Libs/rabbitmq/win/release/lib/pkgconfig/librabbitmq.pc
  35. BIN
      CAE_Solution/Libs/rabbitmq/win/release/lib/rabbitmq.4.lib
  36. 2 2
      CAE_Solution/src/Display/display.h
  37. 0 504
      CAE_Solution/src/Makefile
  38. 0 19
      CAE_Solution/src/Makefile.Debug
  39. 0 19
      CAE_Solution/src/Makefile.Release
  40. 0 16
      CAE_Solution/src/Manager/resultmeshmanager.h.autosave
  41. 3 0
      CAE_Solution/src/Rabbitmq/Rabbitmq.pri
  42. 0 0
      CAE_Solution/src/Rabbitmq/ReadConf/ReadConf.pri
  43. 0 0
      CAE_Solution/src/Rabbitmq/ReadConf/readconf.cpp
  44. 1 1
      CAE_Solution/src/Rabbitmq/ReadConf/readconf.h
  45. 0 0
      CAE_Solution/src/Rabbitmq/c_rabbitmq/c_rabbitmq.pri
  46. 0 0
      CAE_Solution/src/Rabbitmq/c_rabbitmq/cexchange.hpp
  47. 2 5
      CAE_Solution/src/Rabbitmq/c_rabbitmq/cmessage.hpp
  48. 0 0
      CAE_Solution/src/Rabbitmq/c_rabbitmq/cqueue.hpp
  49. 0 0
      CAE_Solution/src/Rabbitmq/c_rabbitmq/crabbitmqclient.cpp
  50. 7 14
      CAE_Solution/src/Rabbitmq/c_rabbitmq/crabbitmqclient.h
  51. 9 0
      CAE_Solution/src/Rabbitmq/rabbitClient/rabbitClient.pri
  52. 66 1
      CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.cpp
  53. 11 4
      CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.h
  54. 90 0
      CAE_Solution/src/Rabbitmq/rabbitClient/vtkjsonobject.cpp
  55. 30 0
      CAE_Solution/src/Rabbitmq/rabbitClient/vtkjsonobject.h
  56. 0 0
      CAE_Solution/src/VTK/Manager/Manager.pri
  57. 5 5
      CAE_Solution/src/VTK/Manager/meshmanager.cpp
  58. 3 3
      CAE_Solution/src/VTK/Manager/meshmanager.h
  59. 0 0
      CAE_Solution/src/VTK/Manager/resultmeshmanager.cpp
  60. 0 0
      CAE_Solution/src/VTK/Manager/resultmeshmanager.h
  61. 0 0
      CAE_Solution/src/VTK/QVTKRenderer/QVTKRenderer.pri
  62. 0 0
      CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.cpp
  63. 6 6
      CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.h
  64. 4 0
      CAE_Solution/src/VTK/VTK.pri
  65. 0 0
      CAE_Solution/src/VTK/mesh/cells.h
  66. 0 0
      CAE_Solution/src/VTK/mesh/mesh.cpp
  67. 0 0
      CAE_Solution/src/VTK/mesh/mesh.h
  68. 0 0
      CAE_Solution/src/VTK/mesh/mesh.pri
  69. 0 0
      CAE_Solution/src/VTK/mesh/mesh_adi.cpp
  70. 0 0
      CAE_Solution/src/VTK/mesh/mesh_adi.h
  71. 0 0
      CAE_Solution/src/VTK/mesh/mesh_tecplot.cpp
  72. 0 0
      CAE_Solution/src/VTK/mesh/mesh_tecplot.h
  73. 0 0
      CAE_Solution/src/VTK/mesh/mesh_ugrid.cpp
  74. 0 0
      CAE_Solution/src/VTK/mesh/mesh_ugrid.h
  75. 0 0
      CAE_Solution/src/VTK/mesh/meshbase.cpp
  76. 0 0
      CAE_Solution/src/VTK/mesh/meshbase.h
  77. 0 0
      CAE_Solution/src/VTK/mesh/meshstructured.cpp
  78. 0 0
      CAE_Solution/src/VTK/mesh/meshstructured.h
  79. 0 0
      CAE_Solution/src/VTK/mesh/meshunstructured.cpp
  80. 0 0
      CAE_Solution/src/VTK/mesh/meshunstructured.h
  81. 0 0
      CAE_Solution/src/VTK/mesh/points.cpp
  82. 0 0
      CAE_Solution/src/VTK/mesh/points.h
  83. 0 0
      CAE_Solution/src/VTK/visualization_VTK/loadxyplotdata.cpp
  84. 0 0
      CAE_Solution/src/VTK/visualization_VTK/loadxyplotdata.h
  85. 4 2
      CAE_Solution/src/VTK/visualization_VTK/visualization_VTK.pri
  86. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisaddungriddatasource.cpp
  87. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisaddungriddatasource.h
  88. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkviscameramanager.cpp
  89. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkviscameramanager.h
  90. 218 0
      CAE_Solution/src/VTK/visualization_VTK/vtkviscapturefigure.cpp
  91. 29 0
      CAE_Solution/src/VTK/visualization_VTK/vtkviscapturefigure.h
  92. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.cpp
  93. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.h
  94. 2 2
      CAE_Solution/src/VTK/visualization_VTK/vtkvismeshbasetovtksource.cpp
  95. 1 1
      CAE_Solution/src/VTK/visualization_VTK/vtkvismeshbasetovtksource.h
  96. 1 1
      CAE_Solution/src/VTK/visualization_VTK/vtkvismeshtovtksource.cpp
  97. 2 2
      CAE_Solution/src/VTK/visualization_VTK/vtkvismeshtovtksource.h
  98. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisunglyph.cpp
  99. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisunglyph.h
  100. 0 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisunshademesh.cpp

+ 0 - 37
CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake

@@ -1,37 +0,0 @@
-# This is a basic version file for the Config-mode of find_package().
-# It is used by write_basic_package_version_file() as input file for configure_file()
-# to create a version-file which can be installed along a config.cmake file.
-#
-# The created file sets PACKAGE_VERSION_EXACT if the current version string and
-# the requested version string are exactly the same and it sets
-# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
-# The variable CVF_VERSION must be set before calling configure_file().
-
-set(PACKAGE_VERSION "0.13.0")
-
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
-  set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
-  set(PACKAGE_VERSION_COMPATIBLE TRUE)
-  if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
-    set(PACKAGE_VERSION_EXACT TRUE)
-  endif()
-endif()
-
-
-# if the installed project requested no architecture check, don't perform the check
-if("FALSE")
-  return()
-endif()
-
-# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
-if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
-   return()
-endif()
-
-# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
-if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
-   math(EXPR installedBits "8 * 8")
-   set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
-   set(PACKAGE_VERSION_UNSUITABLE TRUE)
-endif()

BIN
CAE_Solution/Libs/rabbitmq-c/bin/rabbitmq.4.dll → CAE_Solution/Libs/rabbitmq/win/debug/bin/rabbitmq.4.dll


+ 1 - 1
CAE_Solution/Libs/rabbitmq-c/include/amqp.h → CAE_Solution/Libs/rabbitmq/win/debug/include/amqp.h

@@ -4,7 +4,7 @@
 #ifndef AMQP_H
 #define AMQP_H
 
-#warning "amqp.h is deprecated, use rabbitmq-c/amqp.h instead."
+//#warning "amqp.h is deprecated, use rabbitmq-c/amqp.h instead."
 
 #include <rabbitmq-c/amqp.h>
 

+ 1 - 1
CAE_Solution/Libs/rabbitmq-c/include/amqp_framing.h → CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_framing.h

@@ -5,7 +5,7 @@
 #ifndef AMQP_FRAMING_H
 #define AMQP_FRAMING_H
 
-#warning "amqp_framing.h is deprecated, use rabbitmq-c/framing.h instead.
+//#warning "amqp_framing.h is deprecated, use rabbitmq-c/framing.h instead.
 
 #include <rabbitmq-c/framing.h>
 

+ 1 - 1
CAE_Solution/Libs/rabbitmq-c/include/amqp_ssl_socket.h → CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_ssl_socket.h

@@ -6,7 +6,7 @@
 #ifndef AMQP_SSL_H
 #define AMQP_SSL_H
 
-#warning "amqp_ssl_socket.h is deprecated, use rabbitmq-c/ssl_socket.h instead.
+//#warning "amqp_ssl_socket.h is deprecated, use rabbitmq-c/ssl_socket.h instead.
 
 #include <rabbitmq-c/ssl_socket.h>
 

+ 1 - 1
CAE_Solution/Libs/rabbitmq-c/include/amqp_tcp_socket.h → CAE_Solution/Libs/rabbitmq/win/debug/include/amqp_tcp_socket.h

@@ -4,7 +4,7 @@
 #ifndef AMQP_TCP_SOCKET_H
 #define AMQP_TCP_SOCKET_H
 
-#warning "amqp_tcp_socket.h is deprecated, use rabbitmq-c/tcp_socket.h instead."
+//#warning "amqp_tcp_socket.h is deprecated, use rabbitmq-c/tcp_socket.h instead."
 
 #include <rabbitmq-c/tcp_socket.h>
 

+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/include/rabbitmq-c/amqp.h → CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/amqp.h


+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/include/rabbitmq-c/export.h → CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/export.h


+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/include/rabbitmq-c/framing.h → CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/framing.h


+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/include/rabbitmq-c/ssl_socket.h → CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/ssl_socket.h


+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/include/rabbitmq-c/tcp_socket.h → CAE_Solution/Libs/rabbitmq/win/debug/include/rabbitmq-c/tcp_socket.h


+ 43 - 0
CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake

@@ -0,0 +1,43 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "0.13.0")
+
+if (PACKAGE_FIND_VERSION_RANGE)
+  # Package version must be in the requested version range
+  if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN)
+      OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX)))
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  endif()
+else()
+  if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if(CMAKE_SIZEOF_VOID_P STREQUAL "" OR "8" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+  math(EXPR installedBits "8 * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()

+ 0 - 0
CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-c-config.cmake → CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-c-config.cmake


+ 4 - 4
CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-targets-debug.cmake → CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-targets-debug.cmake

@@ -12,8 +12,8 @@ set_target_properties(rabbitmq::rabbitmq PROPERTIES
   IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll"
   )
 
-list(APPEND _IMPORT_CHECK_TARGETS rabbitmq::rabbitmq )
-list(APPEND _IMPORT_CHECK_FILES_FOR_rabbitmq::rabbitmq "${_IMPORT_PREFIX}/lib/rabbitmq.4.lib" "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll" )
+list(APPEND _cmake_import_check_targets rabbitmq::rabbitmq )
+list(APPEND _cmake_import_check_files_for_rabbitmq::rabbitmq "${_IMPORT_PREFIX}/lib/rabbitmq.4.lib" "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll" )
 
 # Import target "rabbitmq::rabbitmq-static" for configuration "Debug"
 set_property(TARGET rabbitmq::rabbitmq-static APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
@@ -22,8 +22,8 @@ set_target_properties(rabbitmq::rabbitmq-static PROPERTIES
   IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib"
   )
 
-list(APPEND _IMPORT_CHECK_TARGETS rabbitmq::rabbitmq-static )
-list(APPEND _IMPORT_CHECK_FILES_FOR_rabbitmq::rabbitmq-static "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib" )
+list(APPEND _cmake_import_check_targets rabbitmq::rabbitmq-static )
+list(APPEND _cmake_import_check_files_for_rabbitmq::rabbitmq-static "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib" )
 
 # Commands beyond this point should not need to know the version.
 set(CMAKE_IMPORT_FILE_VERSION)

+ 42 - 34
CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-targets.cmake → CAE_Solution/Libs/rabbitmq/win/debug/lib/cmake/rabbitmq-c/rabbitmq-targets.cmake

@@ -1,10 +1,13 @@
 # Generated by CMake
 
-if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
-   message(FATAL_ERROR "CMake >= 2.6.0 required")
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
+   message(FATAL_ERROR "CMake >= 2.8.0 required")
+endif()
+if(CMAKE_VERSION VERSION_LESS "2.8.3")
+   message(FATAL_ERROR "CMake >= 2.8.3 required")
 endif()
 cmake_policy(PUSH)
-cmake_policy(VERSION 2.6)
+cmake_policy(VERSION 2.8.3...3.24)
 #----------------------------------------------------------------
 # Generated CMake target import file.
 #----------------------------------------------------------------
@@ -13,32 +16,34 @@ cmake_policy(VERSION 2.6)
 set(CMAKE_IMPORT_FILE_VERSION 1)
 
 # Protect against multiple inclusion, which would fail when already imported targets are added once more.
-set(_targetsDefined)
-set(_targetsNotDefined)
-set(_expectedTargets)
-foreach(_expectedTarget rabbitmq::rabbitmq rabbitmq::rabbitmq-static)
-  list(APPEND _expectedTargets ${_expectedTarget})
-  if(NOT TARGET ${_expectedTarget})
-    list(APPEND _targetsNotDefined ${_expectedTarget})
-  endif()
-  if(TARGET ${_expectedTarget})
-    list(APPEND _targetsDefined ${_expectedTarget})
+set(_cmake_targets_defined "")
+set(_cmake_targets_not_defined "")
+set(_cmake_expected_targets "")
+foreach(_cmake_expected_target IN ITEMS rabbitmq::rabbitmq rabbitmq::rabbitmq-static)
+  list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
+  if(TARGET "${_cmake_expected_target}")
+    list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
+  else()
+    list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
   endif()
 endforeach()
-if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
-  unset(_targetsDefined)
-  unset(_targetsNotDefined)
-  unset(_expectedTargets)
-  set(CMAKE_IMPORT_FILE_VERSION)
+unset(_cmake_expected_target)
+if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
+  unset(_cmake_targets_defined)
+  unset(_cmake_targets_not_defined)
+  unset(_cmake_expected_targets)
+  unset(CMAKE_IMPORT_FILE_VERSION)
   cmake_policy(POP)
   return()
 endif()
-if(NOT "${_targetsDefined}" STREQUAL "")
-  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+if(NOT _cmake_targets_defined STREQUAL "")
+  string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
+  string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
 endif()
-unset(_targetsDefined)
-unset(_targetsNotDefined)
-unset(_expectedTargets)
+unset(_cmake_targets_defined)
+unset(_cmake_targets_not_defined)
+unset(_cmake_expected_targets)
 
 
 # Compute the installation prefix relative to this file.
@@ -71,21 +76,22 @@ if(CMAKE_VERSION VERSION_LESS 2.8.12)
 endif()
 
 # Load information for each installed configuration.
-get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-file(GLOB CONFIG_FILES "${_DIR}/rabbitmq-targets-*.cmake")
-foreach(f ${CONFIG_FILES})
-  include(${f})
+file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/rabbitmq-targets-*.cmake")
+foreach(_cmake_config_file IN LISTS _cmake_config_files)
+  include("${_cmake_config_file}")
 endforeach()
+unset(_cmake_config_file)
+unset(_cmake_config_files)
 
 # Cleanup temporary variables.
 set(_IMPORT_PREFIX)
 
 # Loop over all imported files and verify that they actually exist
-foreach(target ${_IMPORT_CHECK_TARGETS} )
-  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
-    if(NOT EXISTS "${file}" )
-      message(FATAL_ERROR "The imported target \"${target}\" references the file
-   \"${file}\"
+foreach(_cmake_target IN LISTS _cmake_import_check_targets)
+  foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
+    if(NOT EXISTS "${_cmake_file}")
+      message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
+   \"${_cmake_file}\"
 but this file does not exist.  Possible reasons include:
 * The file was deleted, renamed, or moved to another location.
 * An install or uninstall procedure did not complete successfully.
@@ -95,9 +101,11 @@ but not all the files it references.
 ")
     endif()
   endforeach()
-  unset(_IMPORT_CHECK_FILES_FOR_${target})
+  unset(_cmake_file)
+  unset("_cmake_import_check_files_for_${_cmake_target}")
 endforeach()
-unset(_IMPORT_CHECK_TARGETS)
+unset(_cmake_target)
+unset(_cmake_import_check_targets)
 
 # This file does not depend on other imported targets which have
 # been exported from the same project but in a separate export set.

BIN
CAE_Solution/Libs/rabbitmq-c/lib/librabbitmq.4.lib → CAE_Solution/Libs/rabbitmq/win/debug/lib/librabbitmq.4.lib


+ 1 - 1
CAE_Solution/Libs/rabbitmq-c/lib/pkgconfig/librabbitmq.pc → CAE_Solution/Libs/rabbitmq/win/debug/lib/pkgconfig/librabbitmq.pc

@@ -1,4 +1,4 @@
-prefix=F:/Program Files (x86)/rabbitmq-c
+prefix=F:/czm/anzhuangbao/rabbitmq-c-0.13.0/anzhuang
 exec_prefix=${prefix}
 libdir=${exec_prefix}/lib
 includedir=${prefix}/include

BIN
CAE_Solution/Libs/rabbitmq-c/lib/rabbitmq.4.lib → CAE_Solution/Libs/rabbitmq/win/debug/lib/rabbitmq.4.lib


BIN
CAE_Solution/Libs/rabbitmq/win/release/bin/rabbitmq.4.dll


+ 11 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/amqp.h

@@ -0,0 +1,11 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+#ifndef AMQP_H
+#define AMQP_H
+
+//#warning "amqp.h is deprecated, use rabbitmq-c/amqp.h instead."
+
+#include <rabbitmq-c/amqp.h>
+
+#endif /* AMQP_H */

+ 12 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/amqp_framing.h

@@ -0,0 +1,12 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/** @file amqp_framing.h */
+#ifndef AMQP_FRAMING_H
+#define AMQP_FRAMING_H
+
+//#warning "amqp_framing.h is deprecated, use rabbitmq-c/framing.h instead.
+
+#include <rabbitmq-c/framing.h>
+
+#endif /* AMQP_FRAMING_H */

+ 13 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/amqp_ssl_socket.h

@@ -0,0 +1,13 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/** \file */
+
+#ifndef AMQP_SSL_H
+#define AMQP_SSL_H
+
+//#warning "amqp_ssl_socket.h is deprecated, use rabbitmq-c/ssl_socket.h instead.
+
+#include <rabbitmq-c/ssl_socket.h>
+
+#endif /* AMQP_SSL_H */

+ 11 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/amqp_tcp_socket.h

@@ -0,0 +1,11 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+#ifndef AMQP_TCP_SOCKET_H
+#define AMQP_TCP_SOCKET_H
+
+//#warning "amqp_tcp_socket.h is deprecated, use rabbitmq-c/tcp_socket.h instead."
+
+#include <rabbitmq-c/tcp_socket.h>
+
+#endif /* AMQP_TCP_SOCKET_H */

+ 2437 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/amqp.h

@@ -0,0 +1,2437 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/** \file */
+
+#include <rabbitmq-c/export.h>
+
+#ifndef RABBITMQ_C_RABBITMQ_C_H
+#define RABBITMQ_C_RABBITMQ_C_H
+
+/** \cond HIDE_FROM_DOXYGEN */
+
+#ifdef __cplusplus
+#define AMQP_BEGIN_DECLS extern "C" {
+#define AMQP_END_DECLS }
+#else
+#define AMQP_BEGIN_DECLS
+#define AMQP_END_DECLS
+#endif
+
+/*
+ * \internal
+ * AMQP_CALL - calling convension (used on Win32)
+ */
+#ifdef _WIN32
+#define AMQP_CALL __cdecl
+#else
+#define AMQP_CALL
+#endif
+
+/* Define ssize_t on Win32/64 platforms
+   See: http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-April/030649.html for
+   details
+   */
+#if !defined(_W64)
+#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
+#define _W64 __w64
+#else
+#define _W64
+#endif
+#endif
+
+#if defined(_MSC_VER) || (defined(__BORLANDC__) && (__BORLANDC__ <= 0x0564))
+#ifdef _WIN64
+typedef __int64 ssize_t;
+#else
+typedef _W64 int ssize_t;
+#endif
+#endif
+
+#if defined(_WIN32) && defined(__MINGW32__)
+#include <sys/types.h>
+#endif
+
+/** \endcond */
+
+#include <stddef.h>
+#include <stdint.h>
+
+struct timeval;
+
+AMQP_BEGIN_DECLS
+
+/**
+ * \def AMQP_VERSION_MAJOR
+ *
+ * Major library version number compile-time constant
+ *
+ * The major version is incremented when backwards incompatible API changes
+ * are made.
+ *
+ * \sa AMQP_VERSION, AMQP_VERSION_STRING
+ *
+ * \since v0.4.0
+ */
+
+/**
+ * \def AMQP_VERSION_MINOR
+ *
+ * Minor library version number compile-time constant
+ *
+ * The minor version is incremented when new APIs are added. Existing APIs
+ * are left alone.
+ *
+ * \sa AMQP_VERSION, AMQP_VERSION_STRING
+ *
+ * \since v0.4.0
+ */
+
+/**
+ * \def AMQP_VERSION_PATCH
+ *
+ * Patch library version number compile-time constant
+ *
+ * The patch version is incremented when library code changes, but the API
+ * is not changed.
+ *
+ * \sa AMQP_VERSION, AMQP_VERSION_STRING
+ *
+ * \since v0.4.0
+ */
+
+/**
+ * \def AMQP_VERSION_IS_RELEASE
+ *
+ * Version constant set to 1 for tagged release, 0 otherwise
+ *
+ * NOTE: versions that are not tagged releases are not guaranteed to be API/ABI
+ * compatible with older releases, and may change commit-to-commit.
+ *
+ * \sa AMQP_VERSION, AMQP_VERSION_STRING
+ *
+ * \since v0.4.0
+ */
+/*
+ * Developer note: when changing these, be sure to update SOVERSION constants
+ *  in CMakeLists.txt and configure.ac
+ */
+
+#define AMQP_VERSION_MAJOR 0
+#define AMQP_VERSION_MINOR 13
+#define AMQP_VERSION_PATCH 0
+#define AMQP_VERSION_IS_RELEASE 1
+
+/**
+ * \def AMQP_VERSION_CODE
+ *
+ * Helper macro to geneate a packed version code suitable for
+ * comparison with AMQP_VERSION.
+ *
+ * \sa amqp_version_number() AMQP_VERSION_MAJOR, AMQP_VERSION_MINOR,
+ *     AMQP_VERSION_PATCH, AMQP_VERSION_IS_RELEASE, AMQP_VERSION
+ *
+ * \since v0.6.1
+ */
+#define AMQP_VERSION_CODE(major, minor, patch, release) \
+  ((major << 24) | (minor << 16) | (patch << 8) | (release))
+
+/**
+ * \def AMQP_VERSION
+ *
+ * Packed version number
+ *
+ * AMQP_VERSION is a 4-byte unsigned integer with the most significant byte
+ * set to AMQP_VERSION_MAJOR, the second most significant byte set to
+ * AMQP_VERSION_MINOR, third most significant byte set to AMQP_VERSION_PATCH,
+ * and the lowest byte set to AMQP_VERSION_IS_RELEASE.
+ *
+ * For example version 2.3.4 which is released version would be encoded as
+ * 0x02030401
+ *
+ * \sa amqp_version_number() AMQP_VERSION_MAJOR, AMQP_VERSION_MINOR,
+ *     AMQP_VERSION_PATCH, AMQP_VERSION_IS_RELEASE, AMQP_VERSION_CODE
+ *
+ * \since v0.4.0
+ */
+#define AMQP_VERSION                                        \
+  AMQP_VERSION_CODE(AMQP_VERSION_MAJOR, AMQP_VERSION_MINOR, \
+                    AMQP_VERSION_PATCH, AMQP_VERSION_IS_RELEASE)
+
+/** \cond HIDE_FROM_DOXYGEN */
+#define AMQ_STRINGIFY(s) AMQ_STRINGIFY_HELPER(s)
+#define AMQ_STRINGIFY_HELPER(s) #s
+
+#define AMQ_VERSION_STRING          \
+  AMQ_STRINGIFY(AMQP_VERSION_MAJOR) \
+  "." AMQ_STRINGIFY(AMQP_VERSION_MINOR) "." AMQ_STRINGIFY(AMQP_VERSION_PATCH)
+/** \endcond */
+
+/**
+ * \def AMQP_VERSION_STRING
+ *
+ * Version string compile-time constant
+ *
+ * Non-released versions of the library will have "-pre" appended to the
+ * version string
+ *
+ * \sa amqp_version()
+ *
+ * \since v0.4.0
+ */
+#if AMQP_VERSION_IS_RELEASE
+#define AMQP_VERSION_STRING AMQ_VERSION_STRING
+#else
+#define AMQP_VERSION_STRING AMQ_VERSION_STRING "-pre"
+#endif
+
+/**
+ * Returns the rabbitmq-c version as a packed integer.
+ *
+ * See \ref AMQP_VERSION
+ *
+ * \return packed 32-bit integer representing version of library at runtime
+ *
+ * \sa AMQP_VERSION, amqp_version()
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+uint32_t AMQP_CALL amqp_version_number(void);
+
+/**
+ * Returns the rabbitmq-c version as a string.
+ *
+ * See \ref AMQP_VERSION_STRING
+ *
+ * \return a statically allocated string describing the version of rabbitmq-c.
+ *
+ * \sa amqp_version_number(), AMQP_VERSION_STRING, AMQP_VERSION
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+char const *AMQP_CALL amqp_version(void);
+
+/**
+ * \def AMQP_DEFAULT_FRAME_SIZE
+ *
+ * Default frame size (128Kb)
+ *
+ * \sa amqp_login(), amqp_login_with_properties()
+ *
+ * \since v0.4.0
+ */
+#define AMQP_DEFAULT_FRAME_SIZE 131072
+
+/**
+ * \def AMQP_DEFAULT_MAX_CHANNELS
+ *
+ * Default maximum number of channels (2047, RabbitMQ default limit of 2048,
+ * minus 1 for channel 0). RabbitMQ set a default limit of 2048 channels per
+ * connection in v3.7.5 to prevent broken clients from leaking too many
+ * channels.
+ *
+ * \sa amqp_login(), amqp_login_with_properties()
+ *
+ * \since v0.4.0
+ */
+#define AMQP_DEFAULT_MAX_CHANNELS 2047
+
+/**
+ * \def AMQP_DEFAULT_HEARTBEAT
+ *
+ * Default heartbeat interval (0, heartbeat disabled)
+ *
+ * \sa amqp_login(), amqp_login_with_properties()
+ *
+ * \since v0.4.0
+ */
+#define AMQP_DEFAULT_HEARTBEAT 0
+
+/**
+ * \def AMQP_DEFAULT_VHOST
+ *
+ * Default RabbitMQ vhost: "/"
+ *
+ * \sa amqp_login(), amqp_login_with_properties()
+ *
+ * \since v0.9.0
+ */
+#define AMQP_DEFAULT_VHOST "/"
+
+/**
+ * boolean type 0 = false, true otherwise
+ *
+ * \since v0.1
+ */
+typedef int amqp_boolean_t;
+
+/**
+ * Method number
+ *
+ * \since v0.1
+ */
+typedef uint32_t amqp_method_number_t;
+
+/**
+ * Bitmask for flags
+ *
+ * \since v0.1
+ */
+typedef uint32_t amqp_flags_t;
+
+/**
+ * Channel type
+ *
+ * \since v0.1
+ */
+typedef uint16_t amqp_channel_t;
+
+/**
+ * Buffer descriptor
+ *
+ * \since v0.1
+ */
+typedef struct amqp_bytes_t_ {
+  size_t len;  /**< length of the buffer in bytes */
+  void *bytes; /**< pointer to the beginning of the buffer */
+} amqp_bytes_t;
+
+/**
+ * Decimal data type
+ *
+ * \since v0.1
+ */
+typedef struct amqp_decimal_t_ {
+  uint8_t decimals; /**< the location of the decimal point */
+  uint32_t value;   /**< the value before the decimal point is applied */
+} amqp_decimal_t;
+
+/**
+ * AMQP field table
+ *
+ * An AMQP field table is a set of key-value pairs.
+ * A key is a UTF-8 encoded string up to 128 bytes long, and are not null
+ * terminated.
+ * A value can be one of several different datatypes. \sa
+ * amqp_field_value_kind_t
+ *
+ * \sa amqp_table_entry_t
+ *
+ * \since v0.1
+ */
+typedef struct amqp_table_t_ {
+  int num_entries;                     /**< length of entries array */
+  struct amqp_table_entry_t_ *entries; /**< an array of table entries */
+} amqp_table_t;
+
+/**
+ * An AMQP Field Array
+ *
+ * A repeated set of field values, all must be of the same type
+ *
+ * \since v0.1
+ */
+typedef struct amqp_array_t_ {
+  int num_entries;                     /**< Number of entries in the table */
+  struct amqp_field_value_t_ *entries; /**< linked list of field values */
+} amqp_array_t;
+
+/*
+  0-9   0-9-1   Qpid/Rabbit  Type               Remarks
+---------------------------------------------------------------------------
+        t       t            Boolean
+        b       b            Signed 8-bit
+        B                    Unsigned 8-bit
+        U       s            Signed 16-bit      (A1)
+        u                    Unsigned 16-bit
+  I     I       I            Signed 32-bit
+        i                    Unsigned 32-bit
+        L       l            Signed 64-bit      (B)
+        l                    Unsigned 64-bit
+        f       f            32-bit float
+        d       d            64-bit float
+  D     D       D            Decimal
+        s                    Short string       (A2)
+  S     S       S            Long string
+        A                    Nested Array
+  T     T       T            Timestamp (u64)
+  F     F       F            Nested Table
+  V     V       V            Void
+                x            Byte array
+
+Remarks:
+
+ A1, A2: Notice how the types **CONFLICT** here. In Qpid and Rabbit,
+         's' means a signed 16-bit integer; in 0-9-1, it means a
+          short string.
+
+ B: Notice how the signednesses **CONFLICT** here. In Qpid and Rabbit,
+    'l' means a signed 64-bit integer; in 0-9-1, it means an unsigned
+    64-bit integer.
+
+I'm going with the Qpid/Rabbit types, where there's a conflict, and
+the 0-9-1 types otherwise. 0-8 is a subset of 0-9, which is a subset
+of the other two, so this will work for both 0-8 and 0-9-1 branches of
+the code.
+*/
+
+/**
+ * A field table value
+ *
+ * \since v0.1
+ */
+typedef struct amqp_field_value_t_ {
+  uint8_t kind; /**< the type of the entry /sa amqp_field_value_kind_t */
+  union {
+    amqp_boolean_t boolean; /**< boolean type AMQP_FIELD_KIND_BOOLEAN */
+    int8_t i8;              /**< int8_t type AMQP_FIELD_KIND_I8 */
+    uint8_t u8;             /**< uint8_t type AMQP_FIELD_KIND_U8 */
+    int16_t i16;            /**< int16_t type AMQP_FIELD_KIND_I16 */
+    uint16_t u16;           /**< uint16_t type AMQP_FIELD_KIND_U16 */
+    int32_t i32;            /**< int32_t type AMQP_FIELD_KIND_I32 */
+    uint32_t u32;           /**< uint32_t type AMQP_FIELD_KIND_U32 */
+    int64_t i64;            /**< int64_t type AMQP_FIELD_KIND_I64 */
+    uint64_t u64;           /**< uint64_t type AMQP_FIELD_KIND_U64,
+                               AMQP_FIELD_KIND_TIMESTAMP */
+    float f32;              /**< float type AMQP_FIELD_KIND_F32 */
+    double f64;             /**< double type AMQP_FIELD_KIND_F64 */
+    amqp_decimal_t decimal; /**< amqp_decimal_t AMQP_FIELD_KIND_DECIMAL */
+    amqp_bytes_t bytes;     /**< amqp_bytes_t type AMQP_FIELD_KIND_UTF8,
+                               AMQP_FIELD_KIND_BYTES */
+    amqp_table_t table;     /**< amqp_table_t type AMQP_FIELD_KIND_TABLE */
+    amqp_array_t array;     /**< amqp_array_t type AMQP_FIELD_KIND_ARRAY */
+  } value;                  /**< a union of the value */
+} amqp_field_value_t;
+
+/**
+ * An entry in a field-table
+ *
+ * \sa amqp_table_encode(), amqp_table_decode(), amqp_table_clone()
+ *
+ * \since v0.1
+ */
+typedef struct amqp_table_entry_t_ {
+  amqp_bytes_t key; /**< the table entry key. Its a null-terminated UTF-8
+                     * string, with a maximum size of 128 bytes */
+  amqp_field_value_t value; /**< the table entry values */
+} amqp_table_entry_t;
+
+/**
+ * Field value types
+ *
+ * \since v0.1
+ */
+typedef enum {
+  AMQP_FIELD_KIND_BOOLEAN =
+      't', /**< boolean type. 0 = false, 1 = true @see amqp_boolean_t */
+  AMQP_FIELD_KIND_I8 = 'b',  /**< 8-bit signed integer, datatype: int8_t */
+  AMQP_FIELD_KIND_U8 = 'B',  /**< 8-bit unsigned integer, datatype: uint8_t */
+  AMQP_FIELD_KIND_I16 = 's', /**< 16-bit signed integer, datatype: int16_t */
+  AMQP_FIELD_KIND_U16 = 'u', /**< 16-bit unsigned integer, datatype: uint16_t */
+  AMQP_FIELD_KIND_I32 = 'I', /**< 32-bit signed integer, datatype: int32_t */
+  AMQP_FIELD_KIND_U32 = 'i', /**< 32-bit unsigned integer, datatype: uint32_t */
+  AMQP_FIELD_KIND_I64 = 'l', /**< 64-bit signed integer, datatype: int64_t */
+  AMQP_FIELD_KIND_U64 = 'L', /**< 64-bit unsigned integer, datatype: uint64_t */
+  AMQP_FIELD_KIND_F32 =
+      'f', /**< single-precision floating point value, datatype: float */
+  AMQP_FIELD_KIND_F64 =
+      'd', /**< double-precision floating point value, datatype: double */
+  AMQP_FIELD_KIND_DECIMAL =
+      'D', /**< amqp-decimal value, datatype: amqp_decimal_t */
+  AMQP_FIELD_KIND_UTF8 = 'S',      /**< UTF-8 null-terminated character string,
+                                      datatype: amqp_bytes_t */
+  AMQP_FIELD_KIND_ARRAY = 'A',     /**< field array (repeated values of another
+                                      datatype. datatype: amqp_array_t */
+  AMQP_FIELD_KIND_TIMESTAMP = 'T', /**< 64-bit timestamp. datatype uint64_t */
+  AMQP_FIELD_KIND_TABLE = 'F', /**< field table. encapsulates a table inside a
+                                  table entry. datatype: amqp_table_t */
+  AMQP_FIELD_KIND_VOID = 'V',  /**< empty entry */
+  AMQP_FIELD_KIND_BYTES =
+      'x' /**< unformatted byte string, datatype: amqp_bytes_t */
+} amqp_field_value_kind_t;
+
+/**
+ * A list of allocation blocks
+ *
+ * \since v0.1
+ */
+typedef struct amqp_pool_blocklist_t_ {
+  int num_blocks;   /**< Number of blocks in the block list */
+  void **blocklist; /**< Array of memory blocks */
+} amqp_pool_blocklist_t;
+
+/**
+ * A memory pool
+ *
+ * \since v0.1
+ */
+typedef struct amqp_pool_t_ {
+  size_t pagesize; /**< the size of the page in bytes. Allocations less than or
+                    * equal to this size are allocated in the pages block list.
+                    * Allocations greater than this are allocated in their own
+                    * own block in the large_blocks block list */
+
+  amqp_pool_blocklist_t pages; /**< blocks that are the size of pagesize */
+  amqp_pool_blocklist_t large_blocks; /**< allocations larger than the pagesize
+                                       */
+
+  int next_page;     /**< an index to the next unused page block */
+  char *alloc_block; /**< pointer to the current allocation block */
+  size_t alloc_used; /**< number of bytes in the current allocation block that
+                        has been used */
+} amqp_pool_t;
+
+/**
+ * An amqp method
+ *
+ * \since v0.1
+ */
+typedef struct amqp_method_t_ {
+  amqp_method_number_t id; /**< the method id number */
+  void *decoded;           /**< pointer to the decoded method,
+                            *    cast to the appropriate type to use */
+} amqp_method_t;
+
+/**
+ * An AMQP frame
+ *
+ * \since v0.1
+ */
+typedef struct amqp_frame_t_ {
+  uint8_t frame_type;     /**< frame type. The types:
+                           * - AMQP_FRAME_METHOD - use the method union member
+                           * - AMQP_FRAME_HEADER - use the properties union member
+                           * - AMQP_FRAME_BODY - use the body_fragment union member
+                           */
+  amqp_channel_t channel; /**< the channel the frame was received on */
+  union {
+    amqp_method_t method; /**< a method, use if frame_type == AMQP_FRAME_METHOD
+                           */
+    struct {
+      uint16_t class_id;        /**< the class for the properties */
+      uint64_t body_size;       /**< size of the body in bytes */
+      void *decoded;            /**< the decoded properties */
+      amqp_bytes_t raw;         /**< amqp-encoded properties structure */
+    } properties;               /**< message header, a.k.a., properties,
+                                      use if frame_type == AMQP_FRAME_HEADER */
+    amqp_bytes_t body_fragment; /**< a body fragment, use if frame_type ==
+                                   AMQP_FRAME_BODY */
+    struct {
+      uint8_t transport_high;         /**< @internal first byte of handshake */
+      uint8_t transport_low;          /**< @internal second byte of handshake */
+      uint8_t protocol_version_major; /**< @internal third byte of handshake */
+      uint8_t protocol_version_minor; /**< @internal fourth byte of handshake */
+    } protocol_header; /**< Used only when doing the initial handshake with the
+                          broker, don't use otherwise */
+  } payload;           /**< the payload of the frame */
+} amqp_frame_t;
+
+/**
+ * Response type
+ *
+ * \since v0.1
+ */
+typedef enum amqp_response_type_enum_ {
+  AMQP_RESPONSE_NONE = 0, /**< the library got an EOF from the socket */
+  AMQP_RESPONSE_NORMAL, /**< response normal, the RPC completed successfully */
+  AMQP_RESPONSE_LIBRARY_EXCEPTION, /**< library error, an error occurred in the
+                                      library, examine the library_error */
+  AMQP_RESPONSE_SERVER_EXCEPTION   /**< server exception, the broker returned an
+                                      error, check replay */
+} amqp_response_type_enum;
+
+/**
+ * Reply from a RPC method on the broker
+ *
+ * \since v0.1
+ */
+typedef struct amqp_rpc_reply_t_ {
+  amqp_response_type_enum reply_type; /**< the reply type:
+                                       * - AMQP_RESPONSE_NORMAL - the RPC
+                                       * completed successfully
+                                       * - AMQP_RESPONSE_SERVER_EXCEPTION - the
+                                       * broker returned
+                                       *     an exception, check the reply field
+                                       * - AMQP_RESPONSE_LIBRARY_EXCEPTION - the
+                                       * library
+                                       *    encountered an error, check the
+                                       * library_error field
+                                       */
+  amqp_method_t reply; /**< in case of AMQP_RESPONSE_SERVER_EXCEPTION this
+                        * field will be set to the method returned from the
+                        * broker */
+  int library_error;   /**< in case of AMQP_RESPONSE_LIBRARY_EXCEPTION this
+                        *    field will be set to an error code. An error
+                        *     string can be retrieved using amqp_error_string */
+} amqp_rpc_reply_t;
+
+/**
+ * SASL method type
+ *
+ * \since v0.1
+ */
+typedef enum amqp_sasl_method_enum_ {
+  AMQP_SASL_METHOD_UNDEFINED = -1, /**< Invalid SASL method */
+  AMQP_SASL_METHOD_PLAIN =
+      0, /**< the PLAIN SASL method for authentication to the broker */
+  AMQP_SASL_METHOD_EXTERNAL =
+      1 /**< the EXTERNAL SASL method for authentication to the broker */
+} amqp_sasl_method_enum;
+
+/**
+ * connection state object
+ *
+ * \since v0.1
+ */
+typedef struct amqp_connection_state_t_ *amqp_connection_state_t;
+
+/**
+ * Socket object
+ *
+ * \since v0.4.0
+ */
+typedef struct amqp_socket_t_ amqp_socket_t;
+
+/**
+ * Status codes
+ *
+ * \since v0.4.0
+ */
+/* NOTE: When updating this enum, update the strings in librabbitmq/amqp_api.c
+ */
+typedef enum amqp_status_enum_ {
+  AMQP_STATUS_OK = 0x0,                             /**< Operation successful */
+  AMQP_STATUS_NO_MEMORY = -0x0001,                  /**< Memory allocation
+                                                         failed */
+  AMQP_STATUS_BAD_AMQP_DATA = -0x0002,              /**< Incorrect or corrupt
+                                                         data was received from
+                                                         the broker. This is a
+                                                         protocol error. */
+  AMQP_STATUS_UNKNOWN_CLASS = -0x0003,              /**< An unknown AMQP class
+                                                         was received. This is
+                                                         a protocol error. */
+  AMQP_STATUS_UNKNOWN_METHOD = -0x0004,             /**< An unknown AMQP method
+                                                         was received. This is
+                                                         a protocol error. */
+  AMQP_STATUS_HOSTNAME_RESOLUTION_FAILED = -0x0005, /**< Unable to resolve the
+                                                     * hostname */
+  AMQP_STATUS_INCOMPATIBLE_AMQP_VERSION = -0x0006,  /**< The broker advertised
+                                                         an incompaible AMQP
+                                                         version */
+  AMQP_STATUS_CONNECTION_CLOSED = -0x0007,          /**< The connection to the
+                                                         broker has been closed
+                                                         */
+  AMQP_STATUS_BAD_URL = -0x0008,                    /**< malformed AMQP URL */
+  AMQP_STATUS_SOCKET_ERROR = -0x0009,               /**< A socket error
+                                                         occurred */
+  AMQP_STATUS_INVALID_PARAMETER = -0x000A,          /**< An invalid parameter
+                                                         was passed into the
+                                                         function */
+  AMQP_STATUS_TABLE_TOO_BIG = -0x000B,              /**< The amqp_table_t object
+                                                         cannot be serialized
+                                                         because the output
+                                                         buffer is too small */
+  AMQP_STATUS_WRONG_METHOD = -0x000C,               /**< The wrong method was
+                                                         received */
+  AMQP_STATUS_TIMEOUT = -0x000D,                    /**< Operation timed out */
+  AMQP_STATUS_TIMER_FAILURE = -0x000E,              /**< The underlying system
+                                                         timer facility failed */
+  AMQP_STATUS_HEARTBEAT_TIMEOUT = -0x000F,          /**< Timed out waiting for
+                                                         heartbeat */
+  AMQP_STATUS_UNEXPECTED_STATE = -0x0010,           /**< Unexpected protocol
+                                                         state */
+  AMQP_STATUS_SOCKET_CLOSED = -0x0011,              /**< Underlying socket is
+                                                         closed */
+  AMQP_STATUS_SOCKET_INUSE = -0x0012,               /**< Underlying socket is
+                                                         already open */
+  AMQP_STATUS_BROKER_UNSUPPORTED_SASL_METHOD = -0x0013, /**< Broker does not
+                                                          support the requested
+                                                          SASL mechanism */
+  AMQP_STATUS_UNSUPPORTED = -0x0014, /**< Parameter is unsupported
+                                       in this version */
+  _AMQP_STATUS_NEXT_VALUE = -0x0015, /**< Internal value */
+
+  AMQP_STATUS_TCP_ERROR = -0x0100,                /**< A generic TCP error
+                                                       occurred */
+  AMQP_STATUS_TCP_SOCKETLIB_INIT_ERROR = -0x0101, /**< An error occurred trying
+                                                       to initialize the
+                                                       socket library*/
+  _AMQP_STATUS_TCP_NEXT_VALUE = -0x0102,          /**< Internal value */
+
+  AMQP_STATUS_SSL_ERROR = -0x0200,                  /**< A generic SSL error
+                                                         occurred. */
+  AMQP_STATUS_SSL_HOSTNAME_VERIFY_FAILED = -0x0201, /**< SSL validation of
+                                                         hostname against
+                                                         peer certificate
+                                                         failed */
+  AMQP_STATUS_SSL_PEER_VERIFY_FAILED = -0x0202,     /**< SSL validation of peer
+                                                         certificate failed. */
+  AMQP_STATUS_SSL_CONNECTION_FAILED = -0x0203, /**< SSL handshake failed. */
+  AMQP_STATUS_SSL_SET_ENGINE_FAILED = -0x0204, /**< SSL setting engine failed */
+  _AMQP_STATUS_SSL_NEXT_VALUE = -0x0205        /**< Internal value */
+} amqp_status_enum;
+
+/**
+ * AMQP delivery modes.
+ * Use these values for the #amqp_basic_properties_t::delivery_mode field.
+ *
+ * \since v0.5
+ */
+typedef enum {
+  AMQP_DELIVERY_NONPERSISTENT = 1, /**< Non-persistent message */
+  AMQP_DELIVERY_PERSISTENT = 2     /**< Persistent message */
+} amqp_delivery_mode_enum;
+
+AMQP_END_DECLS
+
+#include <rabbitmq-c/framing.h>
+
+AMQP_BEGIN_DECLS
+
+/**
+ * Empty bytes structure
+ *
+ * \since v0.2
+ */
+AMQP_EXPORT extern const amqp_bytes_t amqp_empty_bytes;
+
+/**
+ * Empty table structure
+ *
+ * \since v0.2
+ */
+AMQP_EXPORT extern const amqp_table_t amqp_empty_table;
+
+/**
+ * Empty table array structure
+ *
+ * \since v0.2
+ */
+AMQP_EXPORT extern const amqp_array_t amqp_empty_array;
+
+/* Compatibility macros for the above, to avoid the need to update
+   code written against earlier versions of librabbitmq. */
+
+/**
+ * \def AMQP_EMPTY_BYTES
+ *
+ * Deprecated, use \ref amqp_empty_bytes instead
+ *
+ * \deprecated use \ref amqp_empty_bytes instead
+ *
+ * \since v0.1
+ */
+#define AMQP_EMPTY_BYTES amqp_empty_bytes
+
+/**
+ * \def AMQP_EMPTY_TABLE
+ *
+ * Deprecated, use \ref amqp_empty_table instead
+ *
+ * \deprecated use \ref amqp_empty_table instead
+ *
+ * \since v0.1
+ */
+#define AMQP_EMPTY_TABLE amqp_empty_table
+
+/**
+ * \def AMQP_EMPTY_ARRAY
+ *
+ * Deprecated, use \ref amqp_empty_array instead
+ *
+ * \deprecated use \ref amqp_empty_array instead
+ *
+ * \since v0.1
+ */
+#define AMQP_EMPTY_ARRAY amqp_empty_array
+
+/**
+ * Initializes an amqp_pool_t memory allocation pool for use
+ *
+ * Readies an allocation pool for use. An amqp_pool_t
+ * must be initialized before use
+ *
+ * \param [in] pool the amqp_pool_t structure to initialize.
+ *              Calling this function on a pool a pool that has
+ *              already been initialized will result in undefined
+ *              behavior
+ * \param [in] pagesize the unit size that the pool will allocate
+ *              memory chunks in. Anything allocated against the pool
+ *              with a requested size will be carved out of a block
+ *              this size. Allocations larger than this will be
+ *              allocated individually
+ *
+ * \sa recycle_amqp_pool(), empty_amqp_pool(), amqp_pool_alloc(),
+ *     amqp_pool_alloc_bytes(), amqp_pool_t
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL init_amqp_pool(amqp_pool_t *pool, size_t pagesize);
+
+/**
+ * Recycles an amqp_pool_t memory allocation pool
+ *
+ * Recycles the space allocate by the pool
+ *
+ * This invalidates all allocations made against the pool before this call is
+ * made, any use of any allocations made before recycle_amqp_pool() is called
+ * will result in undefined behavior.
+ *
+ * Note: this may or may not release memory, to force memory to be released
+ * call empty_amqp_pool().
+ *
+ * \param [in] pool the amqp_pool_t to recycle
+ *
+ * \sa recycle_amqp_pool(), empty_amqp_pool(), amqp_pool_alloc(),
+ *      amqp_pool_alloc_bytes()
+ *
+ * \since v0.1
+ *
+ */
+AMQP_EXPORT
+void AMQP_CALL recycle_amqp_pool(amqp_pool_t *pool);
+
+/**
+ * Empties an amqp memory pool
+ *
+ * Releases all memory associated with an allocation pool
+ *
+ * \param [in] pool the amqp_pool_t to empty
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL empty_amqp_pool(amqp_pool_t *pool);
+
+/**
+ * Allocates a block of memory from an amqp_pool_t memory pool
+ *
+ * Memory will be aligned on a 8-byte boundary. If a 0-length allocation is
+ * requested, a NULL pointer will be returned.
+ *
+ * \param [in] pool the allocation pool to allocate the memory from
+ * \param [in] amount the size of the allocation in bytes.
+ * \return a pointer to the memory block, or NULL if the allocation cannot
+ *          be satisfied.
+ *
+ * \sa init_amqp_pool(), recycle_amqp_pool(), empty_amqp_pool(),
+ *     amqp_pool_alloc_bytes()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void *AMQP_CALL amqp_pool_alloc(amqp_pool_t *pool, size_t amount);
+
+/**
+ * Allocates a block of memory from an amqp_pool_t to an amqp_bytes_t
+ *
+ * Memory will be aligned on a 8-byte boundary. If a 0-length allocation is
+ * requested, output.bytes = NULL.
+ *
+ * \param [in] pool the allocation pool to allocate the memory from
+ * \param [in] amount the size of the allocation in bytes
+ * \param [in] output the location to store the pointer. On success
+ *              output.bytes will be set to the beginning of the buffer
+ *              output.len will be set to amount
+ *              On error output.bytes will be set to NULL and output.len
+ *              set to 0
+ *
+ * \sa init_amqp_pool(), recycle_amqp_pool(), empty_amqp_pool(),
+ *     amqp_pool_alloc()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_pool_alloc_bytes(amqp_pool_t *pool, size_t amount,
+                                     amqp_bytes_t *output);
+
+/**
+ * Wraps a c string in an amqp_bytes_t
+ *
+ * Takes a string, calculates its length and creates an
+ * amqp_bytes_t that points to it. The string is not duplicated.
+ *
+ * For a given input cstr, The amqp_bytes_t output.bytes is the
+ * same as cstr, output.len is the length of the string not including
+ * the \0 terminator
+ *
+ * This function uses strlen() internally so cstr must be properly
+ * terminated
+ *
+ * \param [in] cstr the c string to wrap
+ * \return an amqp_bytes_t that describes the string
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_bytes_t AMQP_CALL amqp_cstring_bytes(char const *cstr);
+
+/**
+ * Duplicates an amqp_bytes_t buffer.
+ *
+ * The buffer is cloned and the contents copied.
+ *
+ * The memory associated with the output is allocated
+ * with amqp_bytes_malloc() and should be freed with
+ * amqp_bytes_free()
+ *
+ * \param [in] src
+ * \return a clone of the src
+ *
+ * \sa amqp_bytes_free(), amqp_bytes_malloc()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_bytes_t AMQP_CALL amqp_bytes_malloc_dup(amqp_bytes_t src);
+
+/**
+ * Allocates a amqp_bytes_t buffer
+ *
+ * Creates an amqp_bytes_t buffer of the specified amount, the buffer should be
+ * freed using amqp_bytes_free()
+ *
+ * \param [in] amount the size of the buffer in bytes
+ * \returns an amqp_bytes_t with amount bytes allocated.
+ *           output.bytes will be set to NULL on error
+ *
+ * \sa amqp_bytes_free(), amqp_bytes_malloc_dup()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_bytes_t AMQP_CALL amqp_bytes_malloc(size_t amount);
+
+/**
+ * Frees an amqp_bytes_t buffer
+ *
+ * Frees a buffer allocated with amqp_bytes_malloc() or amqp_bytes_malloc_dup()
+ *
+ * Calling amqp_bytes_free on buffers not allocated with one
+ * of those two functions will result in undefined behavior
+ *
+ * \param [in] bytes the buffer to free
+ *
+ * \sa amqp_bytes_malloc(), amqp_bytes_malloc_dup()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_bytes_free(amqp_bytes_t bytes);
+
+/**
+ * Allocate and initialize a new amqp_connection_state_t object
+ *
+ * amqp_connection_state_t objects created with this function
+ * should be freed with amqp_destroy_connection()
+ *
+ * \returns an opaque pointer on success, NULL or 0 on failure.
+ *
+ * \sa amqp_destroy_connection()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_connection_state_t AMQP_CALL amqp_new_connection(void);
+
+/**
+ * Get the underlying socket descriptor for the connection
+ *
+ * \warning Use the socket returned from this function carefully, incorrect use
+ * of the socket outside of the library will lead to undefined behavior.
+ * Additionally rabbitmq-c may use the socket differently version-to-version,
+ * what may work in one version, may break in the next version. Be sure to
+ * thoroughly test any applications that use the socket returned by this
+ * function especially when using a newer version of rabbitmq-c
+ *
+ * \param [in] state the connection object
+ * \returns the socket descriptor if one has been set, -1 otherwise
+ *
+ * \sa amqp_tcp_socket_new(), amqp_ssl_socket_new(), amqp_socket_open()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_get_sockfd(amqp_connection_state_t state);
+
+/**
+ * Deprecated, use amqp_tcp_socket_new() or amqp_ssl_socket_new()
+ *
+ * \deprecated Use amqp_tcp_socket_new() or amqp_ssl_socket_new()
+ *
+ * Sets the socket descriptor associated with the connection. The socket
+ * should be connected to a broker, and should not be read to or written from
+ * before calling this function.  A socket descriptor can be created and opened
+ * using amqp_open_socket()
+ *
+ * \param [in] state the connection object
+ * \param [in] sockfd the socket
+ *
+ * \sa amqp_open_socket(), amqp_tcp_socket_new(), amqp_ssl_socket_new()
+ *
+ * \since v0.1
+ */
+AMQP_DEPRECATED_EXPORT void AMQP_CALL
+    amqp_set_sockfd(amqp_connection_state_t state, int sockfd);
+
+/**
+ * Tune client side parameters
+ *
+ * \warning This function may call abort() if the connection is in a certain
+ *  state. As such it should probably not be called code outside the library.
+ *  connection parameters should be specified when calling amqp_login() or
+ *  amqp_login_with_properties()
+ *
+ * This function changes channel_max, frame_max, and heartbeat parameters, on
+ * the client side only. It does not try to renegotiate these parameters with
+ * the broker. Using this function will lead to unexpected results.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel_max the maximum number of channels.
+ *              The largest this can be is 65535
+ * \param [in] frame_max the maximum size of an frame.
+ *              The smallest this can be is 4096
+ *              The largest this can be is 2147483647
+ *              Unless you know what you're doing the recommended
+ *              size is 131072 or 128KB
+ * \param [in] heartbeat the number of seconds between heartbeats
+ *
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value otherwise.
+ *  Possible error codes include:
+ *  - AMQP_STATUS_NO_MEMORY memory allocation failed.
+ *  - AMQP_STATUS_TIMER_FAILURE the underlying system timer indicated it
+ *    failed.
+ *
+ * \sa amqp_login(), amqp_login_with_properties()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_tune_connection(amqp_connection_state_t state,
+                                   int channel_max, int frame_max,
+                                   int heartbeat);
+
+/**
+ * Get the maximum number of channels the connection can handle
+ *
+ * The maximum number of channels is set when connection negotiation takes
+ * place in amqp_login() or amqp_login_with_properties().
+ *
+ * \param [in] state the connection object
+ * \return the maximum number of channels. 0 if there is no limit
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_get_channel_max(amqp_connection_state_t state);
+
+/**
+ * Get the maximum size of an frame the connection can handle
+ *
+ * The maximum size of an frame is set when connection negotiation takes
+ * place in amqp_login() or amqp_login_with_properties().
+ *
+ * \param [in] state the connection object
+ * \return the maximum size of an frame.
+ *
+ * \since v0.6
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_get_frame_max(amqp_connection_state_t state);
+
+/**
+ * Get the number of seconds between heartbeats of the connection
+ *
+ * The number of seconds between heartbeats is set when connection
+ * negotiation takes place in amqp_login() or amqp_login_with_properties().
+ *
+ * \param [in] state the connection object
+ * \return the number of seconds between heartbeats.
+ *
+ * \since v0.6
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_get_heartbeat(amqp_connection_state_t state);
+
+/**
+ * Destroys an amqp_connection_state_t object
+ *
+ * Destroys a amqp_connection_state_t object that was created with
+ * amqp_new_connection(). If the connection with the broker is open, it will be
+ * implicitly closed with a reply code of 200 (success). Any memory that
+ * would be freed with amqp_maybe_release_buffers() or
+ * amqp_maybe_release_buffers_on_channel() will be freed, and use of that
+ * memory will caused undefined behavior.
+ *
+ * \param [in] state the connection object
+ * \return AMQP_STATUS_OK on success. amqp_status_enum value failure
+ *
+ * \sa amqp_new_connection()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_destroy_connection(amqp_connection_state_t state);
+
+/**
+ * Process incoming data
+ *
+ * \warning This is a low-level function intended for those who want to
+ *  have greater control over input and output over the socket from the
+ *  broker. Correctly using this function requires in-depth knowledge of AMQP
+ *  and rabbitmq-c.
+ *
+ * For a given buffer of data received from the broker, decode the first
+ * frame in the buffer. If more than one frame is contained in the input buffer
+ * the return value will be less than the received_data size, the caller should
+ * adjust received_data buffer descriptor to point to the beginning of the
+ * buffer + the return value.
+ *
+ * \param [in] state the connection object
+ * \param [in] received_data a buffer of data received from the broker. The
+ *  function will return the number of bytes of the buffer it used. The
+ *  function copies these bytes to an internal buffer: this part of the buffer
+ *  may be reused after this function successfully completes.
+ * \param [in,out] decoded_frame caller should pass in a pointer to an
+ *  amqp_frame_t struct. If there is enough data in received_data for a
+ *  complete frame, decoded_frame->frame_type will be set to something OTHER
+ *  than 0. decoded_frame may contain members pointing to memory owned by
+ *  the state object. This memory can be recycled with
+ *  amqp_maybe_release_buffers() or amqp_maybe_release_buffers_on_channel().
+ * \return number of bytes consumed from received_data or 0 if a 0-length
+ *  buffer was passed. A negative return value indicates failure. Possible
+ * errors:
+ *  - AMQP_STATUS_NO_MEMORY failure in allocating memory. The library is likely
+ *    in an indeterminate state making recovery unlikely. Client should note the
+ *    error and terminate the application
+ *  - AMQP_STATUS_BAD_AMQP_DATA bad AMQP data was received. The connection
+ *    should be shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_METHOD: an unknown method was received from the
+ *    broker. This is likely a protocol error and the connection should be
+ *    shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_CLASS: a properties frame with an unknown class
+ *    was received from the broker. This is likely a protocol error and the
+ *    connection should be shutdown immediately
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_handle_input(amqp_connection_state_t state,
+                                amqp_bytes_t received_data,
+                                amqp_frame_t *decoded_frame);
+
+/**
+ * Check to see if connection memory can be released
+ *
+ * \deprecated This function is deprecated in favor of
+ *  amqp_maybe_release_buffers() or amqp_maybe_release_buffers_on_channel()
+ *
+ * Checks the state of an amqp_connection_state_t object to see if
+ * amqp_release_buffers() can be called successfully.
+ *
+ * \param [in] state the connection object
+ * \returns TRUE if the buffers can be released FALSE otherwise
+ *
+ * \sa amqp_release_buffers() amqp_maybe_release_buffers()
+ *  amqp_maybe_release_buffers_on_channel()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_boolean_t AMQP_CALL amqp_release_buffers_ok(amqp_connection_state_t state);
+
+/**
+ * Release amqp_connection_state_t owned memory
+ *
+ * \deprecated This function is deprecated in favor of
+ *  amqp_maybe_release_buffers() or amqp_maybe_release_buffers_on_channel()
+ *
+ * \warning caller should ensure amqp_release_buffers_ok() returns true before
+ *  calling this function. Failure to do so may result in abort() being called.
+ *
+ * Release memory owned by the amqp_connection_state_t for reuse by the
+ * library. Use of any memory returned by the library before this function is
+ * called will result in undefined behavior.
+ *
+ * \note internally rabbitmq-c tries to reuse memory when possible. As a result
+ * its possible calling this function may not have a noticeable effect on
+ * memory usage.
+ *
+ * \param [in] state the connection object
+ *
+ * \sa amqp_release_buffers_ok() amqp_maybe_release_buffers()
+ *  amqp_maybe_release_buffers_on_channel()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_release_buffers(amqp_connection_state_t state);
+
+/**
+ * Release amqp_connection_state_t owned memory
+ *
+ * Release memory owned by the amqp_connection_state_t object related to any
+ * channel, allowing reuse by the library. Use of any memory returned by the
+ * library before this function is called with result in undefined behavior.
+ *
+ * \note internally rabbitmq-c tries to reuse memory when possible. As a result
+ * its possible calling this function may not have a noticeable effect on
+ * memory usage.
+ *
+ * \param [in] state the connection object
+ *
+ * \sa amqp_maybe_release_buffers_on_channel()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_maybe_release_buffers(amqp_connection_state_t state);
+
+/**
+ * Release amqp_connection_state_t owned memory related to a channel
+ *
+ * Release memory owned by the amqp_connection_state_t object related to the
+ * specified channel, allowing reuse by the library. Use of any memory returned
+ * the library for a specific channel will result in undefined behavior.
+ *
+ * \note internally rabbitmq-c tries to reuse memory when possible. As a result
+ * its possible calling this function may not have a noticeable effect on
+ * memory usage.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel specifier for which memory should be
+ *  released. Note that the library does not care about the state of the
+ *  channel when calling this function
+ *
+ * \sa amqp_maybe_release_buffers()
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_maybe_release_buffers_on_channel(
+    amqp_connection_state_t state, amqp_channel_t channel);
+
+/**
+ * Send a frame to the broker
+ *
+ * \param [in] state the connection object
+ * \param [in] frame the frame to send to the broker
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value on error.
+ *  Possible error codes:
+ *  - AMQP_STATUS_BAD_AMQP_DATA the serialized form of the method or
+ *    properties was too large to fit in a single AMQP frame, or the
+ *    method contains an invalid value. The frame was not sent.
+ *  - AMQP_STATUS_TABLE_TOO_BIG the serialized form of an amqp_table_t is
+ *    too large to fit in a single AMQP frame. Frame was not sent.
+ *  - AMQP_STATUS_UNKNOWN_METHOD an invalid method type was passed in
+ *  - AMQP_STATUS_UNKNOWN_CLASS an invalid properties type was passed in
+ *  - AMQP_STATUS_TIMER_FAILURE system timer indicated failure. The frame
+ *    was sent
+ *  - AMQP_STATUS_SOCKET_ERROR
+ *  - AMQP_STATUS_SSL_ERROR
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_send_frame(amqp_connection_state_t state,
+                              amqp_frame_t const *frame);
+
+/**
+ * Compare two table entries
+ *
+ * Works just like strcmp(), comparing two the table keys, datatype, then values
+ *
+ * \param [in] entry1 the entry on the left
+ * \param [in] entry2 the entry on the right
+ * \return 0 if entries are equal, 0 < if left is greater, 0 > if right is
+ * greater
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_table_entry_cmp(void const *entry1, void const *entry2);
+
+/**
+ * Open a socket to a remote host
+ *
+ * \deprecated This function is deprecated in favor of amqp_socket_open()
+ *
+ * Looks up the hostname, then attempts to open a socket to the host using
+ * the specified portnumber. It also sets various options on the socket to
+ * improve performance and correctness.
+ *
+ * \param [in] hostname this can be a hostname or IP address.
+ *              Both IPv4 and IPv6 are acceptable
+ * \param [in] portnumber the port to connect on. RabbitMQ brokers
+ *              listen on port 5672, and 5671 for SSL
+ * \return a positive value indicates success and is the sockfd. A negative
+ *  value (see amqp_status_enum)is returned on failure. Possible error codes:
+ *  - AMQP_STATUS_TCP_SOCKETLIB_INIT_ERROR Initialization of underlying socket
+ *    library failed.
+ *  - AMQP_STATUS_HOSTNAME_RESOLUTION_FAILED hostname lookup failed.
+ *  - AMQP_STATUS_SOCKET_ERROR a socket error occurred. errno or
+ *    WSAGetLastError() may return more useful information.
+ *
+ * \note IPv6 support was added in v0.3
+ *
+ * \sa amqp_socket_open() amqp_set_sockfd()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_open_socket(char const *hostname, int portnumber);
+
+/**
+ * Send initial AMQP header to the broker
+ *
+ * \warning this is a low level function intended for those who want to
+ * interact with the broker at a very low level. Use of this function without
+ * understanding what it does will result in AMQP protocol errors.
+ *
+ * This function sends the AMQP protocol header to the broker.
+ *
+ * \param [in] state the connection object
+ * \return AMQP_STATUS_OK on success, a negative value on failure. Possible
+ *  error codes:
+ * - AMQP_STATUS_CONNECTION_CLOSED the connection to the broker was closed.
+ * - AMQP_STATUS_SOCKET_ERROR a socket error occurred. It is likely the
+ *   underlying socket has been closed. errno or WSAGetLastError() may provide
+ *   further information.
+ * - AMQP_STATUS_SSL_ERROR a SSL error occurred. The connection to the broker
+ *   was closed.
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_send_header(amqp_connection_state_t state);
+
+/**
+ * Checks to see if there are any incoming frames ready to be read
+ *
+ * Checks to see if there are any amqp_frame_t objects buffered by the
+ * amqp_connection_state_t object. Having one or more frames buffered means
+ * that amqp_simple_wait_frame() or amqp_simple_wait_frame_noblock() will
+ * return a frame without potentially blocking on a read() call.
+ *
+ * \param [in] state the connection object
+ * \return TRUE if there are frames enqueued, FALSE otherwise
+ *
+ * \sa amqp_simple_wait_frame() amqp_simple_wait_frame_noblock()
+ *  amqp_data_in_buffer()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_boolean_t AMQP_CALL amqp_frames_enqueued(amqp_connection_state_t state);
+
+/**
+ * Read a single amqp_frame_t
+ *
+ * Waits for the next amqp_frame_t frame to be read from the broker.
+ * This function has the potential to block for a long time in the case of
+ * waiting for a basic.deliver method frame from the broker.
+ *
+ * The library may buffer frames. When an amqp_connection_state_t object
+ * has frames buffered calling amqp_simple_wait_frame() will return an
+ * amqp_frame_t without entering a blocking read(). You can test to see if
+ * an amqp_connection_state_t object has frames buffered by calling the
+ * amqp_frames_enqueued() function.
+ *
+ * The library has a socket read buffer. When there is data in an
+ * amqp_connection_state_t read buffer, amqp_simple_wait_frame() may return an
+ * amqp_frame_t without entering a blocking read(). You can test to see if an
+ * amqp_connection_state_t object has data in its read buffer by calling the
+ * amqp_data_in_buffer() function.
+ *
+ * \param [in] state the connection object
+ * \param [out] decoded_frame the frame
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value
+ *  is returned otherwise. Possible errors include:
+ *  - AMQP_STATUS_NO_MEMORY failure in allocating memory. The library is likely
+ *    in an indeterminate state making recovery unlikely. Client should note the
+ *    error and terminate the application
+ *  - AMQP_STATUS_BAD_AMQP_DATA bad AMQP data was received. The connection
+ *    should be shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_METHOD: an unknown method was received from the
+ *    broker. This is likely a protocol error and the connection should be
+ *    shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_CLASS: a properties frame with an unknown class
+ *    was received from the broker. This is likely a protocol error and the
+ *    connection should be shutdown immediately
+ *  - AMQP_STATUS_HEARTBEAT_TIMEOUT timed out while waiting for heartbeat
+ *    from the broker. The connection has been closed.
+ *  - AMQP_STATUS_TIMER_FAILURE system timer indicated failure.
+ *  - AMQP_STATUS_SOCKET_ERROR a socket error occurred. The connection has
+ *    been closed
+ *  - AMQP_STATUS_SSL_ERROR a SSL socket error occurred. The connection has
+ *    been closed.
+ *
+ * \sa amqp_simple_wait_frame_noblock() amqp_frames_enqueued()
+ *  amqp_data_in_buffer()
+ *
+ * \note as of v0.4.0 this function will no longer return heartbeat frames
+ *  when enabled by specifying a non-zero heartbeat value in amqp_login().
+ *  Heartbeating is handled internally by the library.
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_simple_wait_frame(amqp_connection_state_t state,
+                                     amqp_frame_t *decoded_frame);
+
+/**
+ * Read a single amqp_frame_t with a timeout.
+ *
+ * Waits for the next amqp_frame_t frame to be read from the broker, up to
+ * a timespan specified by tv. The function will return AMQP_STATUS_TIMEOUT
+ * if the timeout is reached. The tv value is not modified by the function.
+ *
+ * If a 0 timeval is specified, the function behaves as if its non-blocking: it
+ * will test to see if a frame can be read from the broker, and return
+ * immediately.
+ *
+ * If NULL is passed in for tv, the function will behave like
+ * amqp_simple_wait_frame() and block until a frame is received from the broker
+ *
+ * The library may buffer frames.  When an amqp_connection_state_t object
+ * has frames buffered calling amqp_simple_wait_frame_noblock() will return an
+ * amqp_frame_t without entering a blocking read(). You can test to see if an
+ * amqp_connection_state_t object has frames buffered by calling the
+ * amqp_frames_enqueued() function.
+ *
+ * The library has a socket read buffer. When there is data in an
+ * amqp_connection_state_t read buffer, amqp_simple_wait_frame_noblock() may
+ * return
+ * an amqp_frame_t without entering a blocking read(). You can test to see if an
+ * amqp_connection_state_t object has data in its read buffer by calling the
+ * amqp_data_in_buffer() function.
+ *
+ * \note This function does not return heartbeat frames. When enabled,
+ *  heartbeating is handled internally by the library.
+ *
+ * \param [in,out] state the connection object
+ * \param [out] decoded_frame the frame
+ * \param [in] tv the maximum time to wait for a frame to be read. Setting
+ * tv->tv_sec = 0 and tv->tv_usec = 0 will do a non-blocking read. Specifying
+ * NULL for tv will make the function block until a frame is read.
+ * \return AMQP_STATUS_OK on success. An amqp_status_enum value is returned
+ *  otherwise. Possible errors include:
+ *  - AMQP_STATUS_TIMEOUT the timeout was reached while waiting for a frame
+ *    from the broker.
+ *  - AMQP_STATUS_INVALID_PARAMETER the tv parameter contains an invalid value.
+ *  - AMQP_STATUS_NO_MEMORY failure in allocating memory. The library is likely
+ *    in an indeterminate state making recovery unlikely. Client should note the
+ *    error and terminate the application
+ *  - AMQP_STATUS_BAD_AMQP_DATA bad AMQP data was received. The connection
+ *    should be shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_METHOD: an unknown method was received from the
+ *    broker. This is likely a protocol error and the connection should be
+ *    shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_CLASS: a properties frame with an unknown class
+ *    was received from the broker. This is likely a protocol error and the
+ *    connection should be shutdown immediately
+ *  - AMQP_STATUS_HEARTBEAT_TIMEOUT timed out while waiting for heartbeat
+ *    from the broker. The connection has been closed.
+ *  - AMQP_STATUS_TIMER_FAILURE system timer indicated failure.
+ *  - AMQP_STATUS_SOCKET_ERROR a socket error occurred. The connection has
+ *    been closed
+ *  - AMQP_STATUS_SSL_ERROR a SSL socket error occurred. The connection has
+ *    been closed.
+ *
+ * \sa amqp_simple_wait_frame() amqp_frames_enqueued() amqp_data_in_buffer()
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_simple_wait_frame_noblock(amqp_connection_state_t state,
+                                             amqp_frame_t *decoded_frame,
+                                             const struct timeval *tv);
+
+/**
+ * Waits for a specific method from the broker
+ *
+ * \warning You probably don't want to use this function. If this function
+ *  doesn't receive exactly the frame requested it closes the whole connection.
+ *
+ * Waits for a single method on a channel from the broker.
+ * If a frame is received that does not match expected_channel
+ * or expected_method the program will abort
+ *
+ * \param [in] state the connection object
+ * \param [in] expected_channel the channel that the method should be delivered
+ *  on
+ * \param [in] expected_method the method to wait for
+ * \param [out] output the method
+ * \returns AMQP_STATUS_OK on success. An amqp_status_enum value is returned
+ *  otherwise. Possible errors include:
+ *  - AMQP_STATUS_WRONG_METHOD a frame containing the wrong method, wrong frame
+ *    type or wrong channel was received. The connection is closed.
+ *  - AMQP_STATUS_NO_MEMORY failure in allocating memory. The library is likely
+ *    in an indeterminate state making recovery unlikely. Client should note the
+ *    error and terminate the application
+ *  - AMQP_STATUS_BAD_AMQP_DATA bad AMQP data was received. The connection
+ *    should be shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_METHOD: an unknown method was received from the
+ *    broker. This is likely a protocol error and the connection should be
+ *    shutdown immediately
+ *  - AMQP_STATUS_UNKNOWN_CLASS: a properties frame with an unknown class
+ *    was received from the broker. This is likely a protocol error and the
+ *    connection should be shutdown immediately
+ *  - AMQP_STATUS_HEARTBEAT_TIMEOUT timed out while waiting for heartbeat
+ *    from the broker. The connection has been closed.
+ *  - AMQP_STATUS_TIMER_FAILURE system timer indicated failure.
+ *  - AMQP_STATUS_SOCKET_ERROR a socket error occurred. The connection has
+ *    been closed
+ *  - AMQP_STATUS_SSL_ERROR a SSL socket error occurred. The connection has
+ *    been closed.
+ *
+ * \since v0.1
+ */
+
+AMQP_EXPORT
+int AMQP_CALL amqp_simple_wait_method(amqp_connection_state_t state,
+                                      amqp_channel_t expected_channel,
+                                      amqp_method_number_t expected_method,
+                                      amqp_method_t *output);
+
+/**
+ * Sends a method to the broker
+ *
+ * This is a thin wrapper around amqp_send_frame(), providing a way to send
+ * a method to the broker on a specified channel.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel object
+ * \param [in] id the method number
+ * \param [in] decoded the method object
+ * \returns AMQP_STATUS_OK on success, an amqp_status_enum value otherwise.
+ *  Possible errors include:
+ *  - AMQP_STATUS_BAD_AMQP_DATA the serialized form of the method or
+ *    properties was too large to fit in a single AMQP frame, or the
+ *    method contains an invalid value. The frame was not sent.
+ *  - AMQP_STATUS_TABLE_TOO_BIG the serialized form of an amqp_table_t is
+ *    too large to fit in a single AMQP frame. Frame was not sent.
+ *  - AMQP_STATUS_UNKNOWN_METHOD an invalid method type was passed in
+ *  - AMQP_STATUS_UNKNOWN_CLASS an invalid properties type was passed in
+ *  - AMQP_STATUS_TIMER_FAILURE system timer indicated failure. The frame
+ *    was sent
+ *  - AMQP_STATUS_SOCKET_ERROR
+ *  - AMQP_STATUS_SSL_ERROR
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_send_method(amqp_connection_state_t state,
+                               amqp_channel_t channel, amqp_method_number_t id,
+                               void *decoded);
+
+/**
+ * Sends a method to the broker and waits for a method response
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel object
+ * \param [in] request_id the method number of the request
+ * \param [in] expected_reply_ids a 0 terminated array of expected response
+ *             method numbers
+ * \param [in] decoded_request_method the method to be sent to the broker
+ * \return a amqp_rpc_reply_t:
+ *  - r.reply_type == AMQP_RESPONSE_NORMAL. RPC completed successfully
+ *  - r.reply_type == AMQP_RESPONSE_SERVER_EXCEPTION. The broker returned an
+ *    exception:
+ *    - If r.reply.id == AMQP_CHANNEL_CLOSE_METHOD a channel exception
+ *      occurred, cast r.reply.decoded to amqp_channel_close_t* to see details
+ *      of the exception. The client should amqp_send_method() a
+ *      amqp_channel_close_ok_t. The channel must be re-opened before it
+ *      can be used again. Any resources associated with the channel
+ *      (auto-delete exchanges, auto-delete queues, consumers) are invalid
+ *      and must be recreated before attempting to use them again.
+ *    - If r.reply.id == AMQP_CONNECTION_CLOSE_METHOD a connection exception
+ *      occurred, cast r.reply.decoded to amqp_connection_close_t* to see
+ *      details of the exception. The client amqp_send_method() a
+ *      amqp_connection_close_ok_t and disconnect from the broker.
+ *  - r.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION. An exception occurred
+ *    within the library. Examine r.library_error and compare it against
+ *    amqp_status_enum values to determine the error.
+ *
+ * \sa amqp_simple_rpc_decoded()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_simple_rpc(
+    amqp_connection_state_t state, amqp_channel_t channel,
+    amqp_method_number_t request_id, amqp_method_number_t *expected_reply_ids,
+    void *decoded_request_method);
+
+/**
+ * Sends a method to the broker and waits for a method response
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel object
+ * \param [in] request_id the method number of the request
+ * \param [in] reply_id the method number expected in response
+ * \param [in] decoded_request_method the request method
+ * \return a pointer to the method returned from the broker, or NULL on error.
+ *  On error amqp_get_rpc_reply() will return an amqp_rpc_reply_t with
+ *  details on the error that occurred.
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+void *AMQP_CALL amqp_simple_rpc_decoded(amqp_connection_state_t state,
+                                        amqp_channel_t channel,
+                                        amqp_method_number_t request_id,
+                                        amqp_method_number_t reply_id,
+                                        void *decoded_request_method);
+
+/**
+ * Get the last global amqp_rpc_reply
+ *
+ * The API methods corresponding to most synchronous AMQP methods
+ * return a pointer to the decoded method result.  Upon error, they
+ * return NULL, and we need some way of discovering what, if anything,
+ * went wrong. amqp_get_rpc_reply() returns the most recent
+ * amqp_rpc_reply_t instance corresponding to such an API operation
+ * for the given connection.
+ *
+ * Only use it for operations that do not themselves return
+ * amqp_rpc_reply_t; operations that do return amqp_rpc_reply_t
+ * generally do NOT update this per-connection-global amqp_rpc_reply_t
+ * instance.
+ *
+ * \param [in] state the connection object
+ * \return the most recent amqp_rpc_reply_t:
+ *  - r.reply_type == AMQP_RESPONSE_NORMAL. RPC completed successfully
+ *  - r.reply_type == AMQP_RESPONSE_SERVER_EXCEPTION. The broker returned an
+ *    exception:
+ *    - If r.reply.id == AMQP_CHANNEL_CLOSE_METHOD a channel exception
+ *      occurred, cast r.reply.decoded to amqp_channel_close_t* to see details
+ *      of the exception. The client should amqp_send_method() a
+ *      amqp_channel_close_ok_t. The channel must be re-opened before it
+ *      can be used again. Any resources associated with the channel
+ *      (auto-delete exchanges, auto-delete queues, consumers) are invalid
+ *      and must be recreated before attempting to use them again.
+ *    - If r.reply.id == AMQP_CONNECTION_CLOSE_METHOD a connection exception
+ *      occurred, cast r.reply.decoded to amqp_connection_close_t* to see
+ *      details of the exception. The client amqp_send_method() a
+ *      amqp_connection_close_ok_t and disconnect from the broker.
+ *  - r.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION. An exception occurred
+ *    within the library. Examine r.library_error and compare it against
+ *    amqp_status_enum values to determine the error.
+ *
+ * \sa amqp_simple_rpc_decoded()
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_get_rpc_reply(amqp_connection_state_t state);
+
+/**
+ * Login to the broker
+ *
+ * After using amqp_open_socket and amqp_set_sockfd, call
+ * amqp_login to complete connecting to the broker
+ *
+ * \param [in] state the connection object
+ * \param [in] vhost the virtual host to connect to on the broker. The default
+ *              on most brokers is "/"
+ * \param [in] channel_max the limit for number of channels for the connection.
+ *              0 means no limit, and is a good default
+ *              (AMQP_DEFAULT_MAX_CHANNELS)
+ *              Note that the maximum number of channels the protocol supports
+ *              is 65535 (2^16, with the 0-channel reserved). The server can
+ *              set a lower channel_max and then the client will use the lowest
+ *              of the two
+ * \param [in] frame_max the maximum size of an AMQP frame on the wire to
+ *              request of the broker for this connection. 4096 is the minimum
+ *              size, 2^31-1 is the maximum, a good default is 131072 (128KB),
+ *              or AMQP_DEFAULT_FRAME_SIZE
+ * \param [in] heartbeat the number of seconds between heartbeat frames to
+ *              request of the broker. A value of 0 disables heartbeats.
+ *              Note rabbitmq-c only has partial support for heartbeats, as of
+ *              v0.4.0 they are only serviced during amqp_basic_publish() and
+ *              amqp_simple_wait_frame()/amqp_simple_wait_frame_noblock()
+ * \param [in] sasl_method the SASL method to authenticate with the broker.
+ *              followed by the authentication information. The following SASL
+ *              methods are implemented:
+ *              -  AMQP_SASL_METHOD_PLAIN, the AMQP_SASL_METHOD_PLAIN argument
+ *                 should be followed by two arguments in this order:
+ *                 const char* username, and const char* password.
+ *              -  AMQP_SASL_METHOD_EXTERNAL, the AMQP_SASL_METHOD_EXTERNAL
+ *                 argument should be followed one argument:
+ *                 const char* identity.
+ * \return amqp_rpc_reply_t indicating success or failure.
+ *  - r.reply_type == AMQP_RESPONSE_NORMAL. Login completed successfully
+ *  - r.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION. In most cases errors
+ *    from the broker when logging in will be represented by the broker closing
+ *    the socket. In this case r.library_error will be set to
+ *    AMQP_STATUS_CONNECTION_CLOSED. This error can represent a number of
+ *    error conditions including: invalid vhost, authentication failure.
+ *  - r.reply_type == AMQP_RESPONSE_SERVER_EXCEPTION. The broker returned an
+ *    exception:
+ *    - If r.reply.id == AMQP_CHANNEL_CLOSE_METHOD a channel exception
+ *      occurred, cast r.reply.decoded to amqp_channel_close_t* to see details
+ *      of the exception. The client should amqp_send_method() a
+ *      amqp_channel_close_ok_t. The channel must be re-opened before it
+ *      can be used again. Any resources associated with the channel
+ *      (auto-delete exchanges, auto-delete queues, consumers) are invalid
+ *      and must be recreated before attempting to use them again.
+ *    - If r.reply.id == AMQP_CONNECTION_CLOSE_METHOD a connection exception
+ *      occurred, cast r.reply.decoded to amqp_connection_close_t* to see
+ *      details of the exception. The client amqp_send_method() a
+ *      amqp_connection_close_ok_t and disconnect from the broker.
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_login(amqp_connection_state_t state,
+                                      char const *vhost, int channel_max,
+                                      int frame_max, int heartbeat,
+                                      amqp_sasl_method_enum sasl_method, ...);
+
+/**
+ * Login to the broker passing a properties table
+ *
+ * This function is similar to amqp_login() and differs in that it provides a
+ * way to pass client properties to the broker. This is commonly used to
+ * negotiate newer protocol features as they are supported by the broker.
+ *
+ * \param [in] state the connection object
+ * \param [in] vhost the virtual host to connect to on the broker. The default
+ *              on most brokers is "/"
+ * \param [in] channel_max the limit for the number of channels for the
+ *             connection.
+ *             0 means no limit, and is a good default
+ *             (AMQP_DEFAULT_MAX_CHANNELS)
+ *             Note that the maximum number of channels the protocol supports
+ *             is 65535 (2^16, with the 0-channel reserved). The server can
+ *             set a lower channel_max and then the client will use the lowest
+ *             of the two
+ * \param [in] frame_max the maximum size of an AMQP frame ont he wire to
+ *              request of the broker for this connection. 4096 is the minimum
+ *              size, 2^31-1 is the maximum, a good default is 131072 (128KB),
+ *              or AMQP_DEFAULT_FRAME_SIZE
+ * \param [in] heartbeat the number of seconds between heartbeat frame to
+ *             request of the broker. A value of 0 disables heartbeats.
+ *             Note rabbitmq-c only has partial support for hearts, as of
+ *             v0.4.0 heartbeats are only serviced during amqp_basic_publish(),
+ *             and amqp_simple_wait_frame()/amqp_simple_wait_frame_noblock()
+ * \param [in] properties a table of properties to send the broker.
+ * \param [in] sasl_method the SASL method to authenticate with the broker
+ *             followed by the authentication information. The following SASL
+ *             methods are implemented:
+ *             -  AMQP_SASL_METHOD_PLAIN, the AMQP_SASL_METHOD_PLAIN argument
+ *                should be followed by two arguments in this order:
+ *                const char* username, and const char* password.
+ *             -  AMQP_SASL_METHOD_EXTERNAL, the AMQP_SASL_METHOD_EXTERNAL
+ *                argument should be followed one argument:
+ *                const char* identity.
+ * \return amqp_rpc_reply_t indicating success or failure.
+ *  - r.reply_type == AMQP_RESPONSE_NORMAL. Login completed successfully
+ *  - r.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION. In most cases errors
+ *    from the broker when logging in will be represented by the broker closing
+ *    the socket. In this case r.library_error will be set to
+ *    AMQP_STATUS_CONNECTION_CLOSED. This error can represent a number of
+ *    error conditions including: invalid vhost, authentication failure.
+ *  - r.reply_type == AMQP_RESPONSE_SERVER_EXCEPTION. The broker returned an
+ *    exception:
+ *    - If r.reply.id == AMQP_CHANNEL_CLOSE_METHOD a channel exception
+ *      occurred, cast r.reply.decoded to amqp_channel_close_t* to see details
+ *      of the exception. The client should amqp_send_method() a
+ *      amqp_channel_close_ok_t. The channel must be re-opened before it
+ *      can be used again. Any resources associated with the channel
+ *      (auto-delete exchanges, auto-delete queues, consumers) are invalid
+ *      and must be recreated before attempting to use them again.
+ *    - If r.reply.id == AMQP_CONNECTION_CLOSE_METHOD a connection exception
+ *      occurred, cast r.reply.decoded to amqp_connection_close_t* to see
+ *      details of the exception. The client amqp_send_method() a
+ *      amqp_connection_close_ok_t and disconnect from the broker.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_login_with_properties(
+    amqp_connection_state_t state, char const *vhost, int channel_max,
+    int frame_max, int heartbeat, const amqp_table_t *properties,
+    amqp_sasl_method_enum sasl_method, ...);
+
+struct amqp_basic_properties_t_;
+
+/**
+ * Publish a message to the broker
+ *
+ * Publish a message on an exchange with a routing key.
+ *
+ * Note that at the AMQ protocol level basic.publish is an async method:
+ * this means error conditions that occur on the broker (such as publishing to
+ * a non-existent exchange) will not be reflected in the return value of this
+ * function.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier
+ * \param [in] exchange the exchange on the broker to publish to
+ * \param [in] routing_key the routing key to use when publishing the message
+ * \param [in] mandatory indicate to the broker that the message MUST be routed
+ *              to a queue. If the broker cannot do this it should respond with
+ *              a basic.return method.
+ * \param [in] immediate indicate to the broker that the message MUST be
+ *             delivered to a consumer immediately. If the broker cannot do this
+ *             it should respond with a basic.return method.
+ * \param [in] properties the properties associated with the message
+ * \param [in] body the message body
+ * \return AMQP_STATUS_OK on success, amqp_status_enum value on failure. Note
+ *         that basic.publish is an async method, the return value from this
+ *         function only indicates that the message data was successfully
+ *         transmitted to the broker. It does not indicate failures that occur
+ *         on the broker, such as publishing to a non-existent exchange.
+ *         Possible error values:
+ *         - AMQP_STATUS_TIMER_FAILURE: system timer facility returned an error
+ *           the message was not sent.
+ *         - AMQP_STATUS_HEARTBEAT_TIMEOUT: connection timed out waiting for a
+ *           heartbeat from the broker. The message was not sent.
+ *         - AMQP_STATUS_NO_MEMORY: memory allocation failed. The message was
+ *           not sent.
+ *         - AMQP_STATUS_TABLE_TOO_BIG: a table in the properties was too large
+ *           to fit in a single frame. Message was not sent.
+ *         - AMQP_STATUS_CONNECTION_CLOSED: the connection was closed.
+ *         - AMQP_STATUS_SSL_ERROR: a SSL error occurred.
+ *         - AMQP_STATUS_TCP_ERROR: a TCP error occurred. errno or
+ *           WSAGetLastError() may provide more information
+ *
+ * Note: this function does heartbeat processing as of v0.4.0
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_basic_publish(
+    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);
+
+/**
+ * Closes an channel
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier
+ * \param [in] code the reason for closing the channel, AMQP_REPLY_SUCCESS is a
+ *             good default
+ * \return amqp_rpc_reply_t indicating success or failure
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_channel_close(amqp_connection_state_t state,
+                                              amqp_channel_t channel, int code);
+
+/**
+ * Closes the entire connection
+ *
+ * Implicitly closes all channels and informs the broker the connection
+ * is being closed, after receiving acknowledgment from the broker it closes
+ * the socket.
+ *
+ * \param [in] state the connection object
+ * \param [in] code the reason code for closing the connection.
+ *             AMQP_REPLY_SUCCESS is a good default.
+ * \return amqp_rpc_reply_t indicating the result
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_connection_close(amqp_connection_state_t state,
+                                                 int code);
+
+/**
+ * Acknowledges a message
+ *
+ * Does a basic.ack on a received message
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier
+ * \param [in] delivery_tag the delivery tag of the message to be ack'd
+ * \param [in] multiple if true, ack all messages up to this delivery tag, if
+ *              false ack only this delivery tag
+ * \return 0 on success,  0 > on failing to send the ack to the broker.
+ *            this will not indicate failure if something goes wrong on the
+ *            broker
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_basic_ack(amqp_connection_state_t state,
+                             amqp_channel_t channel, uint64_t delivery_tag,
+                             amqp_boolean_t multiple);
+
+/**
+ * Do a basic.get
+ *
+ * Synchonously polls the broker for a message in a queue, and
+ * retrieves the message if a message is in the queue.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier to use
+ * \param [in] queue the queue name to retrieve from
+ * \param [in] no_ack if true the message is automatically ack'ed
+ *              if false amqp_basic_ack should be called once the message
+ *              retrieved has been processed
+ * \return amqp_rpc_reply indicating success or failure
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_basic_get(amqp_connection_state_t state,
+                                          amqp_channel_t channel,
+                                          amqp_bytes_t queue,
+                                          amqp_boolean_t no_ack);
+
+/**
+ * Do a basic.reject
+ *
+ * Actively reject a message that has been delivered
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier
+ * \param [in] delivery_tag the delivery tag of the message to reject
+ * \param [in] requeue indicate to the broker whether it should requeue the
+ *              message or just discard it.
+ * \return 0 on success, 0 > on failing to send the reject method to the broker.
+ *          This will not indicate failure if something goes wrong on the
+ * broker.
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_basic_reject(amqp_connection_state_t state,
+                                amqp_channel_t channel, uint64_t delivery_tag,
+                                amqp_boolean_t requeue);
+
+/**
+ * Do a basic.nack
+ *
+ * Actively reject a message, this has the same effect as amqp_basic_reject()
+ * however, amqp_basic_nack() can negatively acknowledge multiple messages with
+ * one call much like amqp_basic_ack() can acknowledge mutliple messages with
+ * one call.
+ *
+ * \param [in] state the connection object
+ * \param [in] channel the channel identifier
+ * \param [in] delivery_tag the delivery tag of the message to reject
+ * \param [in] multiple if set to 1 negatively acknowledge all unacknowledged
+ *              messages on this channel.
+ * \param [in] requeue indicate to the broker whether it should requeue the
+ *              message or dead-letter it.
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value otherwise.
+ *
+ * \since v0.5.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_basic_nack(amqp_connection_state_t state,
+                              amqp_channel_t channel, uint64_t delivery_tag,
+                              amqp_boolean_t multiple, amqp_boolean_t requeue);
+/**
+ * Check to see if there is data left in the receive buffer
+ *
+ * Can be used to see if there is data still in the buffer, if so
+ * calling amqp_simple_wait_frame will not immediately enter a
+ * blocking read.
+ *
+ * \param [in] state the connection object
+ * \return true if there is data in the recieve buffer, false otherwise
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+amqp_boolean_t AMQP_CALL amqp_data_in_buffer(amqp_connection_state_t state);
+
+/**
+ * Get the error string for the given error code.
+ *
+ * \deprecated This function has been deprecated in favor of
+ *  \ref amqp_error_string2() which returns statically allocated
+ *  string which do not need to be freed by the caller.
+ *
+ * The returned string resides on the heap; the caller is responsible
+ * for freeing it.
+ *
+ * \param [in] err return error code
+ * \return the error string
+ *
+ * \since v0.1
+ */
+AMQP_DEPRECATED_EXPORT char *AMQP_CALL amqp_error_string(int err);
+
+/**
+ * Get the error string for the given error code.
+ *
+ * Get an error string associated with an error code. The string is statically
+ * allocated and does not need to be freed
+ *
+ * \param [in] err the error code
+ * \return the error string
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+const char *AMQP_CALL amqp_error_string2(int err);
+
+/**
+ * Deserialize an amqp_table_t from AMQP wireformat
+ *
+ * This is an internal function and is not typically used by
+ * client applications
+ *
+ * \param [in] encoded the buffer containing the serialized data
+ * \param [in] pool memory pool used to allocate the table entries from
+ * \param [in] output the amqp_table_t structure to fill in. Any existing
+ *             entries will be erased
+ * \param [in,out] offset The offset into the encoded buffer to start
+ *                 reading the serialized table. It will be updated
+ *                 by this function to end of the table
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value on failure
+ *  Possible error codes:
+ *  - AMQP_STATUS_NO_MEMORY out of memory
+ *  - AMQP_STATUS_BAD_AMQP_DATA invalid wireformat
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_decode_table(amqp_bytes_t encoded, amqp_pool_t *pool,
+                                amqp_table_t *output, size_t *offset);
+
+/**
+ * Serializes an amqp_table_t to the AMQP wireformat
+ *
+ * This is an internal function and is not typically used by
+ * client applications
+ *
+ * \param [in] encoded the buffer where to serialize the table to
+ * \param [in] input the amqp_table_t to serialize
+ * \param [in,out] offset The offset into the encoded buffer to start
+ *                 writing the serialized table. It will be updated
+ *                 by this function to where writing left off
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum value on failure
+ *  Possible error codes:
+ *  - AMQP_STATUS_TABLE_TOO_BIG the serialized form is too large for the
+ *    buffer
+ *  - AMQP_STATUS_BAD_AMQP_DATA invalid table
+ *
+ * \since v0.1
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_encode_table(amqp_bytes_t encoded, amqp_table_t *input,
+                                size_t *offset);
+
+/**
+ * Create a deep-copy of an amqp_table_t object
+ *
+ * Creates a deep-copy of an amqp_table_t object, using the provided pool
+ * object to allocate the necessary memory. This memory can be freed later by
+ * call recycle_amqp_pool(), or empty_amqp_pool()
+ *
+ * \param [in] original the table to copy
+ * \param [in,out] clone the table to copy to
+ * \param [in] pool the initialized memory pool to do allocations for the table
+ *             from
+ * \return AMQP_STATUS_OK on success, amqp_status_enum value on failure.
+ *  Possible error values:
+ *  - AMQP_STATUS_NO_MEMORY - memory allocation failure.
+ *  - AMQP_STATUS_INVALID_PARAMETER - invalid table (e.g., no key name)
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_table_clone(const amqp_table_t *original,
+                               amqp_table_t *clone, amqp_pool_t *pool);
+
+/**
+ * A message object
+ *
+ * \since v0.4.0
+ */
+typedef struct amqp_message_t_ {
+  amqp_basic_properties_t properties; /**< message properties */
+  amqp_bytes_t body;                  /**< message body */
+  amqp_pool_t pool;                   /**< pool used to allocate properties */
+} amqp_message_t;
+
+/**
+ * Reads the next message on a channel
+ *
+ * Reads a complete message (header + body) on a specified channel. This
+ * function is intended to be used with amqp_basic_get() or when an
+ * AMQP_BASIC_DELIVERY_METHOD method is received.
+ *
+ * \param [in,out] state the connection object
+ * \param [in] channel the channel on which to read the message from
+ * \param [in,out] message a pointer to a amqp_message_t object. Caller should
+ *                 call amqp_message_destroy() when it is done using the
+ *                 fields in the message object.  The caller is responsible for
+ *                 allocating/destroying the amqp_message_t object itself.
+ * \param [in] flags pass in 0. Currently unused.
+ * \returns a amqp_rpc_reply_t object. ret.reply_type == AMQP_RESPONSE_NORMAL on
+ * success.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_read_message(amqp_connection_state_t state,
+                                             amqp_channel_t channel,
+                                             amqp_message_t *message,
+                                             int flags);
+
+/**
+ * Frees memory associated with a amqp_message_t allocated in amqp_read_message
+ *
+ * \param [in] message
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_destroy_message(amqp_message_t *message);
+
+/**
+ * Envelope object
+ *
+ * \since v0.4.0
+ */
+typedef struct amqp_envelope_t_ {
+  amqp_channel_t channel;     /**< channel message was delivered on */
+  amqp_bytes_t consumer_tag;  /**< the consumer tag the message was delivered to
+                               */
+  uint64_t delivery_tag;      /**< the messages delivery tag */
+  amqp_boolean_t redelivered; /**< flag indicating whether this message is being
+                                 redelivered */
+  amqp_bytes_t exchange;      /**< exchange this message was published to */
+  amqp_bytes_t routing_key; /**< the routing key this message was published with
+                             */
+  amqp_message_t message;   /**< the message */
+} amqp_envelope_t;
+
+/**
+ * Wait for and consume a message
+ *
+ * Waits for a basic.deliver method on any channel, upon receipt of
+ * basic.deliver it reads that message, and returns. If any other method is
+ * received before basic.deliver, this function will return an amqp_rpc_reply_t
+ * with ret.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION, and
+ * ret.library_error == AMQP_STATUS_UNEXPECTED_STATE. The caller should then
+ * call amqp_simple_wait_frame() to read this frame and take appropriate action.
+ *
+ * This function should be used after starting a consumer with the
+ * amqp_basic_consume() function
+ *
+ * \param [in,out] state the connection object
+ * \param [in,out] envelope a pointer to a amqp_envelope_t object. Caller
+ *                 should call #amqp_destroy_envelope() when it is done using
+ *                 the fields in the envelope object. The caller is responsible
+ *                 for allocating/destroying the amqp_envelope_t object itself.
+ * \param [in] timeout a timeout to wait for a message delivery. Passing in
+ *             NULL will result in blocking behavior.
+ * \param [in] flags pass in 0. Currently unused.
+ * \returns a amqp_rpc_reply_t object.  ret.reply_type == AMQP_RESPONSE_NORMAL
+ *          on success. If ret.reply_type == AMQP_RESPONSE_LIBRARY_EXCEPTION,
+ *          and ret.library_error == AMQP_STATUS_UNEXPECTED_STATE, a frame other
+ *          than AMQP_BASIC_DELIVER_METHOD was received, the caller should call
+ *          amqp_simple_wait_frame() to read this frame and take appropriate
+ *          action.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_rpc_reply_t AMQP_CALL amqp_consume_message(amqp_connection_state_t state,
+                                                amqp_envelope_t *envelope,
+                                                const struct timeval *timeout,
+                                                int flags);
+
+/**
+ * Frees memory associated with a amqp_envelope_t allocated in
+ * amqp_consume_message()
+ *
+ * \param [in] envelope
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_destroy_envelope(amqp_envelope_t *envelope);
+
+/**
+ * Parameters used to connect to the RabbitMQ broker
+ *
+ * \since v0.2
+ */
+struct amqp_connection_info {
+  char *user; /**< the username to authenticate with the broker, default on most
+                 broker is 'guest' */
+  char *password; /**< the password to authenticate with the broker, default on
+                     most brokers is 'guest' */
+  char *host;     /**< the hostname of the broker */
+  char *vhost; /**< the virtual host on the broker to connect to, a good default
+                  is "/" */
+  int port;    /**< the port that the broker is listening on, default on most
+                  brokers is 5672 */
+  amqp_boolean_t ssl;
+};
+
+/**
+ * Initialze an amqp_connection_info to default values
+ *
+ * The default values are:
+ * - user: "guest"
+ * - password: "guest"
+ * - host: "localhost"
+ * - vhost: "/"
+ * - port: 5672
+ *
+ * \param [out] parsed the connection info to set defaults on
+ *
+ * \since v0.2
+ */
+AMQP_EXPORT
+void AMQP_CALL
+    amqp_default_connection_info(struct amqp_connection_info *parsed);
+
+/**
+ * Parse a connection URL
+ *
+ * An amqp connection url takes the form:
+ *
+ * amqp://[$USERNAME[:$PASSWORD]\@]$HOST[:$PORT]/[$VHOST]
+ *
+ * Examples:
+ *  amqp://guest:guest\@localhost:5672//
+ *  amqp://guest:guest\@localhost/myvhost
+ *
+ *  Any missing parts of the URL will be set to the defaults specified in
+ *  amqp_default_connection_info. For amqps: URLs the default port will be set
+ *  to 5671 instead of 5672 for non-SSL URLs.
+ *
+ * \note This function modifies url parameter.
+ *
+ * \param [in] url URI to parse, note that this parameter is modified by the
+ *             function.
+ * \param [out] parsed the connection info gleaned from the URI. The char*
+ *              members will point to parts of the url input parameter.
+ *              Memory management will depend on how the url is allocated.
+ * \returns AMQP_STATUS_OK on success, AMQP_STATUS_BAD_URL on failure
+ *
+ * \since v0.2
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_parse_url(char *url, struct amqp_connection_info *parsed);
+
+/* socket API */
+
+/**
+ * Open a socket connection.
+ *
+ * This function opens a socket connection returned from amqp_tcp_socket_new()
+ * or amqp_ssl_socket_new(). This function should be called after setting
+ * socket options and prior to assigning the socket to an AMQP connection with
+ * amqp_set_socket().
+ *
+ * \param [in,out] self A socket object.
+ * \param [in] host Connect to this host.
+ * \param [in] port Connect on this remote port.
+ *
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum on failure
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_socket_open(amqp_socket_t *self, const char *host, int port);
+
+/**
+ * Open a socket connection.
+ *
+ * This function opens a socket connection returned from amqp_tcp_socket_new()
+ * or amqp_ssl_socket_new(). This function should be called after setting
+ * socket options and prior to assigning the socket to an AMQP connection with
+ * amqp_set_socket().
+ *
+ * \param [in,out] self A socket object.
+ * \param [in] host Connect to this host.
+ * \param [in] port Connect on this remote port.
+ * \param [in] timeout Max allowed time to spent on opening. If NULL - run in
+ *             blocking mode
+ *
+ * \return AMQP_STATUS_OK on success, an amqp_status_enum on failure.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_socket_open_noblock(amqp_socket_t *self, const char *host,
+                                       int port, const struct timeval *timeout);
+
+/**
+ * Get the socket descriptor in use by a socket object.
+ *
+ * Retrieve the underlying socket descriptor. This function can be used to
+ * perform low-level socket operations that aren't supported by the socket
+ * interface. Use with caution!
+ *
+ * \param [in,out] self A socket object.
+ *
+ * \return The underlying socket descriptor, or -1 if there is no socket
+ *  descriptor associated with
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_socket_get_sockfd(amqp_socket_t *self);
+
+/**
+ * Get the socket object associated with a amqp_connection_state_t
+ *
+ * \param [in] state the connection object to get the socket from
+ * \return a pointer to the socket object, or NULL if one has not been assigned
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_socket_t *AMQP_CALL amqp_get_socket(amqp_connection_state_t state);
+
+/**
+ * Get the broker properties table
+ *
+ * \param [in] state the connection object
+ * \return a pointer to an amqp_table_t containing the properties advertised
+ *  by the broker on connection. The connection object owns the table, it
+ *  should not be modified.
+ *
+ * \since v0.5.0
+ */
+AMQP_EXPORT
+amqp_table_t *AMQP_CALL
+    amqp_get_server_properties(amqp_connection_state_t state);
+
+/**
+ * Get the client properties table
+ *
+ * Get the properties that were passed to the broker on connection.
+ *
+ * \param [in] state the connection object
+ * \return a pointer to an amqp_table_t containing the properties advertised
+ *  by the client on connection. The connection object owns the table, it
+ *  should not be modified.
+ *
+ * \since v0.7.0
+ */
+AMQP_EXPORT
+amqp_table_t *AMQP_CALL
+    amqp_get_client_properties(amqp_connection_state_t state);
+
+/**
+ * Get the login handshake timeout.
+ *
+ * amqp_login and amqp_login_with_properties perform the login handshake with
+ * the broker.  This function returns the timeout associated with completing
+ * this operation from the client side. This value can be set by using the
+ * amqp_set_handshake_timeout.
+ *
+ * Note that the RabbitMQ broker has configurable timeout for completing the
+ * login handshake, the default is 10 seconds.  rabbitmq-c has a default of 12
+ * seconds.
+ *
+ * \param [in] state the connection object
+ * \return a struct timeval representing the current login timeout for the state
+ *  object. A NULL value represents an infinite timeout. The memory returned is
+ *  owned by the connection object.
+ *
+ * \since v0.9.0
+ */
+AMQP_EXPORT
+struct timeval *AMQP_CALL
+    amqp_get_handshake_timeout(amqp_connection_state_t state);
+
+/**
+ * Set the login handshake timeout.
+ *
+ * amqp_login and amqp_login_with_properties perform the login handshake with
+ * the broker. This function sets the timeout associated with completing this
+ * operation from the client side.
+ *
+ * The timeout must be set before amqp_login or amqp_login_with_properties is
+ * called to change from the default timeout.
+ *
+ * Note that the RabbitMQ broker has a configurable timeout for completing the
+ * login handshake, the default is 10 seconds. rabbitmq-c has a default of 12
+ * seconds.
+ *
+ * \param [in] state the connection object
+ * \param [in] timeout a struct timeval* representing new login timeout for the
+ *  state object. NULL represents an infinite timeout. The value of timeout is
+ *  copied internally, the caller is responsible for ownership of the passed in
+ *  pointer, it does not need to remain valid after this function is called.
+ * \return AMQP_STATUS_OK on success.
+ *
+ * \since v0.9.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_set_handshake_timeout(amqp_connection_state_t state,
+                                         const struct timeval *timeout);
+
+/**
+ * Get the RPC timeout
+ *
+ * Gets the timeout for any RPC-style AMQP command (e.g., amqp_queue_declare).
+ * This timeout may be changed at any time by calling \amqp_set_rpc_timeout
+ * function with a new timeout. The timeout applies individually to each RPC
+ * that is made.
+ *
+ * The default value is NULL, or an infinite timeout.
+ *
+ * When an RPC times out, the function will return an error AMQP_STATUS_TIMEOUT,
+ * and the connection will be closed.
+ *
+ *\warning RPC-timeouts are an advanced feature intended to be used to detect
+ * dead connections quickly when the rabbitmq-c implementation of heartbeats
+ * does not work. Do not use RPC timeouts unless you understand the implications
+ * of doing so.
+ *
+ * \param [in] state the connection object
+ * \return a struct timeval representing the current RPC timeout for the state
+ * object. A NULL value represents an infinite timeout. The memory returned is
+ * owned by the connection object.
+ *
+ * \since v0.9.0
+ */
+AMQP_EXPORT
+struct timeval *AMQP_CALL amqp_get_rpc_timeout(amqp_connection_state_t state);
+
+/**
+ * Set the RPC timeout
+ *
+ * Sets the timeout for any RPC-style AMQP command (e.g., amqp_queue_declare).
+ * This timeout may be changed at any time by calling this function with a new
+ * timeout. The timeout applies individually to each RPC that is made.
+ *
+ * The default value is NULL, or an infinite timeout.
+ *
+ * When an RPC times out, the function will return an error AMQP_STATUS_TIMEOUT,
+ * and the connection will be closed.
+ *
+ *\warning RPC-timeouts are an advanced feature intended to be used to detect
+ * dead connections quickly when the rabbitmq-c implementation of heartbeats
+ * does not work. Do not use RPC timeouts unless you understand the implications
+ * of doing so.
+ *
+ * \param [in] state the connection object
+ * \param [in] timeout a struct timeval* representing new RPC timeout for the
+ * state object. NULL represents an infinite timeout. The value of timeout is
+ * copied internally, the caller is responsible for ownership of the passed
+ * pointer, it does not need to remain valid after this function is called.
+ * \return AMQP_STATUS_SUCCESS on success.
+ *
+ * \since v0.9.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_set_rpc_timeout(amqp_connection_state_t state,
+                                   const struct timeval *timeout);
+
+AMQP_END_DECLS
+
+#endif /* RABBITMQ_C_RABBITMQ_C_H */

+ 42 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/export.h

@@ -0,0 +1,42 @@
+
+#ifndef RABBITMQ_C_EXPORT_H
+#define RABBITMQ_C_EXPORT_H
+
+#ifdef AMQP_STATIC
+#  define AMQP_EXPORT
+#  define AMQP_NO_EXPORT
+#else
+#  ifndef AMQP_EXPORT
+#    ifdef rabbitmq_EXPORTS
+        /* We are building this library */
+#      define AMQP_EXPORT __declspec(dllexport)
+#    else
+        /* We are using this library */
+#      define AMQP_EXPORT __declspec(dllimport)
+#    endif
+#  endif
+
+#  ifndef AMQP_NO_EXPORT
+#    define AMQP_NO_EXPORT 
+#  endif
+#endif
+
+#ifndef AMQP_DEPRECATED
+#  define AMQP_DEPRECATED __declspec(deprecated)
+#endif
+
+#ifndef AMQP_DEPRECATED_EXPORT
+#  define AMQP_DEPRECATED_EXPORT AMQP_EXPORT AMQP_DEPRECATED
+#endif
+
+#ifndef AMQP_DEPRECATED_NO_EXPORT
+#  define AMQP_DEPRECATED_NO_EXPORT AMQP_NO_EXPORT AMQP_DEPRECATED
+#endif
+
+#if 0 /* DEFINE_NO_DEPRECATED */
+#  ifndef AMQP_NO_DEPRECATED
+#    define AMQP_NO_DEPRECATED
+#  endif
+#endif
+
+#endif /* RABBITMQ_C_EXPORT_H */

+ 1150 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/framing.h

@@ -0,0 +1,1150 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/* Generated code. Do not edit. Edit and re-run codegen.py instead. */
+
+/** @file rabbitmq-c/framing.h */
+#ifndef RABBITMQ_C_FRAMING_H
+#define RABBITMQ_C_FRAMING_H
+
+#include <rabbitmq-c/amqp.h>
+#include <rabbitmq-c/export.h>
+
+AMQP_BEGIN_DECLS
+
+#define AMQP_PROTOCOL_VERSION_MAJOR 0    /**< AMQP protocol version major */
+#define AMQP_PROTOCOL_VERSION_MINOR 9    /**< AMQP protocol version minor */
+#define AMQP_PROTOCOL_VERSION_REVISION 1 /**< AMQP protocol version revision \
+                                          */
+#define AMQP_PROTOCOL_PORT 5672          /**< Default AMQP Port */
+#define AMQP_FRAME_METHOD 1              /**< Constant: FRAME-METHOD */
+#define AMQP_FRAME_HEADER 2              /**< Constant: FRAME-HEADER */
+#define AMQP_FRAME_BODY 3                /**< Constant: FRAME-BODY */
+#define AMQP_FRAME_HEARTBEAT 8           /**< Constant: FRAME-HEARTBEAT */
+#define AMQP_FRAME_MIN_SIZE 4096         /**< Constant: FRAME-MIN-SIZE */
+#define AMQP_FRAME_END 206               /**< Constant: FRAME-END */
+#define AMQP_REPLY_SUCCESS 200           /**< Constant: REPLY-SUCCESS */
+#define AMQP_CONTENT_TOO_LARGE 311       /**< Constant: CONTENT-TOO-LARGE */
+#define AMQP_NO_ROUTE 312                /**< Constant: NO-ROUTE */
+#define AMQP_NO_CONSUMERS 313            /**< Constant: NO-CONSUMERS */
+#define AMQP_ACCESS_REFUSED 403          /**< Constant: ACCESS-REFUSED */
+#define AMQP_NOT_FOUND 404               /**< Constant: NOT-FOUND */
+#define AMQP_RESOURCE_LOCKED 405         /**< Constant: RESOURCE-LOCKED */
+#define AMQP_PRECONDITION_FAILED 406     /**< Constant: PRECONDITION-FAILED */
+#define AMQP_CONNECTION_FORCED 320       /**< Constant: CONNECTION-FORCED */
+#define AMQP_INVALID_PATH 402            /**< Constant: INVALID-PATH */
+#define AMQP_FRAME_ERROR 501             /**< Constant: FRAME-ERROR */
+#define AMQP_SYNTAX_ERROR 502            /**< Constant: SYNTAX-ERROR */
+#define AMQP_COMMAND_INVALID 503         /**< Constant: COMMAND-INVALID */
+#define AMQP_CHANNEL_ERROR 504           /**< Constant: CHANNEL-ERROR */
+#define AMQP_UNEXPECTED_FRAME 505        /**< Constant: UNEXPECTED-FRAME */
+#define AMQP_RESOURCE_ERROR 506          /**< Constant: RESOURCE-ERROR */
+#define AMQP_NOT_ALLOWED 530             /**< Constant: NOT-ALLOWED */
+#define AMQP_NOT_IMPLEMENTED 540         /**< Constant: NOT-IMPLEMENTED */
+#define AMQP_INTERNAL_ERROR 541          /**< Constant: INTERNAL-ERROR */
+
+/* Function prototypes. */
+
+/**
+ * Get constant name string from constant
+ *
+ * @param [in] constantNumber constant to get the name of
+ * @returns string describing the constant. String is managed by
+ *           the library and should not be free()'d by the program
+ */
+AMQP_EXPORT
+char const *AMQP_CALL amqp_constant_name(int constantNumber);
+
+/**
+ * Checks to see if a constant is a hard error
+ *
+ * A hard error occurs when something severe enough
+ * happens that the connection must be closed.
+ *
+ * @param [in] constantNumber the error constant
+ * @returns true if its a hard error, false otherwise
+ */
+AMQP_EXPORT
+amqp_boolean_t AMQP_CALL amqp_constant_is_hard_error(int constantNumber);
+
+/**
+ * Get method name string from method number
+ *
+ * @param [in] methodNumber the method number
+ * @returns method name string. String is managed by the library
+ *           and should not be freed()'d by the program
+ */
+AMQP_EXPORT
+char const *AMQP_CALL amqp_method_name(amqp_method_number_t methodNumber);
+
+/**
+ * Check whether a method has content
+ *
+ * A method that has content will receive the method frame
+ * a properties frame, then 1 to N body frames
+ *
+ * @param [in] methodNumber the method number
+ * @returns true if method has content, false otherwise
+ */
+AMQP_EXPORT
+amqp_boolean_t AMQP_CALL
+    amqp_method_has_content(amqp_method_number_t methodNumber);
+
+/**
+ * Decodes a method from AMQP wireformat
+ *
+ * @param [in] methodNumber the method number for the decoded parameter
+ * @param [in] pool the memory pool to allocate the decoded method from
+ * @param [in] encoded the encoded byte string buffer
+ * @param [out] decoded pointer to the decoded method struct
+ * @returns 0 on success, an error code otherwise
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_decode_method(amqp_method_number_t methodNumber,
+                                 amqp_pool_t *pool, amqp_bytes_t encoded,
+                                 void **decoded);
+
+/**
+ * Decodes a header frame properties structure from AMQP wireformat
+ *
+ * @param [in] class_id the class id for the decoded parameter
+ * @param [in] pool the memory pool to allocate the decoded properties from
+ * @param [in] encoded the encoded byte string buffer
+ * @param [out] decoded pointer to the decoded properties struct
+ * @returns 0 on success, an error code otherwise
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_decode_properties(uint16_t class_id, amqp_pool_t *pool,
+                                     amqp_bytes_t encoded, void **decoded);
+
+/**
+ * Encodes a method structure in AMQP wireformat
+ *
+ * @param [in] methodNumber the method number for the decoded parameter
+ * @param [in] decoded the method structure (e.g., amqp_connection_start_t)
+ * @param [in] encoded an allocated byte buffer for the encoded method
+ *              structure to be written to. If the buffer isn't large enough
+ *              to hold the encoded method, an error code will be returned.
+ * @returns 0 on success, an error code otherwise.
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_encode_method(amqp_method_number_t methodNumber,
+                                 void *decoded, amqp_bytes_t encoded);
+
+/**
+ * Encodes a properties structure in AMQP wireformat
+ *
+ * @param [in] class_id the class id for the decoded parameter
+ * @param [in] decoded the properties structure (e.g., amqp_basic_properties_t)
+ * @param [in] encoded an allocated byte buffer for the encoded properties to
+ * written to. If the buffer isn't large enough to hold the encoded method, an
+ *              an error code will be returned
+ * @returns 0 on success, an error code otherwise.
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_encode_properties(uint16_t class_id, void *decoded,
+                                     amqp_bytes_t encoded);
+
+/* Method field records. */
+
+#define AMQP_CONNECTION_START_METHOD                                           \
+  ((amqp_method_number_t)0x000A000A) /**< connection.start method id @internal \
+                                        10, 10; 655370 */
+/** connection.start method fields */
+typedef struct amqp_connection_start_t_ {
+  uint8_t version_major;          /**< version-major */
+  uint8_t version_minor;          /**< version-minor */
+  amqp_table_t server_properties; /**< server-properties */
+  amqp_bytes_t mechanisms;        /**< mechanisms */
+  amqp_bytes_t locales;           /**< locales */
+} amqp_connection_start_t;
+
+#define AMQP_CONNECTION_START_OK_METHOD                                 \
+  ((amqp_method_number_t)0x000A000B) /**< connection.start-ok method id \
+                                        @internal 10, 11; 655371 */
+/** connection.start-ok method fields */
+typedef struct amqp_connection_start_ok_t_ {
+  amqp_table_t client_properties; /**< client-properties */
+  amqp_bytes_t mechanism;         /**< mechanism */
+  amqp_bytes_t response;          /**< response */
+  amqp_bytes_t locale;            /**< locale */
+} amqp_connection_start_ok_t;
+
+#define AMQP_CONNECTION_SECURE_METHOD                                 \
+  ((amqp_method_number_t)0x000A0014) /**< connection.secure method id \
+                                        @internal 10, 20; 655380 */
+/** connection.secure method fields */
+typedef struct amqp_connection_secure_t_ {
+  amqp_bytes_t challenge; /**< challenge */
+} amqp_connection_secure_t;
+
+#define AMQP_CONNECTION_SECURE_OK_METHOD                                 \
+  ((amqp_method_number_t)0x000A0015) /**< connection.secure-ok method id \
+                                        @internal 10, 21; 655381 */
+/** connection.secure-ok method fields */
+typedef struct amqp_connection_secure_ok_t_ {
+  amqp_bytes_t response; /**< response */
+} amqp_connection_secure_ok_t;
+
+#define AMQP_CONNECTION_TUNE_METHOD                                           \
+  ((amqp_method_number_t)0x000A001E) /**< connection.tune method id @internal \
+                                        10, 30; 655390 */
+/** connection.tune method fields */
+typedef struct amqp_connection_tune_t_ {
+  uint16_t channel_max; /**< channel-max */
+  uint32_t frame_max;   /**< frame-max */
+  uint16_t heartbeat;   /**< heartbeat */
+} amqp_connection_tune_t;
+
+#define AMQP_CONNECTION_TUNE_OK_METHOD                                 \
+  ((amqp_method_number_t)0x000A001F) /**< connection.tune-ok method id \
+                                        @internal 10, 31; 655391 */
+/** connection.tune-ok method fields */
+typedef struct amqp_connection_tune_ok_t_ {
+  uint16_t channel_max; /**< channel-max */
+  uint32_t frame_max;   /**< frame-max */
+  uint16_t heartbeat;   /**< heartbeat */
+} amqp_connection_tune_ok_t;
+
+#define AMQP_CONNECTION_OPEN_METHOD                                           \
+  ((amqp_method_number_t)0x000A0028) /**< connection.open method id @internal \
+                                        10, 40; 655400 */
+/** connection.open method fields */
+typedef struct amqp_connection_open_t_ {
+  amqp_bytes_t virtual_host; /**< virtual-host */
+  amqp_bytes_t capabilities; /**< capabilities */
+  amqp_boolean_t insist;     /**< insist */
+} amqp_connection_open_t;
+
+#define AMQP_CONNECTION_OPEN_OK_METHOD                                 \
+  ((amqp_method_number_t)0x000A0029) /**< connection.open-ok method id \
+                                        @internal 10, 41; 655401 */
+/** connection.open-ok method fields */
+typedef struct amqp_connection_open_ok_t_ {
+  amqp_bytes_t known_hosts; /**< known-hosts */
+} amqp_connection_open_ok_t;
+
+#define AMQP_CONNECTION_CLOSE_METHOD                                           \
+  ((amqp_method_number_t)0x000A0032) /**< connection.close method id @internal \
+                                        10, 50; 655410 */
+/** connection.close method fields */
+typedef struct amqp_connection_close_t_ {
+  uint16_t reply_code;     /**< reply-code */
+  amqp_bytes_t reply_text; /**< reply-text */
+  uint16_t class_id;       /**< class-id */
+  uint16_t method_id;      /**< method-id */
+} amqp_connection_close_t;
+
+#define AMQP_CONNECTION_CLOSE_OK_METHOD                                 \
+  ((amqp_method_number_t)0x000A0033) /**< connection.close-ok method id \
+                                        @internal 10, 51; 655411 */
+/** connection.close-ok method fields */
+typedef struct amqp_connection_close_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_connection_close_ok_t;
+
+#define AMQP_CONNECTION_BLOCKED_METHOD                                 \
+  ((amqp_method_number_t)0x000A003C) /**< connection.blocked method id \
+                                        @internal 10, 60; 655420 */
+/** connection.blocked method fields */
+typedef struct amqp_connection_blocked_t_ {
+  amqp_bytes_t reason; /**< reason */
+} amqp_connection_blocked_t;
+
+#define AMQP_CONNECTION_UNBLOCKED_METHOD                                 \
+  ((amqp_method_number_t)0x000A003D) /**< connection.unblocked method id \
+                                        @internal 10, 61; 655421 */
+/** connection.unblocked method fields */
+typedef struct amqp_connection_unblocked_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_connection_unblocked_t;
+
+#define AMQP_CONNECTION_UPDATE_SECRET_METHOD                                 \
+  ((amqp_method_number_t)0x000A0046) /**< connection.update-secret method id \
+                                        @internal 10, 70; 655430 */
+/** connection.update-secret method fields */
+typedef struct amqp_connection_update_secret_t_ {
+  amqp_bytes_t new_secret; /**< new-secret */
+  amqp_bytes_t reason;     /**< reason */
+} amqp_connection_update_secret_t;
+
+#define AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD                              \
+  ((amqp_method_number_t)0x000A0047) /**< connection.update-secret-ok method \
+                                        id @internal 10, 71; 655431 */
+/** connection.update-secret-ok method fields */
+typedef struct amqp_connection_update_secret_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_connection_update_secret_ok_t;
+
+#define AMQP_CHANNEL_OPEN_METHOD                                               \
+  ((amqp_method_number_t)0x0014000A) /**< channel.open method id @internal 20, \
+                                        10; 1310730 */
+/** channel.open method fields */
+typedef struct amqp_channel_open_t_ {
+  amqp_bytes_t out_of_band; /**< out-of-band */
+} amqp_channel_open_t;
+
+#define AMQP_CHANNEL_OPEN_OK_METHOD                                           \
+  ((amqp_method_number_t)0x0014000B) /**< channel.open-ok method id @internal \
+                                        20, 11; 1310731 */
+/** channel.open-ok method fields */
+typedef struct amqp_channel_open_ok_t_ {
+  amqp_bytes_t channel_id; /**< channel-id */
+} amqp_channel_open_ok_t;
+
+#define AMQP_CHANNEL_FLOW_METHOD                                               \
+  ((amqp_method_number_t)0x00140014) /**< channel.flow method id @internal 20, \
+                                        20; 1310740 */
+/** channel.flow method fields */
+typedef struct amqp_channel_flow_t_ {
+  amqp_boolean_t active; /**< active */
+} amqp_channel_flow_t;
+
+#define AMQP_CHANNEL_FLOW_OK_METHOD                                           \
+  ((amqp_method_number_t)0x00140015) /**< channel.flow-ok method id @internal \
+                                        20, 21; 1310741 */
+/** channel.flow-ok method fields */
+typedef struct amqp_channel_flow_ok_t_ {
+  amqp_boolean_t active; /**< active */
+} amqp_channel_flow_ok_t;
+
+#define AMQP_CHANNEL_CLOSE_METHOD                                           \
+  ((amqp_method_number_t)0x00140028) /**< channel.close method id @internal \
+                                        20, 40; 1310760 */
+/** channel.close method fields */
+typedef struct amqp_channel_close_t_ {
+  uint16_t reply_code;     /**< reply-code */
+  amqp_bytes_t reply_text; /**< reply-text */
+  uint16_t class_id;       /**< class-id */
+  uint16_t method_id;      /**< method-id */
+} amqp_channel_close_t;
+
+#define AMQP_CHANNEL_CLOSE_OK_METHOD                                           \
+  ((amqp_method_number_t)0x00140029) /**< channel.close-ok method id @internal \
+                                        20, 41; 1310761 */
+/** channel.close-ok method fields */
+typedef struct amqp_channel_close_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_channel_close_ok_t;
+
+#define AMQP_ACCESS_REQUEST_METHOD                                           \
+  ((amqp_method_number_t)0x001E000A) /**< access.request method id @internal \
+                                        30, 10; 1966090 */
+/** access.request method fields */
+typedef struct amqp_access_request_t_ {
+  amqp_bytes_t realm;       /**< realm */
+  amqp_boolean_t exclusive; /**< exclusive */
+  amqp_boolean_t passive;   /**< passive */
+  amqp_boolean_t active;    /**< active */
+  amqp_boolean_t write;     /**< write */
+  amqp_boolean_t read;      /**< read */
+} amqp_access_request_t;
+
+#define AMQP_ACCESS_REQUEST_OK_METHOD                                 \
+  ((amqp_method_number_t)0x001E000B) /**< access.request-ok method id \
+                                        @internal 30, 11; 1966091 */
+/** access.request-ok method fields */
+typedef struct amqp_access_request_ok_t_ {
+  uint16_t ticket; /**< ticket */
+} amqp_access_request_ok_t;
+
+#define AMQP_EXCHANGE_DECLARE_METHOD                                           \
+  ((amqp_method_number_t)0x0028000A) /**< exchange.declare method id @internal \
+                                        40, 10; 2621450 */
+/** exchange.declare method fields */
+typedef struct amqp_exchange_declare_t_ {
+  uint16_t ticket;            /**< ticket */
+  amqp_bytes_t exchange;      /**< exchange */
+  amqp_bytes_t type;          /**< type */
+  amqp_boolean_t passive;     /**< passive */
+  amqp_boolean_t durable;     /**< durable */
+  amqp_boolean_t auto_delete; /**< auto-delete */
+  amqp_boolean_t internal;    /**< internal */
+  amqp_boolean_t nowait;      /**< nowait */
+  amqp_table_t arguments;     /**< arguments */
+} amqp_exchange_declare_t;
+
+#define AMQP_EXCHANGE_DECLARE_OK_METHOD                                 \
+  ((amqp_method_number_t)0x0028000B) /**< exchange.declare-ok method id \
+                                        @internal 40, 11; 2621451 */
+/** exchange.declare-ok method fields */
+typedef struct amqp_exchange_declare_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_exchange_declare_ok_t;
+
+#define AMQP_EXCHANGE_DELETE_METHOD                                           \
+  ((amqp_method_number_t)0x00280014) /**< exchange.delete method id @internal \
+                                        40, 20; 2621460 */
+/** exchange.delete method fields */
+typedef struct amqp_exchange_delete_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t exchange;    /**< exchange */
+  amqp_boolean_t if_unused; /**< if-unused */
+  amqp_boolean_t nowait;    /**< nowait */
+} amqp_exchange_delete_t;
+
+#define AMQP_EXCHANGE_DELETE_OK_METHOD                                 \
+  ((amqp_method_number_t)0x00280015) /**< exchange.delete-ok method id \
+                                        @internal 40, 21; 2621461 */
+/** exchange.delete-ok method fields */
+typedef struct amqp_exchange_delete_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_exchange_delete_ok_t;
+
+#define AMQP_EXCHANGE_BIND_METHOD                                           \
+  ((amqp_method_number_t)0x0028001E) /**< exchange.bind method id @internal \
+                                        40, 30; 2621470 */
+/** exchange.bind method fields */
+typedef struct amqp_exchange_bind_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t destination; /**< destination */
+  amqp_bytes_t source;      /**< source */
+  amqp_bytes_t routing_key; /**< routing-key */
+  amqp_boolean_t nowait;    /**< nowait */
+  amqp_table_t arguments;   /**< arguments */
+} amqp_exchange_bind_t;
+
+#define AMQP_EXCHANGE_BIND_OK_METHOD                                           \
+  ((amqp_method_number_t)0x0028001F) /**< exchange.bind-ok method id @internal \
+                                        40, 31; 2621471 */
+/** exchange.bind-ok method fields */
+typedef struct amqp_exchange_bind_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_exchange_bind_ok_t;
+
+#define AMQP_EXCHANGE_UNBIND_METHOD                                           \
+  ((amqp_method_number_t)0x00280028) /**< exchange.unbind method id @internal \
+                                        40, 40; 2621480 */
+/** exchange.unbind method fields */
+typedef struct amqp_exchange_unbind_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t destination; /**< destination */
+  amqp_bytes_t source;      /**< source */
+  amqp_bytes_t routing_key; /**< routing-key */
+  amqp_boolean_t nowait;    /**< nowait */
+  amqp_table_t arguments;   /**< arguments */
+} amqp_exchange_unbind_t;
+
+#define AMQP_EXCHANGE_UNBIND_OK_METHOD                                 \
+  ((amqp_method_number_t)0x00280033) /**< exchange.unbind-ok method id \
+                                        @internal 40, 51; 2621491 */
+/** exchange.unbind-ok method fields */
+typedef struct amqp_exchange_unbind_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_exchange_unbind_ok_t;
+
+#define AMQP_QUEUE_DECLARE_METHOD                                           \
+  ((amqp_method_number_t)0x0032000A) /**< queue.declare method id @internal \
+                                        50, 10; 3276810 */
+/** queue.declare method fields */
+typedef struct amqp_queue_declare_t_ {
+  uint16_t ticket;            /**< ticket */
+  amqp_bytes_t queue;         /**< queue */
+  amqp_boolean_t passive;     /**< passive */
+  amqp_boolean_t durable;     /**< durable */
+  amqp_boolean_t exclusive;   /**< exclusive */
+  amqp_boolean_t auto_delete; /**< auto-delete */
+  amqp_boolean_t nowait;      /**< nowait */
+  amqp_table_t arguments;     /**< arguments */
+} amqp_queue_declare_t;
+
+#define AMQP_QUEUE_DECLARE_OK_METHOD                                           \
+  ((amqp_method_number_t)0x0032000B) /**< queue.declare-ok method id @internal \
+                                        50, 11; 3276811 */
+/** queue.declare-ok method fields */
+typedef struct amqp_queue_declare_ok_t_ {
+  amqp_bytes_t queue;      /**< queue */
+  uint32_t message_count;  /**< message-count */
+  uint32_t consumer_count; /**< consumer-count */
+} amqp_queue_declare_ok_t;
+
+#define AMQP_QUEUE_BIND_METHOD                                               \
+  ((amqp_method_number_t)0x00320014) /**< queue.bind method id @internal 50, \
+                                        20; 3276820 */
+/** queue.bind method fields */
+typedef struct amqp_queue_bind_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t queue;       /**< queue */
+  amqp_bytes_t exchange;    /**< exchange */
+  amqp_bytes_t routing_key; /**< routing-key */
+  amqp_boolean_t nowait;    /**< nowait */
+  amqp_table_t arguments;   /**< arguments */
+} amqp_queue_bind_t;
+
+#define AMQP_QUEUE_BIND_OK_METHOD                                           \
+  ((amqp_method_number_t)0x00320015) /**< queue.bind-ok method id @internal \
+                                        50, 21; 3276821 */
+/** queue.bind-ok method fields */
+typedef struct amqp_queue_bind_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_queue_bind_ok_t;
+
+#define AMQP_QUEUE_PURGE_METHOD                                               \
+  ((amqp_method_number_t)0x0032001E) /**< queue.purge method id @internal 50, \
+                                        30; 3276830 */
+/** queue.purge method fields */
+typedef struct amqp_queue_purge_t_ {
+  uint16_t ticket;       /**< ticket */
+  amqp_bytes_t queue;    /**< queue */
+  amqp_boolean_t nowait; /**< nowait */
+} amqp_queue_purge_t;
+
+#define AMQP_QUEUE_PURGE_OK_METHOD                                           \
+  ((amqp_method_number_t)0x0032001F) /**< queue.purge-ok method id @internal \
+                                        50, 31; 3276831 */
+/** queue.purge-ok method fields */
+typedef struct amqp_queue_purge_ok_t_ {
+  uint32_t message_count; /**< message-count */
+} amqp_queue_purge_ok_t;
+
+#define AMQP_QUEUE_DELETE_METHOD                                               \
+  ((amqp_method_number_t)0x00320028) /**< queue.delete method id @internal 50, \
+                                        40; 3276840 */
+/** queue.delete method fields */
+typedef struct amqp_queue_delete_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t queue;       /**< queue */
+  amqp_boolean_t if_unused; /**< if-unused */
+  amqp_boolean_t if_empty;  /**< if-empty */
+  amqp_boolean_t nowait;    /**< nowait */
+} amqp_queue_delete_t;
+
+#define AMQP_QUEUE_DELETE_OK_METHOD                                           \
+  ((amqp_method_number_t)0x00320029) /**< queue.delete-ok method id @internal \
+                                        50, 41; 3276841 */
+/** queue.delete-ok method fields */
+typedef struct amqp_queue_delete_ok_t_ {
+  uint32_t message_count; /**< message-count */
+} amqp_queue_delete_ok_t;
+
+#define AMQP_QUEUE_UNBIND_METHOD                                               \
+  ((amqp_method_number_t)0x00320032) /**< queue.unbind method id @internal 50, \
+                                        50; 3276850 */
+/** queue.unbind method fields */
+typedef struct amqp_queue_unbind_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t queue;       /**< queue */
+  amqp_bytes_t exchange;    /**< exchange */
+  amqp_bytes_t routing_key; /**< routing-key */
+  amqp_table_t arguments;   /**< arguments */
+} amqp_queue_unbind_t;
+
+#define AMQP_QUEUE_UNBIND_OK_METHOD                                           \
+  ((amqp_method_number_t)0x00320033) /**< queue.unbind-ok method id @internal \
+                                        50, 51; 3276851 */
+/** queue.unbind-ok method fields */
+typedef struct amqp_queue_unbind_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_queue_unbind_ok_t;
+
+#define AMQP_BASIC_QOS_METHOD                                               \
+  ((amqp_method_number_t)0x003C000A) /**< basic.qos method id @internal 60, \
+                                        10; 3932170 */
+/** basic.qos method fields */
+typedef struct amqp_basic_qos_t_ {
+  uint32_t prefetch_size;  /**< prefetch-size */
+  uint16_t prefetch_count; /**< prefetch-count */
+  amqp_boolean_t global;   /**< global */
+} amqp_basic_qos_t;
+
+#define AMQP_BASIC_QOS_OK_METHOD                                               \
+  ((amqp_method_number_t)0x003C000B) /**< basic.qos-ok method id @internal 60, \
+                                        11; 3932171 */
+/** basic.qos-ok method fields */
+typedef struct amqp_basic_qos_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_basic_qos_ok_t;
+
+#define AMQP_BASIC_CONSUME_METHOD                                           \
+  ((amqp_method_number_t)0x003C0014) /**< basic.consume method id @internal \
+                                        60, 20; 3932180 */
+/** basic.consume method fields */
+typedef struct amqp_basic_consume_t_ {
+  uint16_t ticket;           /**< ticket */
+  amqp_bytes_t queue;        /**< queue */
+  amqp_bytes_t consumer_tag; /**< consumer-tag */
+  amqp_boolean_t no_local;   /**< no-local */
+  amqp_boolean_t no_ack;     /**< no-ack */
+  amqp_boolean_t exclusive;  /**< exclusive */
+  amqp_boolean_t nowait;     /**< nowait */
+  amqp_table_t arguments;    /**< arguments */
+} amqp_basic_consume_t;
+
+#define AMQP_BASIC_CONSUME_OK_METHOD                                           \
+  ((amqp_method_number_t)0x003C0015) /**< basic.consume-ok method id @internal \
+                                        60, 21; 3932181 */
+/** basic.consume-ok method fields */
+typedef struct amqp_basic_consume_ok_t_ {
+  amqp_bytes_t consumer_tag; /**< consumer-tag */
+} amqp_basic_consume_ok_t;
+
+#define AMQP_BASIC_CANCEL_METHOD                                               \
+  ((amqp_method_number_t)0x003C001E) /**< basic.cancel method id @internal 60, \
+                                        30; 3932190 */
+/** basic.cancel method fields */
+typedef struct amqp_basic_cancel_t_ {
+  amqp_bytes_t consumer_tag; /**< consumer-tag */
+  amqp_boolean_t nowait;     /**< nowait */
+} amqp_basic_cancel_t;
+
+#define AMQP_BASIC_CANCEL_OK_METHOD                                           \
+  ((amqp_method_number_t)0x003C001F) /**< basic.cancel-ok method id @internal \
+                                        60, 31; 3932191 */
+/** basic.cancel-ok method fields */
+typedef struct amqp_basic_cancel_ok_t_ {
+  amqp_bytes_t consumer_tag; /**< consumer-tag */
+} amqp_basic_cancel_ok_t;
+
+#define AMQP_BASIC_PUBLISH_METHOD                                           \
+  ((amqp_method_number_t)0x003C0028) /**< basic.publish method id @internal \
+                                        60, 40; 3932200 */
+/** basic.publish method fields */
+typedef struct amqp_basic_publish_t_ {
+  uint16_t ticket;          /**< ticket */
+  amqp_bytes_t exchange;    /**< exchange */
+  amqp_bytes_t routing_key; /**< routing-key */
+  amqp_boolean_t mandatory; /**< mandatory */
+  amqp_boolean_t immediate; /**< immediate */
+} amqp_basic_publish_t;
+
+#define AMQP_BASIC_RETURN_METHOD                                               \
+  ((amqp_method_number_t)0x003C0032) /**< basic.return method id @internal 60, \
+                                        50; 3932210 */
+/** basic.return method fields */
+typedef struct amqp_basic_return_t_ {
+  uint16_t reply_code;      /**< reply-code */
+  amqp_bytes_t reply_text;  /**< reply-text */
+  amqp_bytes_t exchange;    /**< exchange */
+  amqp_bytes_t routing_key; /**< routing-key */
+} amqp_basic_return_t;
+
+#define AMQP_BASIC_DELIVER_METHOD                                           \
+  ((amqp_method_number_t)0x003C003C) /**< basic.deliver method id @internal \
+                                        60, 60; 3932220 */
+/** basic.deliver method fields */
+typedef struct amqp_basic_deliver_t_ {
+  amqp_bytes_t consumer_tag;  /**< consumer-tag */
+  uint64_t delivery_tag;      /**< delivery-tag */
+  amqp_boolean_t redelivered; /**< redelivered */
+  amqp_bytes_t exchange;      /**< exchange */
+  amqp_bytes_t routing_key;   /**< routing-key */
+} amqp_basic_deliver_t;
+
+#define AMQP_BASIC_GET_METHOD                                               \
+  ((amqp_method_number_t)0x003C0046) /**< basic.get method id @internal 60, \
+                                        70; 3932230 */
+/** basic.get method fields */
+typedef struct amqp_basic_get_t_ {
+  uint16_t ticket;       /**< ticket */
+  amqp_bytes_t queue;    /**< queue */
+  amqp_boolean_t no_ack; /**< no-ack */
+} amqp_basic_get_t;
+
+#define AMQP_BASIC_GET_OK_METHOD                                               \
+  ((amqp_method_number_t)0x003C0047) /**< basic.get-ok method id @internal 60, \
+                                        71; 3932231 */
+/** basic.get-ok method fields */
+typedef struct amqp_basic_get_ok_t_ {
+  uint64_t delivery_tag;      /**< delivery-tag */
+  amqp_boolean_t redelivered; /**< redelivered */
+  amqp_bytes_t exchange;      /**< exchange */
+  amqp_bytes_t routing_key;   /**< routing-key */
+  uint32_t message_count;     /**< message-count */
+} amqp_basic_get_ok_t;
+
+#define AMQP_BASIC_GET_EMPTY_METHOD                                           \
+  ((amqp_method_number_t)0x003C0048) /**< basic.get-empty method id @internal \
+                                        60, 72; 3932232 */
+/** basic.get-empty method fields */
+typedef struct amqp_basic_get_empty_t_ {
+  amqp_bytes_t cluster_id; /**< cluster-id */
+} amqp_basic_get_empty_t;
+
+#define AMQP_BASIC_ACK_METHOD                                               \
+  ((amqp_method_number_t)0x003C0050) /**< basic.ack method id @internal 60, \
+                                        80; 3932240 */
+/** basic.ack method fields */
+typedef struct amqp_basic_ack_t_ {
+  uint64_t delivery_tag;   /**< delivery-tag */
+  amqp_boolean_t multiple; /**< multiple */
+} amqp_basic_ack_t;
+
+#define AMQP_BASIC_REJECT_METHOD                                               \
+  ((amqp_method_number_t)0x003C005A) /**< basic.reject method id @internal 60, \
+                                        90; 3932250 */
+/** basic.reject method fields */
+typedef struct amqp_basic_reject_t_ {
+  uint64_t delivery_tag;  /**< delivery-tag */
+  amqp_boolean_t requeue; /**< requeue */
+} amqp_basic_reject_t;
+
+#define AMQP_BASIC_RECOVER_ASYNC_METHOD                                 \
+  ((amqp_method_number_t)0x003C0064) /**< basic.recover-async method id \
+                                        @internal 60, 100; 3932260 */
+/** basic.recover-async method fields */
+typedef struct amqp_basic_recover_async_t_ {
+  amqp_boolean_t requeue; /**< requeue */
+} amqp_basic_recover_async_t;
+
+#define AMQP_BASIC_RECOVER_METHOD                                           \
+  ((amqp_method_number_t)0x003C006E) /**< basic.recover method id @internal \
+                                        60, 110; 3932270 */
+/** basic.recover method fields */
+typedef struct amqp_basic_recover_t_ {
+  amqp_boolean_t requeue; /**< requeue */
+} amqp_basic_recover_t;
+
+#define AMQP_BASIC_RECOVER_OK_METHOD                                           \
+  ((amqp_method_number_t)0x003C006F) /**< basic.recover-ok method id @internal \
+                                        60, 111; 3932271 */
+/** basic.recover-ok method fields */
+typedef struct amqp_basic_recover_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_basic_recover_ok_t;
+
+#define AMQP_BASIC_NACK_METHOD                                               \
+  ((amqp_method_number_t)0x003C0078) /**< basic.nack method id @internal 60, \
+                                        120; 3932280 */
+/** basic.nack method fields */
+typedef struct amqp_basic_nack_t_ {
+  uint64_t delivery_tag;   /**< delivery-tag */
+  amqp_boolean_t multiple; /**< multiple */
+  amqp_boolean_t requeue;  /**< requeue */
+} amqp_basic_nack_t;
+
+#define AMQP_TX_SELECT_METHOD                                               \
+  ((amqp_method_number_t)0x005A000A) /**< tx.select method id @internal 90, \
+                                        10; 5898250 */
+/** tx.select method fields */
+typedef struct amqp_tx_select_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_select_t;
+
+#define AMQP_TX_SELECT_OK_METHOD                                               \
+  ((amqp_method_number_t)0x005A000B) /**< tx.select-ok method id @internal 90, \
+                                        11; 5898251 */
+/** tx.select-ok method fields */
+typedef struct amqp_tx_select_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_select_ok_t;
+
+#define AMQP_TX_COMMIT_METHOD                                               \
+  ((amqp_method_number_t)0x005A0014) /**< tx.commit method id @internal 90, \
+                                        20; 5898260 */
+/** tx.commit method fields */
+typedef struct amqp_tx_commit_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_commit_t;
+
+#define AMQP_TX_COMMIT_OK_METHOD                                               \
+  ((amqp_method_number_t)0x005A0015) /**< tx.commit-ok method id @internal 90, \
+                                        21; 5898261 */
+/** tx.commit-ok method fields */
+typedef struct amqp_tx_commit_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_commit_ok_t;
+
+#define AMQP_TX_ROLLBACK_METHOD                                               \
+  ((amqp_method_number_t)0x005A001E) /**< tx.rollback method id @internal 90, \
+                                        30; 5898270 */
+/** tx.rollback method fields */
+typedef struct amqp_tx_rollback_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_rollback_t;
+
+#define AMQP_TX_ROLLBACK_OK_METHOD                                           \
+  ((amqp_method_number_t)0x005A001F) /**< tx.rollback-ok method id @internal \
+                                        90, 31; 5898271 */
+/** tx.rollback-ok method fields */
+typedef struct amqp_tx_rollback_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_tx_rollback_ok_t;
+
+#define AMQP_CONFIRM_SELECT_METHOD                                           \
+  ((amqp_method_number_t)0x0055000A) /**< confirm.select method id @internal \
+                                        85, 10; 5570570 */
+/** confirm.select method fields */
+typedef struct amqp_confirm_select_t_ {
+  amqp_boolean_t nowait; /**< nowait */
+} amqp_confirm_select_t;
+
+#define AMQP_CONFIRM_SELECT_OK_METHOD                                 \
+  ((amqp_method_number_t)0x0055000B) /**< confirm.select-ok method id \
+                                        @internal 85, 11; 5570571 */
+/** confirm.select-ok method fields */
+typedef struct amqp_confirm_select_ok_t_ {
+  char dummy; /**< Dummy field to avoid empty struct */
+} amqp_confirm_select_ok_t;
+
+/* Class property records. */
+#define AMQP_CONNECTION_CLASS (0x000A) /**< connection class id @internal 10 \
+                                        */
+/** connection class properties */
+typedef struct amqp_connection_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_connection_properties_t;
+
+#define AMQP_CHANNEL_CLASS (0x0014) /**< channel class id @internal 20 */
+/** channel class properties */
+typedef struct amqp_channel_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_channel_properties_t;
+
+#define AMQP_ACCESS_CLASS (0x001E) /**< access class id @internal 30 */
+/** access class properties */
+typedef struct amqp_access_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_access_properties_t;
+
+#define AMQP_EXCHANGE_CLASS (0x0028) /**< exchange class id @internal 40 */
+/** exchange class properties */
+typedef struct amqp_exchange_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_exchange_properties_t;
+
+#define AMQP_QUEUE_CLASS (0x0032) /**< queue class id @internal 50 */
+/** queue class properties */
+typedef struct amqp_queue_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_queue_properties_t;
+
+#define AMQP_BASIC_CLASS (0x003C) /**< basic class id @internal 60 */
+#define AMQP_BASIC_CONTENT_TYPE_FLAG \
+  (1 << 15) /**< basic.content-type property flag */
+#define AMQP_BASIC_CONTENT_ENCODING_FLAG \
+  (1 << 14) /**< basic.content-encoding property flag */
+#define AMQP_BASIC_HEADERS_FLAG (1 << 13) /**< basic.headers property flag */
+#define AMQP_BASIC_DELIVERY_MODE_FLAG \
+  (1 << 12) /**< basic.delivery-mode property flag */
+#define AMQP_BASIC_PRIORITY_FLAG (1 << 11) /**< basic.priority property flag \
+                                            */
+#define AMQP_BASIC_CORRELATION_ID_FLAG \
+  (1 << 10) /**< basic.correlation-id property flag */
+#define AMQP_BASIC_REPLY_TO_FLAG (1 << 9) /**< basic.reply-to property flag */
+#define AMQP_BASIC_EXPIRATION_FLAG \
+  (1 << 8) /**< basic.expiration property flag */
+#define AMQP_BASIC_MESSAGE_ID_FLAG \
+  (1 << 7) /**< basic.message-id property flag */
+#define AMQP_BASIC_TIMESTAMP_FLAG (1 << 6) /**< basic.timestamp property flag \
+                                            */
+#define AMQP_BASIC_TYPE_FLAG (1 << 5)      /**< basic.type property flag */
+#define AMQP_BASIC_USER_ID_FLAG (1 << 4)   /**< basic.user-id property flag */
+#define AMQP_BASIC_APP_ID_FLAG (1 << 3)    /**< basic.app-id property flag */
+#define AMQP_BASIC_CLUSTER_ID_FLAG \
+  (1 << 2) /**< basic.cluster-id property flag */
+/** basic class properties */
+typedef struct amqp_basic_properties_t_ {
+  amqp_flags_t _flags;           /**< bit-mask of set fields */
+  amqp_bytes_t content_type;     /**< content-type */
+  amqp_bytes_t content_encoding; /**< content-encoding */
+  amqp_table_t headers;          /**< headers */
+  uint8_t delivery_mode;         /**< delivery-mode */
+  uint8_t priority;              /**< priority */
+  amqp_bytes_t correlation_id;   /**< correlation-id */
+  amqp_bytes_t reply_to;         /**< reply-to */
+  amqp_bytes_t expiration;       /**< expiration */
+  amqp_bytes_t message_id;       /**< message-id */
+  uint64_t timestamp;            /**< timestamp */
+  amqp_bytes_t type;             /**< type */
+  amqp_bytes_t user_id;          /**< user-id */
+  amqp_bytes_t app_id;           /**< app-id */
+  amqp_bytes_t cluster_id;       /**< cluster-id */
+} amqp_basic_properties_t;
+
+#define AMQP_TX_CLASS (0x005A) /**< tx class id @internal 90 */
+/** tx class properties */
+typedef struct amqp_tx_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_tx_properties_t;
+
+#define AMQP_CONFIRM_CLASS (0x0055) /**< confirm class id @internal 85 */
+/** confirm class properties */
+typedef struct amqp_confirm_properties_t_ {
+  amqp_flags_t _flags; /**< bit-mask of set fields */
+  char dummy;          /**< Dummy field to avoid empty struct */
+} amqp_confirm_properties_t;
+
+/* API functions for methods */
+
+/**
+ * amqp_connection_update_secret
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] new_secret new_secret
+ * @param [in] reason reason
+ * @returns amqp_connection_update_secret_ok_t
+ */
+AMQP_EXPORT
+amqp_connection_update_secret_ok_t *AMQP_CALL amqp_connection_update_secret(
+    amqp_connection_state_t state, amqp_channel_t channel,
+    amqp_bytes_t new_secret, amqp_bytes_t reason);
+/**
+ * amqp_channel_open
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @returns amqp_channel_open_ok_t
+ */
+AMQP_EXPORT
+amqp_channel_open_ok_t *AMQP_CALL
+    amqp_channel_open(amqp_connection_state_t state, amqp_channel_t channel);
+/**
+ * amqp_channel_flow
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] active active
+ * @returns amqp_channel_flow_ok_t
+ */
+AMQP_EXPORT
+amqp_channel_flow_ok_t *AMQP_CALL
+    amqp_channel_flow(amqp_connection_state_t state, amqp_channel_t channel,
+                      amqp_boolean_t active);
+/**
+ * amqp_exchange_declare
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] exchange exchange
+ * @param [in] type type
+ * @param [in] passive passive
+ * @param [in] durable durable
+ * @param [in] auto_delete auto_delete
+ * @param [in] internal internal
+ * @param [in] arguments arguments
+ * @returns amqp_exchange_declare_ok_t
+ */
+AMQP_EXPORT
+amqp_exchange_declare_ok_t *AMQP_CALL amqp_exchange_declare(
+    amqp_connection_state_t state, amqp_channel_t channel,
+    amqp_bytes_t exchange, amqp_bytes_t type, amqp_boolean_t passive,
+    amqp_boolean_t durable, amqp_boolean_t auto_delete, amqp_boolean_t internal,
+    amqp_table_t arguments);
+/**
+ * amqp_exchange_delete
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] exchange exchange
+ * @param [in] if_unused if_unused
+ * @returns amqp_exchange_delete_ok_t
+ */
+AMQP_EXPORT
+amqp_exchange_delete_ok_t *AMQP_CALL
+    amqp_exchange_delete(amqp_connection_state_t state, amqp_channel_t channel,
+                         amqp_bytes_t exchange, amqp_boolean_t if_unused);
+/**
+ * amqp_exchange_bind
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] destination destination
+ * @param [in] source source
+ * @param [in] routing_key routing_key
+ * @param [in] arguments arguments
+ * @returns amqp_exchange_bind_ok_t
+ */
+AMQP_EXPORT
+amqp_exchange_bind_ok_t *AMQP_CALL
+    amqp_exchange_bind(amqp_connection_state_t state, amqp_channel_t channel,
+                       amqp_bytes_t destination, amqp_bytes_t source,
+                       amqp_bytes_t routing_key, amqp_table_t arguments);
+/**
+ * amqp_exchange_unbind
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] destination destination
+ * @param [in] source source
+ * @param [in] routing_key routing_key
+ * @param [in] arguments arguments
+ * @returns amqp_exchange_unbind_ok_t
+ */
+AMQP_EXPORT
+amqp_exchange_unbind_ok_t *AMQP_CALL
+    amqp_exchange_unbind(amqp_connection_state_t state, amqp_channel_t channel,
+                         amqp_bytes_t destination, amqp_bytes_t source,
+                         amqp_bytes_t routing_key, amqp_table_t arguments);
+/**
+ * amqp_queue_declare
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @param [in] passive passive
+ * @param [in] durable durable
+ * @param [in] exclusive exclusive
+ * @param [in] auto_delete auto_delete
+ * @param [in] arguments arguments
+ * @returns amqp_queue_declare_ok_t
+ */
+AMQP_EXPORT
+amqp_queue_declare_ok_t *AMQP_CALL amqp_queue_declare(
+    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
+    amqp_boolean_t passive, amqp_boolean_t durable, amqp_boolean_t exclusive,
+    amqp_boolean_t auto_delete, amqp_table_t arguments);
+/**
+ * amqp_queue_bind
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @param [in] exchange exchange
+ * @param [in] routing_key routing_key
+ * @param [in] arguments arguments
+ * @returns amqp_queue_bind_ok_t
+ */
+AMQP_EXPORT
+amqp_queue_bind_ok_t *AMQP_CALL amqp_queue_bind(
+    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);
+/**
+ * amqp_queue_purge
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @returns amqp_queue_purge_ok_t
+ */
+AMQP_EXPORT
+amqp_queue_purge_ok_t *AMQP_CALL amqp_queue_purge(amqp_connection_state_t state,
+                                                  amqp_channel_t channel,
+                                                  amqp_bytes_t queue);
+/**
+ * amqp_queue_delete
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @param [in] if_unused if_unused
+ * @param [in] if_empty if_empty
+ * @returns amqp_queue_delete_ok_t
+ */
+AMQP_EXPORT
+amqp_queue_delete_ok_t *AMQP_CALL amqp_queue_delete(
+    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
+    amqp_boolean_t if_unused, amqp_boolean_t if_empty);
+/**
+ * amqp_queue_unbind
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @param [in] exchange exchange
+ * @param [in] routing_key routing_key
+ * @param [in] arguments arguments
+ * @returns amqp_queue_unbind_ok_t
+ */
+AMQP_EXPORT
+amqp_queue_unbind_ok_t *AMQP_CALL amqp_queue_unbind(
+    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);
+/**
+ * amqp_basic_qos
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] prefetch_size prefetch_size
+ * @param [in] prefetch_count prefetch_count
+ * @param [in] global global
+ * @returns amqp_basic_qos_ok_t
+ */
+AMQP_EXPORT
+amqp_basic_qos_ok_t *AMQP_CALL amqp_basic_qos(amqp_connection_state_t state,
+                                              amqp_channel_t channel,
+                                              uint32_t prefetch_size,
+                                              uint16_t prefetch_count,
+                                              amqp_boolean_t global);
+/**
+ * amqp_basic_consume
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] queue queue
+ * @param [in] consumer_tag consumer_tag
+ * @param [in] no_local no_local
+ * @param [in] no_ack no_ack
+ * @param [in] exclusive exclusive
+ * @param [in] arguments arguments
+ * @returns amqp_basic_consume_ok_t
+ */
+AMQP_EXPORT
+amqp_basic_consume_ok_t *AMQP_CALL 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);
+/**
+ * amqp_basic_cancel
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] consumer_tag consumer_tag
+ * @returns amqp_basic_cancel_ok_t
+ */
+AMQP_EXPORT
+amqp_basic_cancel_ok_t *AMQP_CALL
+    amqp_basic_cancel(amqp_connection_state_t state, amqp_channel_t channel,
+                      amqp_bytes_t consumer_tag);
+/**
+ * amqp_basic_recover
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @param [in] requeue requeue
+ * @returns amqp_basic_recover_ok_t
+ */
+AMQP_EXPORT
+amqp_basic_recover_ok_t *AMQP_CALL
+    amqp_basic_recover(amqp_connection_state_t state, amqp_channel_t channel,
+                       amqp_boolean_t requeue);
+/**
+ * amqp_tx_select
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @returns amqp_tx_select_ok_t
+ */
+AMQP_EXPORT
+amqp_tx_select_ok_t *AMQP_CALL amqp_tx_select(amqp_connection_state_t state,
+                                              amqp_channel_t channel);
+/**
+ * amqp_tx_commit
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @returns amqp_tx_commit_ok_t
+ */
+AMQP_EXPORT
+amqp_tx_commit_ok_t *AMQP_CALL amqp_tx_commit(amqp_connection_state_t state,
+                                              amqp_channel_t channel);
+/**
+ * amqp_tx_rollback
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @returns amqp_tx_rollback_ok_t
+ */
+AMQP_EXPORT
+amqp_tx_rollback_ok_t *AMQP_CALL amqp_tx_rollback(amqp_connection_state_t state,
+                                                  amqp_channel_t channel);
+/**
+ * amqp_confirm_select
+ *
+ * @param [in] state connection state
+ * @param [in] channel the channel to do the RPC on
+ * @returns amqp_confirm_select_ok_t
+ */
+AMQP_EXPORT
+amqp_confirm_select_ok_t *AMQP_CALL
+    amqp_confirm_select(amqp_connection_state_t state, amqp_channel_t channel);
+
+AMQP_END_DECLS
+
+#endif /* RABBITMQ_C_FRAMING_H */

+ 287 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/ssl_socket.h

@@ -0,0 +1,287 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/** \file */
+
+#ifndef RABBITMQ_C_SSL_SOCKET_H
+#define RABBITMQ_C_SSL_SOCKET_H
+
+#include <rabbitmq-c/amqp.h>
+#include <rabbitmq-c/export.h>
+
+AMQP_BEGIN_DECLS
+
+/**
+ * Create a new SSL/TLS socket object.
+ *
+ * The returned socket object is owned by the \ref amqp_connection_state_t
+ * object and will be destroyed when the state object is destroyed or a new
+ * socket object is created.
+ *
+ * If the socket object creation fails, the \ref amqp_connection_state_t object
+ * will not be changed.
+ *
+ * The object returned by this function can be retrieved from the
+ * amqp_connection_state_t object later using the amqp_get_socket() function.
+ *
+ * Calling this function may result in the underlying SSL library being
+ * initialized.
+ * \sa amqp_set_initialize_ssl_library()
+ *
+ * \param [in,out] state The connection object that owns the SSL/TLS socket
+ * \return A new socket object or NULL if an error occurred.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_socket_t *AMQP_CALL amqp_ssl_socket_new(amqp_connection_state_t state);
+
+/**
+ * Get the internal OpenSSL context. Caveat emptor.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ *
+ * \return A pointer to the internal OpenSSL context. This should be cast to
+ * <tt>SSL_CTX*</tt>.
+ *
+ * \since v0.9.0
+ */
+AMQP_EXPORT
+void *AMQP_CALL amqp_ssl_socket_get_context(amqp_socket_t *self);
+
+/**
+ * Set the CA certificate.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] cacert Path to the CA cert file in PEM format.
+ *
+ * \return \ref AMQP_STATUS_OK on success an \ref amqp_status_enum value on
+ *  failure.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_ssl_socket_set_cacert(amqp_socket_t *self,
+                                         const char *cacert);
+
+/**
+ * Set the password of key in PEM format.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] passwd The password of key in PEM format.
+ *
+ * \since v0.11.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_ssl_socket_set_key_passwd(amqp_socket_t *self,
+                                              const char *passwd);
+
+/**
+ * Set the client key.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] cert Path to the client certificate in PEM foramt.
+ * \param [in] key Path to the client key in PEM format.
+ *
+ * \return \ref AMQP_STATUS_OK on success an \ref amqp_status_enum value on
+ *  failure.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_ssl_socket_set_key(amqp_socket_t *self, const char *cert,
+                                      const char *key);
+
+/**
+ * Set the client key use the engine.
+ *
+ * This function requires amqp_set_ssl_engine() has been called.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] cert Path to the client certificate in PEM foramt.
+ * \param [in] the key ID.
+ *
+ * \return \ref AMQP_STATUS_OK on success an \ref amqp_status_enum value on
+ *  failure.
+ *
+ * \since v0.11.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_ssl_socket_set_key_engine(amqp_socket_t *self,
+                                             const char *cert, const char *key);
+
+/**
+ * Set the client key from a buffer.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] cert Path to the client certificate in PEM foramt.
+ * \param [in] key A buffer containing client key in PEM format.
+ * \param [in] n The length of the buffer.
+ *
+ * \return \ref AMQP_STATUS_OK on success an \ref amqp_status_enum value on
+ *  failure.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_ssl_socket_set_key_buffer(amqp_socket_t *self,
+                                             const char *cert, const void *key,
+                                             size_t n);
+
+/**
+ * Enable or disable peer verification.
+ *
+ * \deprecated use \amqp_ssl_socket_set_verify_peer and
+ * \amqp_ssl_socket_set_verify_hostname instead.
+ *
+ * If peer verification is enabled then the common name in the server
+ * certificate must match the server name. Peer verification is enabled by
+ * default.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] verify Enable or disable peer verification.
+ *
+ * \since v0.4.0
+ */
+AMQP_DEPRECATED_EXPORT void AMQP_CALL
+    amqp_ssl_socket_set_verify(amqp_socket_t *self, amqp_boolean_t verify);
+
+/**
+ * Enable or disable peer verification.
+ *
+ * Peer verification validates the certificate chain that is sent by the broker.
+ * Hostname validation is controlled by \amqp_ssl_socket_set_verify_peer.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] verify enable or disable peer validation
+ *
+ * \since v0.8.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_ssl_socket_set_verify_peer(amqp_socket_t *self,
+                                               amqp_boolean_t verify);
+
+/**
+ * Enable or disable hostname verification.
+ *
+ * Hostname verification checks the broker cert for a CN or SAN that matches the
+ * hostname that amqp_socket_open() is presented. Peer verification is
+ * controlled by \amqp_ssl_socket_set_verify_peer
+ *
+ * \since v0.8.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_ssl_socket_set_verify_hostname(amqp_socket_t *self,
+                                                   amqp_boolean_t verify);
+
+typedef enum {
+  AMQP_TLSv1 = 1,
+  AMQP_TLSv1_1 = 2,
+  AMQP_TLSv1_2 = 3,
+  AMQP_TLSv1_3 = 4,
+  AMQP_TLSvLATEST = 0xFFFF
+} amqp_tls_version_t;
+
+/**
+ * Set min and max TLS versions.
+ *
+ * Set the oldest and newest acceptable TLS versions that are acceptable when
+ * connecting to the broker. Set min == max to restrict to just that
+ * version.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] min the minimum acceptable TLS version
+ * \param [in] max the maxmium acceptable TLS version
+ * \returns AMQP_STATUS_OK on success, AMQP_STATUS_UNSUPPORTED if OpenSSL does
+ * not support the requested TLS version, AMQP_STATUS_INVALID_PARAMETER if an
+ * invalid combination of parameters is passed.
+ *
+ * \since v0.8.0
+ */
+AMQP_EXPORT
+int AMQP_CALL amqp_ssl_socket_set_ssl_versions(amqp_socket_t *self,
+                                               amqp_tls_version_t min,
+                                               amqp_tls_version_t max);
+
+/**
+ * Sets whether rabbitmq-c will initialize OpenSSL.
+ *
+ * \deprecated Since v0.13.0 this is a no-op. OpenSSL automatically manages
+ *    library initialization and uninitialization.
+ *
+ * OpenSSL requires a one-time initialization across a whole program, this sets
+ * whether or not rabbitmq-c will initialize the SSL library when the first call
+ * to amqp_ssl_socket_new() is made. You should call this function with
+ * do_init = 0 if the underlying SSL library is initialized somewhere else
+ * the program.
+ *
+ * Failing to initialize or double initialization of the SSL library will
+ * result in undefined behavior
+ *
+ * By default rabbitmq-c will initialize the underlying SSL library.
+ *
+ * NOTE: calling this function after the first socket has been opened with
+ * amqp_open_socket() will not have any effect.
+ *
+ * \param [in] do_initialize If 0 rabbitmq-c will not initialize the SSL
+ *                           library, otherwise rabbitmq-c will initialize the
+ *                           SSL library
+ *
+ * \since v0.4.0
+ */
+AMQP_DEPRECATED_EXPORT
+void AMQP_CALL amqp_set_initialize_ssl_library(amqp_boolean_t do_initialize);
+
+/**
+ * Initialize the underlying SSL/TLS library.
+ *
+ * \deprecated Since v0.13.0 this is a no-op. OpenSSL automatically manages
+ *    library initialization and uninitialization.
+ *
+ * The OpenSSL library requires a one-time initialization across the whole
+ * program.
+ *
+ * This function unconditionally initializes OpenSSL so that rabbitmq-c may
+ * use it.
+ *
+ * This function is thread-safe, and may be called more than once.
+ *
+ * \return AMQP_STATUS_OK on success.
+ *
+ * \since v0.9.0
+ */
+AMQP_DEPRECATED_EXPORT
+int AMQP_CALL amqp_initialize_ssl_library(void);
+
+/**
+ * Set the engine for underlying SSL/TLS library.
+ *
+ * This function is thread-safe, and may be called more than once.
+ *
+ * This function requires amqp_initialize_ssl_library() or amqp_ssl_socket_new()
+ * has been called.
+ *
+ * \param [in] engine the engine ID
+ * \return AMQP_STATUS_OK on success.
+ *
+ * \since v0.11.0
+ */
+AMQP_EXPORT
+int amqp_set_ssl_engine(const char *engine);
+
+/**
+ * Uninitialize the underlying SSL/TLS library.
+ *
+ * \deprecated Since v0.13.0 this is a no-op. OpenSSL automatically manages
+ *    library initialization and uninitialization.
+ *
+ * \return AMQP_STATUS_OK on success.
+ *
+ * \since v0.9.0
+ */
+AMQP_DEPRECATED_EXPORT
+int AMQP_CALL amqp_uninitialize_ssl_library(void);
+
+AMQP_END_DECLS
+
+#endif /* RABBITMQ_C_SSL_SOCKET_H */

+ 47 - 0
CAE_Solution/Libs/rabbitmq/win/release/include/rabbitmq-c/tcp_socket.h

@@ -0,0 +1,47 @@
+// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
+// SPDX-License-Identifier: mit
+
+/** \file */
+
+/**
+ * A TCP socket connection.
+ */
+
+#ifndef RABBITMQ_C_TCP_SOCKET_H
+#define RABBITMQ_C_TCP_SOCKET_H
+
+#include <rabbitmq-c/amqp.h>
+#include <rabbitmq-c/export.h>
+
+AMQP_BEGIN_DECLS
+
+/**
+ * Create a new TCP socket.
+ *
+ * Call amqp_connection_close() to release socket resources.
+ *
+ * \return A new socket object or NULL if an error occurred.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+amqp_socket_t *AMQP_CALL amqp_tcp_socket_new(amqp_connection_state_t state);
+
+/**
+ * Assign an open file descriptor to a socket object.
+ *
+ * This function must not be used in conjunction with amqp_socket_open(), i.e.
+ * the socket connection should already be open(2) when this function is
+ * called.
+ *
+ * \param [in,out] self A TCP socket object.
+ * \param [in] sockfd An open socket descriptor.
+ *
+ * \since v0.4.0
+ */
+AMQP_EXPORT
+void AMQP_CALL amqp_tcp_socket_set_sockfd(amqp_socket_t *self, int sockfd);
+
+AMQP_END_DECLS
+
+#endif /* RABBITMQ_C_TCP_SOCKET_H */

+ 43 - 0
CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-c-config-version.cmake

@@ -0,0 +1,43 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "0.13.0")
+
+if (PACKAGE_FIND_VERSION_RANGE)
+  # Package version must be in the requested version range
+  if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN)
+      OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX)
+        OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX)))
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  endif()
+else()
+  if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+  else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+      set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+  endif()
+endif()
+
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if(CMAKE_SIZEOF_VOID_P STREQUAL "" OR "8" STREQUAL "")
+  return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+  math(EXPR installedBits "8 * 8")
+  set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+  set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()

+ 28 - 0
CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-c-config.cmake

@@ -0,0 +1,28 @@
+
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+####### Any changes to this file will be overwritten by the next CMake run ####
+####### The input file was rabbitmq-c-config.cmake.in                            ########
+
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+macro(set_and_check _var _file)
+  set(${_var} "${_file}")
+  if(NOT EXISTS "${_file}")
+    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
+  endif()
+endmacro()
+
+macro(check_required_components _NAME)
+  foreach(comp ${${_NAME}_FIND_COMPONENTS})
+    if(NOT ${_NAME}_${comp}_FOUND)
+      if(${_NAME}_FIND_REQUIRED_${comp})
+        set(${_NAME}_FOUND FALSE)
+      endif()
+    endif()
+  endforeach()
+endmacro()
+
+####################################################################################
+
+include(${CMAKE_CURRENT_LIST_DIR}/rabbitmq-targets.cmake)
+check_required_components(rabbitmq-c)

+ 4 - 4
CAE_Solution/Libs/rabbitmq-c/lib/cmake/rabbitmq-c/rabbitmq-targets-release.cmake → CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-targets-release.cmake

@@ -12,8 +12,8 @@ set_target_properties(rabbitmq::rabbitmq PROPERTIES
   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll"
   )
 
-list(APPEND _IMPORT_CHECK_TARGETS rabbitmq::rabbitmq )
-list(APPEND _IMPORT_CHECK_FILES_FOR_rabbitmq::rabbitmq "${_IMPORT_PREFIX}/lib/rabbitmq.4.lib" "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll" )
+list(APPEND _cmake_import_check_targets rabbitmq::rabbitmq )
+list(APPEND _cmake_import_check_files_for_rabbitmq::rabbitmq "${_IMPORT_PREFIX}/lib/rabbitmq.4.lib" "${_IMPORT_PREFIX}/bin/rabbitmq.4.dll" )
 
 # Import target "rabbitmq::rabbitmq-static" for configuration "Release"
 set_property(TARGET rabbitmq::rabbitmq-static APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
@@ -22,8 +22,8 @@ set_target_properties(rabbitmq::rabbitmq-static PROPERTIES
   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib"
   )
 
-list(APPEND _IMPORT_CHECK_TARGETS rabbitmq::rabbitmq-static )
-list(APPEND _IMPORT_CHECK_FILES_FOR_rabbitmq::rabbitmq-static "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib" )
+list(APPEND _cmake_import_check_targets rabbitmq::rabbitmq-static )
+list(APPEND _cmake_import_check_files_for_rabbitmq::rabbitmq-static "${_IMPORT_PREFIX}/lib/librabbitmq.4.lib" )
 
 # Commands beyond this point should not need to know the version.
 set(CMAKE_IMPORT_FILE_VERSION)

+ 115 - 0
CAE_Solution/Libs/rabbitmq/win/release/lib/cmake/rabbitmq-c/rabbitmq-targets.cmake

@@ -0,0 +1,115 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
+   message(FATAL_ERROR "CMake >= 2.8.0 required")
+endif()
+if(CMAKE_VERSION VERSION_LESS "2.8.3")
+   message(FATAL_ERROR "CMake >= 2.8.3 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.8.3...3.24)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_cmake_targets_defined "")
+set(_cmake_targets_not_defined "")
+set(_cmake_expected_targets "")
+foreach(_cmake_expected_target IN ITEMS rabbitmq::rabbitmq rabbitmq::rabbitmq-static)
+  list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
+  if(TARGET "${_cmake_expected_target}")
+    list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
+  else()
+    list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
+  endif()
+endforeach()
+unset(_cmake_expected_target)
+if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
+  unset(_cmake_targets_defined)
+  unset(_cmake_targets_not_defined)
+  unset(_cmake_expected_targets)
+  unset(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT _cmake_targets_defined STREQUAL "")
+  string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
+  string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
+endif()
+unset(_cmake_targets_defined)
+unset(_cmake_targets_not_defined)
+unset(_cmake_expected_targets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target rabbitmq::rabbitmq
+add_library(rabbitmq::rabbitmq SHARED IMPORTED)
+
+set_target_properties(rabbitmq::rabbitmq PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+# Create imported target rabbitmq::rabbitmq-static
+add_library(rabbitmq::rabbitmq-static STATIC IMPORTED)
+
+set_target_properties(rabbitmq::rabbitmq-static PROPERTIES
+  INTERFACE_COMPILE_DEFINITIONS "AMQP_STATIC"
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+  INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:OpenSSL::SSL>;\$<LINK_ONLY:ws2_32>"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Load information for each installed configuration.
+file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/rabbitmq-targets-*.cmake")
+foreach(_cmake_config_file IN LISTS _cmake_config_files)
+  include("${_cmake_config_file}")
+endforeach()
+unset(_cmake_config_file)
+unset(_cmake_config_files)
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(_cmake_target IN LISTS _cmake_import_check_targets)
+  foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
+    if(NOT EXISTS "${_cmake_file}")
+      message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
+   \"${_cmake_file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+    endif()
+  endforeach()
+  unset(_cmake_file)
+  unset("_cmake_import_check_files_for_${_cmake_target}")
+endforeach()
+unset(_cmake_target)
+unset(_cmake_import_check_targets)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)

BIN
CAE_Solution/Libs/rabbitmq/win/release/lib/librabbitmq.4.lib


+ 13 - 0
CAE_Solution/Libs/rabbitmq/win/release/lib/pkgconfig/librabbitmq.pc

@@ -0,0 +1,13 @@
+prefix=F:/czm/anzhuangbao/rabbitmq-c-0.13.0/anzhuang
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: rabbitmq-c
+Description: An AMQP 0-9-1 client library
+Version: 0.13.0
+URL: https://github.com/alanxz/rabbitmq-c
+Requires.private: 
+Libs: -L${libdir} -lrabbitmq
+Libs.private:  -lws2_32 -l -lssl -lcrypto 
+Cflags: -I${includedir}

BIN
CAE_Solution/Libs/rabbitmq/win/release/lib/rabbitmq.4.lib


+ 2 - 2
CAE_Solution/src/Display/display.h

@@ -1,8 +1,8 @@
 #ifndef DISPLAY_H
 #define DISPLAY_H
 #include <QString>
-#include "Manager/meshmanager.h"
-#include "QVTKRenderer/qvtkrenderer.h"
+#include "../VTK/Manager/meshmanager.h"
+#include "../VTK/QVTKRenderer/qvtkrenderer.h"
 #include <QTabWidget>
 
 class Display

+ 0 - 504
CAE_Solution/src/Makefile

@@ -1,504 +0,0 @@
-#############################################################################
-# Makefile for building: src
-# Generated by qmake (3.1) (Qt 5.12.0)
-# Project:  src.pro
-# Template: app
-# Command: F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\bin\qmake.exe -o Makefile src.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
-#############################################################################
-
-MAKEFILE      = Makefile
-
-first: release
-install: release-install
-uninstall: release-uninstall
-QMAKE         = F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\bin\qmake.exe
-DEL_FILE      = del
-CHK_DIR_EXISTS= if not exist
-MKDIR         = mkdir
-COPY          = copy /y
-COPY_FILE     = copy /y
-COPY_DIR      = xcopy /s /q /y /i
-INSTALL_FILE  = copy /y
-INSTALL_PROGRAM = copy /y
-INSTALL_DIR   = xcopy /s /q /y /i
-QINSTALL      = F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\bin\qmake.exe -install qinstall
-QINSTALL_PROGRAM = F:\Qt\Qt5.12.0\5.12.0\msvc2015_64\bin\qmake.exe -install qinstall -exe
-DEL_FILE      = del
-SYMLINK       = $(QMAKE) -install ln -f -s
-DEL_DIR       = rmdir
-MOVE          = move
-SUBTARGETS    =  \
-		release \
-		debug
-
-
-release: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release
-release-make_first: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release 
-release-all: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release all
-release-clean: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release clean
-release-distclean: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release distclean
-release-install: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release install
-release-uninstall: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release uninstall
-debug: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug
-debug-make_first: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug 
-debug-all: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug all
-debug-clean: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug clean
-debug-distclean: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug distclean
-debug-install: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug install
-debug-uninstall: FORCE
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug uninstall
-
-Makefile: src.pro ..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf ..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf \
-		..\.qmake.stash \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf \
-		rabbitClient\rabbitClient.pri \
-		c_rabbitmq\c_rabbitmq.pri \
-		ReadConf\ReadConf.pri \
-		mesh\mesh.pri \
-		visualization_VTK\visualization_VTK.pri \
-		QVTKRenderer\QVTKRenderer.pri \
-		Manager\Manager.pri \
-		Display\Display.pri \
-		stateMachine\stateMachine.pri \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf \
-		src.pro \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl \
-		..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl
-	$(QMAKE) -o Makefile src.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\angle.conf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\windows-vulkan.conf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-desktop.conf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\qconfig.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3danimation_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickanimation_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3dquickscene2d_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_accessibility_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_devicediscovery_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_edid_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_egl_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_eventdispatcher_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fb_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_fontdatabase_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_networkauth_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_platformcompositor_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_positioningquick_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickshapes_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_remoteobjects_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_repparser_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_texttospeech_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_theme_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_virtualkeyboard_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_vulkan_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_windowsuiautomation_support_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_functions.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt_config.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\win32-msvc\qmake.conf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_post.prf:
-..\.qmake.stash:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\common\msvc-version.conf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\toolchain.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_pre.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\default_pre.prf:
-rabbitClient\rabbitClient.pri:
-c_rabbitmq\c_rabbitmq.pri:
-ReadConf\ReadConf.pri:
-mesh\mesh.pri:
-visualization_VTK\visualization_VTK.pri:
-QVTKRenderer\QVTKRenderer.pri:
-Manager\Manager.pri:
-Display\Display.pri:
-stateMachine\stateMachine.pri:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resolve_config.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exclusive_builds_post.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\default_post.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\resources.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qtquickcompiler.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\precompile_header.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\warn_on.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qt.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\moc.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\opengl.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\uic.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\qmake_use.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\file_copies.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\win32\windows.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\testcase_targets.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\exceptions.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\yacc.prf:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\lex.prf:
-src.pro:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Widgets.prl:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Gui.prl:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\Qt5Core.prl:
-..\..\..\..\Qt\Qt5.12.0\5.12.0\msvc2015_64\lib\qtmain.prl:
-qmake: FORCE
-	@$(QMAKE) -o Makefile src.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
-
-qmake_all: FORCE
-
-make_first: release-make_first debug-make_first  FORCE
-all: release-all debug-all  FORCE
-clean: release-clean debug-clean  FORCE
-	-$(DEL_FILE) src.exp
-distclean: release-distclean debug-distclean  FORCE
-	-$(DEL_FILE) Makefile
-	-$(DEL_FILE) src.lib
-
-release-mocclean:
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release mocclean
-debug-mocclean:
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug mocclean
-mocclean: release-mocclean debug-mocclean
-
-release-mocables:
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Release mocables
-debug-mocables:
-	@set MAKEFLAGS=$(MAKEFLAGS)
-	$(MAKE) -f $(MAKEFILE).Debug mocables
-mocables: release-mocables debug-mocables
-
-check: first
-
-benchmark: first
-FORCE:
-
-$(MAKEFILE).Release: Makefile
-$(MAKEFILE).Debug: Makefile

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 19
CAE_Solution/src/Makefile.Debug


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 19
CAE_Solution/src/Makefile.Release


+ 0 - 16
CAE_Solution/src/Manager/resultmeshmanager.h.autosave

@@ -1,16 +0,0 @@
-#ifndef RESULTMESHMANAGER_H
-#define RESULTMESHMANAGER_H
-#include <vector>
-#include <map>
-#include <QStringList>
-#include "QVTKRenderer/qvtkrenderer.h"
-#include "visualization_VTK/vtkvisaddungriddatasource.h"
-#include 
-
-class ResultMeshManager
-{
-public:
-    ResultMeshManager();
-};
-
-#endif // RESULTMESHMANAGER_H

+ 3 - 0
CAE_Solution/src/Rabbitmq/Rabbitmq.pri

@@ -0,0 +1,3 @@
+include( $$PWD/c_rabbitmq/c_rabbitmq.pri)#封装的rabbitmq,接口
+include( $$PWD/rabbitClient/rabbitClient.pri)#利用封装的库写的客户端
+include( $$PWD/ReadConf/ReadConf.pri)#读取rabbitmq连接的配置文件

+ 0 - 0
CAE_Solution/src/ReadConf/ReadConf.pri → CAE_Solution/src/Rabbitmq/ReadConf/ReadConf.pri


+ 0 - 0
CAE_Solution/src/ReadConf/readconf.cpp → CAE_Solution/src/Rabbitmq/ReadConf/readconf.cpp


+ 1 - 1
CAE_Solution/src/ReadConf/readconf.h → CAE_Solution/src/Rabbitmq/ReadConf/readconf.h

@@ -1,7 +1,7 @@
 #ifndef READCONF_H
 #define READCONF_H
 #include <string>
-#include "../../src/commonheaders.h"
+#include "../../../src/commonheaders.h"
 #include <fstream>
 #include <iostream>
 #include <string.h>

+ 0 - 0
CAE_Solution/src/c_rabbitmq/c_rabbitmq.pri → CAE_Solution/src/Rabbitmq/c_rabbitmq/c_rabbitmq.pri


+ 0 - 0
CAE_Solution/src/c_rabbitmq/cexchange.hpp → CAE_Solution/src/Rabbitmq/c_rabbitmq/cexchange.hpp


+ 2 - 5
CAE_Solution/src/c_rabbitmq/cmessage.hpp → CAE_Solution/src/Rabbitmq/c_rabbitmq/cmessage.hpp

@@ -2,11 +2,8 @@
 #define CMESSAGE_H
 
 #include<string>
-#ifdef _WIN32
-#include "../../Libs/rabbitmq/win/include/amqp.h"
-#else
-#include "../../Libs/rabbitmq/linux/include/amqp.h"
-#endif
+#include "../../../Libs/rabbitmq/win/include/amqp.h"
+
 /**
 *   @brief 消息结构
 **/

+ 0 - 0
CAE_Solution/src/c_rabbitmq/cqueue.hpp → CAE_Solution/src/Rabbitmq/c_rabbitmq/cqueue.hpp


+ 0 - 0
CAE_Solution/src/c_rabbitmq/crabbitmqclient.cpp → CAE_Solution/src/Rabbitmq/c_rabbitmq/crabbitmqclient.cpp


+ 7 - 14
CAE_Solution/src/c_rabbitmq/crabbitmqclient.h → CAE_Solution/src/Rabbitmq/c_rabbitmq/crabbitmqclient.h

@@ -7,20 +7,13 @@
 #include "cqueue.hpp"
 
 
-#ifdef WIN32
-#include "../../Libs/rabbitmq/win/include/amqp.h"
-#include "../../Libs/rabbitmq/win/include/amqp_framing.h"
-#include "../../Libs/rabbitmq/win/include/amqp_ssl_socket.h"
-#include "../../Libs/rabbitmq/win/include/amqp_tcp_socket.h"
-#include "../../Libs/rabbitmq/win/include/rabbitmq-c/export.h"
-#else
-#include "../../Libs/rabbitmq/linux/include/amqp.h"
-#include "../../Libs/rabbitmq/linux/include/amqp_framing.h"
-#include "../../Libs/rabbitmq/linux/include/amqp_ssl_socket.h"
-#include "../../Libs/rabbitmq/linux/include/amqp_tcp_socket.h"
-#include "../../Libs/rabbitmq/linux/include/rabbitmq-c/export.h"
-#include <sys/time.h>
-#endif
+
+#include "../../../Libs/rabbitmq/win/include/amqp.h"
+#include "../../../Libs/rabbitmq/win/include/amqp_framing.h"
+#include "../../../Libs/rabbitmq/win/include/amqp_ssl_socket.h"
+#include "../../../Libs/rabbitmq/win/include/amqp_tcp_socket.h"
+#include "../../../Libs/rabbitmq/win/include/rabbitmq-c/export.h"
+
 
 #include <vector>
 

+ 9 - 0
CAE_Solution/src/Rabbitmq/rabbitClient/rabbitClient.pri

@@ -0,0 +1,9 @@
+HEADERS += \
+        $$PWD/ \
+        $$PWD/rabbitclient.h \
+    $$PWD/vtkjsonobject.h
+
+SOURCES += \
+        $$PWD/ \
+        $$PWD/rabbitclient.cpp \
+    $$PWD/vtkjsonobject.cpp

+ 66 - 1
CAE_Solution/src/rabbitClient/rabbitclient.cpp → CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.cpp

@@ -1,10 +1,16 @@
 #include "rabbitclient.h"
 #include <QDir>
 #include <QString>
+#include <QIODevice>
+#include <QFile>
+#include <QMessageBox>
+#include <QBuffer>
+
 
 rabbitClient::rabbitClient(QObject *parent) : QObject(parent)
 {
 
+
 }
 
 /*
@@ -43,6 +49,7 @@ rabbitClient::~rabbitClient()
         delete objRabbitmq;
         objRabbitmq = NULL;
     }
+
 }
 
 /**********************************************
@@ -51,10 +58,13 @@ rabbitClient::~rabbitClient()
  * ********************************************/
 int rabbitClient::sendMsg(const std::string str)
 {
+    printf("-------------rabbit client sendmsg----------------------\n");
     int iRet;
     amqp_basic_properties_t properties = {};
-    CMessage cmsg(str, properties, objRabbitmq->routing_keys_name);
+    std::string msg = this->readImg(str);
+    CMessage cmsg(msg, properties, objRabbitmq->routing_keys_name);
     iRet = objRabbitmq->PublishMessage(cmsg, ErrorReturn);
+
     if(iRet!=0){
         cout<<"Send Rabbitmq publish Message : "<<ErrorReturn <<endl;
         disconnect_index++;
@@ -96,13 +106,19 @@ int rabbitClient::recvMsg()
         }
         disconnect_index = 0;
         cout<<str<<endl;
+        printf("------------recvClient recvMsg-------------------\n");
+
+
         if(str!="") emit recv(QString::fromStdString(str));
+
         QThread::sleep(1);
         //cout<<"recv"<<endl;
+
     }
     return 0;
 }
 
+
 /*
  * @brief: init recvClient
  * @param: void
@@ -253,3 +269,52 @@ void rabbitClient::send_connect()
     }
     disconnect_index = 0;
 }
+
+
+/*
+ * @brief: read img by binary and change to base64
+ * @param: img path
+ * @ret: Base64 encoded image information
+ * @birth: created by czm in 20230404
+ */
+string rabbitClient::readImg(string img_path)
+{
+    //    printf("-----------read img start-----------------\n");
+    //    //用来存储读取出来的字节数据
+    //    std::string img_data_str;
+    //    ifstream i_f_stream(img, ifstream::binary);
+    //    i_f_stream.seekg(0, i_f_stream.end);
+    //    int length = i_f_stream.tellg();
+    //    i_f_stream.seekg(0, i_f_stream.beg);
+
+    //    char *buffer = new char[length];
+    //    i_f_stream.read(buffer, length);
+    //    i_f_stream.close();
+    //    // 将img_data的img_size个数据赋值给img_data_str
+    //    img_data_str.assign(buffer, length);
+    //    // 防止内存泄露
+    //    delete buffer;
+    QImage *img = new QImage;
+    if( !(img->load(QString::fromStdString(img_path))) )   //如果图片不存在
+    {
+        delete img;
+        return "";
+    }
+    QFileInfo imageInfo = QFileInfo(QString::fromStdString(img_path));
+    QString sImgSuffix = imageInfo.suffix(); //获取图片文件后缀
+    QByteArray baImgSuffix = sImgSuffix.toLatin1(); //将后缀QString转char *
+    QByteArray baImgData; //保存图片数据的字符数组
+    QBuffer buf(&baImgData);  //将字符数组与buffer缓存区绑定,以便写入数据
+    //原型为 img->save(&buf, "jpg"),将图片以JPG格式写入buffer; 但有时候所选图片后缀为其他格式,为避免错误,选择用获取图片后缀方式填写,类型为char*
+    img->save(&buf, baImgSuffix.data());
+    QByteArray baImgToHexed = baImgData.toBase64(); //因为缓存已与baImgData绑定,故缓存的数据也绑定在baImgData中
+    buf.close();
+    QString sImgB64Data(baImgToHexed); //将Base64转QString
+
+
+       ofstream outfile("img.txt",ios::app);
+       outfile<<sImgB64Data.toStdString()<<endl;
+        outfile.close();
+
+    return sImgB64Data.toStdString();
+}

+ 11 - 4
CAE_Solution/src/rabbitClient/rabbitclient.h → CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.h

@@ -5,10 +5,11 @@
 #include <QThread>
 
 #include "commonheaders.h"
-#include "ReadConf/readconf.h"
-#include "c_rabbitmq/crabbitmqclient.h"
-#include "../../Libs/rabbitmq/win/include/rabbitmq-c/amqp.h"
-#include "../../Libs/rabbitmq/win/include/amqp.h"
+#include "../ReadConf/readconf.h"
+#include "../c_rabbitmq/crabbitmqclient.h"
+#include "../../../Libs/rabbitmq/win/include/rabbitmq-c/amqp.h"
+#include "../../../Libs/rabbitmq/win/include/amqp.h"
+#include "vtkjsonobject.h"
 #include <QtGlobal>
 using namespace std;
 
@@ -26,18 +27,24 @@ public :
     int disConnect();
     void recv_connect();
     void send_connect();
+    string readImg(std::string);
+
 
     std::string ErrorReturn;
+    std::string imgFile;
+
 
 public slots:
     int sendMsg(const std::string str);
     int recvMsg();
 
+
 signals:
     void restart_recv_client_signal();
     void restart_send_client_signal();
     void recv(QString str);
 
+
 private:
     bool connection_state = false;
     ReadConf *rconf;

+ 90 - 0
CAE_Solution/src/Rabbitmq/rabbitClient/vtkjsonobject.cpp

@@ -0,0 +1,90 @@
+#include "vtkjsonobject.h"
+
+vtkJsonObject::vtkJsonObject()
+{
+
+}
+
+/*
+ * @brief: parsing json msg
+ * @param: json msg
+ * @brief: void
+ * @birth: created by czm in 20230404
+ */
+void vtkJsonObject::FromJSON(std::string msg)
+{
+    QByteArray byteArray(msg.c_str(),msg.length());
+    QJsonParseError jsonError;
+    QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError);  // 转化为 JSON 文档
+    if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {  // 解析未发生错误
+        if (doucment.isObject()) {  // JSON 文档为对象
+            QJsonObject object = doucment.object();  // 转化为对象
+            if (object.contains("usrId")) {
+                QJsonValue value = object.value("usrId");
+                if (value.isString()) {
+                    this->usrId = value.toString();
+                }
+            }
+            if (object.contains("solverConfigid")) {
+                QJsonValue value = object.value("solverConfigid");
+                if (value.isString()) {
+                    this->solverConfigid = value.toString();;
+                }
+            }
+            if (object.contains("proId")) {
+                QJsonValue value = object.value("proId");
+                if (value.isString()) {
+                    this->proId = value.toString();
+                }
+            }
+            if (object.contains("paramJson")) {
+                QJsonValue value = object.value("paramJson");
+                if (value.isString()) {
+                   this->paramJson = value.toString();
+                }
+            }
+            if (object.contains("action")) {
+                QJsonValue value = object.value("action");
+                if (value.isString()) {
+                   this->action = value.toString();
+                }
+            }
+
+        }
+    }
+
+}
+
+vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
+{
+    this->usrId = object->usrId;
+    this->solverConfigid = object->solverConfigid;
+    this->proId = object->proId;
+    this->paramJson = object->paramJson;
+    this->action = object->action;
+    return this;
+}
+
+/*
+ * @brief: Build JSON message
+ * @param: img file
+ * @brief: josn msg
+ * @birth: created by czm in 20230404
+ */
+std::string vtkJsonObject::ToJson(std::string imgfile)
+{
+    QJsonObject json;
+    json.insert("usrId",this->usrId);
+    json.insert("solverConfigid",this->solverConfigid);
+    json.insert("proId",this->proId);
+    json.insert("paramJson",this->paramJson);
+    json.insert("action",this->action);
+    json.insert("img",QString::fromStdString(imgfile));
+
+    QJsonDocument document;
+    document.setObject(json);
+    QByteArray byteArray = document.toJson(QJsonDocument::Compact);
+    QString strJson(byteArray);
+    return strJson.toStdString();
+}
+

+ 30 - 0
CAE_Solution/src/Rabbitmq/rabbitClient/vtkjsonobject.h

@@ -0,0 +1,30 @@
+#ifndef VTKJSONOBJECT_H
+#define VTKJSONOBJECT_H
+
+#include <QObject>
+#include <QJsonDocument>
+#include <QJsonParseError>
+#include <QJsonObject>
+#include <QJsonValue>
+#include <QJsonArray>
+#include <string>
+
+
+class vtkJsonObject
+{
+public:
+    vtkJsonObject();
+    void FromJSON(std::string msg);
+    vtkJsonObject* operator=(vtkJsonObject* object);
+    std::string ToJson(std::string imgfile);
+
+public:
+     QString usrId;
+     QString solverConfigid;
+     QString proId;
+     QString paramJson;
+     QString action;
+
+};
+
+#endif // VTKJSONOBJECT_H

+ 0 - 0
CAE_Solution/src/Manager/Manager.pri → CAE_Solution/src/VTK/Manager/Manager.pri


+ 5 - 5
CAE_Solution/src/Manager/meshmanager.cpp → CAE_Solution/src/VTK/Manager/meshmanager.cpp

@@ -2,11 +2,11 @@
 #include <algorithm>
 #include <set>
 #include <QFileInfo>
-#include "mesh/mesh_ugrid.h"
-#include "visualization_VTK/vtkvisunshademesh.h"
-#include "visualization_VTK/vtkvisunstructuredgridsource.h"
-#include "mesh/mesh_tecplot.h"
-#include "visualization_VTK/vtkvismeshbasetovtksource.h"
+#include "../mesh/mesh_ugrid.h"
+#include "../visualization_VTK/vtkvisunshademesh.h"
+#include "../visualization_VTK/vtkvisunstructuredgridsource.h"
+#include "../mesh/mesh_tecplot.h"
+#include "../visualization_VTK/vtkvismeshbasetovtksource.h"
 
 MeshManager* MeshManager::m_pInstance = 0;
 

+ 3 - 3
CAE_Solution/src/Manager/meshmanager.h → CAE_Solution/src/VTK/Manager/meshmanager.h

@@ -4,9 +4,9 @@
 #include <map>
 #include <vector>
 #include <QString>
-#include "mesh/mesh.h"
-#include "QVTKRenderer/qvtkrenderer.h"
-#include "visualization_VTK/vtkvisunshademesh.h"
+#include "../mesh/mesh.h"
+#include "../QVTKRenderer/qvtkrenderer.h"
+#include "../visualization_VTK/vtkvisunshademesh.h"
 
 
 

+ 0 - 0
CAE_Solution/src/Manager/resultmeshmanager.cpp → CAE_Solution/src/VTK/Manager/resultmeshmanager.cpp


+ 0 - 0
CAE_Solution/src/Manager/resultmeshmanager.h → CAE_Solution/src/VTK/Manager/resultmeshmanager.h


+ 0 - 0
CAE_Solution/src/QVTKRenderer/QVTKRenderer.pri → CAE_Solution/src/VTK/QVTKRenderer/QVTKRenderer.pri


+ 0 - 0
CAE_Solution/src/QVTKRenderer/qvtkrenderer.cpp → CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.cpp


+ 6 - 6
CAE_Solution/src/QVTKRenderer/qvtkrenderer.h → CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.h

@@ -1,12 +1,12 @@
 #ifndef QVTKRENDERER_H
 #define QVTKRENDERER_H
 #include <string>
-#include <vtkAutoInit.h>
-VTK_MODULE_INIT(vtkRenderingOpenGL2)
-VTK_MODULE_INIT(vtkInteractionStyle)
-VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
-VTK_MODULE_INIT(vtkRenderingFreeType)
-#include "visualization_VTK/vtkviscameramanager.h"
+//#include <vtkAutoInit.h>
+//VTK_MODULE_INIT(vtkRenderingOpenGL2)
+//VTK_MODULE_INIT(vtkInteractionStyle)
+//VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
+//VTK_MODULE_INIT(vtkRenderingFreeType)
+#include "../visualization_VTK/vtkviscameramanager.h"
 #include <QWidget>
 #include <QVTKOpenGLNativeWidget.h>
 #include <vtkRenderWindow.h>

+ 4 - 0
CAE_Solution/src/VTK/VTK.pri

@@ -0,0 +1,4 @@
+include( $$PWD/Manager/Manager.pri)#管理类
+include( $$PWD/mesh/mesh.pri)#存储几何数据的类
+include( $$PWD/QVTKRenderer/QVTKRenderer.pri)#封装vtkrenderer的渲染类
+include( $$PWD/visualization_VTK/visualization_VTK.pri)#接口,切片,管理相机,数据存储,捕获渲染图等

+ 0 - 0
CAE_Solution/src/mesh/cells.h → CAE_Solution/src/VTK/mesh/cells.h


+ 0 - 0
CAE_Solution/src/mesh/mesh.cpp → CAE_Solution/src/VTK/mesh/mesh.cpp


+ 0 - 0
CAE_Solution/src/mesh/mesh.h → CAE_Solution/src/VTK/mesh/mesh.h


+ 0 - 0
CAE_Solution/src/mesh/mesh.pri → CAE_Solution/src/VTK/mesh/mesh.pri


+ 0 - 0
CAE_Solution/src/mesh/mesh_adi.cpp → CAE_Solution/src/VTK/mesh/mesh_adi.cpp


+ 0 - 0
CAE_Solution/src/mesh/mesh_adi.h → CAE_Solution/src/VTK/mesh/mesh_adi.h


+ 0 - 0
CAE_Solution/src/mesh/mesh_tecplot.cpp → CAE_Solution/src/VTK/mesh/mesh_tecplot.cpp


+ 0 - 0
CAE_Solution/src/mesh/mesh_tecplot.h → CAE_Solution/src/VTK/mesh/mesh_tecplot.h


+ 0 - 0
CAE_Solution/src/mesh/mesh_ugrid.cpp → CAE_Solution/src/VTK/mesh/mesh_ugrid.cpp


+ 0 - 0
CAE_Solution/src/mesh/mesh_ugrid.h → CAE_Solution/src/VTK/mesh/mesh_ugrid.h


+ 0 - 0
CAE_Solution/src/mesh/meshbase.cpp → CAE_Solution/src/VTK/mesh/meshbase.cpp


+ 0 - 0
CAE_Solution/src/mesh/meshbase.h → CAE_Solution/src/VTK/mesh/meshbase.h


+ 0 - 0
CAE_Solution/src/mesh/meshstructured.cpp → CAE_Solution/src/VTK/mesh/meshstructured.cpp


+ 0 - 0
CAE_Solution/src/mesh/meshstructured.h → CAE_Solution/src/VTK/mesh/meshstructured.h


+ 0 - 0
CAE_Solution/src/mesh/meshunstructured.cpp → CAE_Solution/src/VTK/mesh/meshunstructured.cpp


+ 0 - 0
CAE_Solution/src/mesh/meshunstructured.h → CAE_Solution/src/VTK/mesh/meshunstructured.h


+ 0 - 0
CAE_Solution/src/mesh/points.cpp → CAE_Solution/src/VTK/mesh/points.cpp


+ 0 - 0
CAE_Solution/src/mesh/points.h → CAE_Solution/src/VTK/mesh/points.h


+ 0 - 0
CAE_Solution/src/visualization_VTK/loadxyplotdata.cpp → CAE_Solution/src/VTK/visualization_VTK/loadxyplotdata.cpp


+ 0 - 0
CAE_Solution/src/visualization_VTK/loadxyplotdata.h → CAE_Solution/src/VTK/visualization_VTK/loadxyplotdata.h


+ 4 - 2
CAE_Solution/src/visualization_VTK/visualization_VTK.pri → CAE_Solution/src/VTK/visualization_VTK/visualization_VTK.pri

@@ -8,7 +8,8 @@ HEADERS += \
     $$PWD/vtkvismeshbasetovtksource.h \
     $$PWD/vtkvismeshtovtksource.h \
     $$PWD/vtkvisaddungriddatasource.h \
-    $$PWD/vtkvisunslice.h
+    $$PWD/vtkvisunslice.h \
+    $$PWD/vtkviscapturefigure.h
 
 SOURCES += \
         $$PWD/*.cpp \
@@ -20,4 +21,5 @@ SOURCES += \
     $$PWD/vtkvismeshbasetovtksource.cpp \
     $$PWD/vtkvismeshtovtksource.cpp \
     $$PWD/vtkvisaddungriddatasource.cpp \
-    $$PWD/vtkvisunslice.cpp
+    $$PWD/vtkvisunslice.cpp \
+    $$PWD/vtkviscapturefigure.cpp

+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvisaddungriddatasource.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkvisaddungriddatasource.cpp


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvisaddungriddatasource.h → CAE_Solution/src/VTK/visualization_VTK/vtkvisaddungriddatasource.h


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkviscameramanager.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkviscameramanager.cpp


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkviscameramanager.h → CAE_Solution/src/VTK/visualization_VTK/vtkviscameramanager.h


+ 218 - 0
CAE_Solution/src/VTK/visualization_VTK/vtkviscapturefigure.cpp

@@ -0,0 +1,218 @@
+#include "vtkviscapturefigure.h"
+#include <vtkRenderer.h>
+#include <vtkRenderWindow.h>
+#include <vtkRenderLargeImage.h>
+#include <vtkJPEGWriter.h>
+#include <vtkBMPWriter.h>
+#include <vtkPNGWriter.h>
+#include <vtkTIFFWriter.h>
+#include <vtkPNMWriter.h>
+#include <vtkObjectFactory.h>
+
+vtkStandardNewMacro(vtkVISCaptureFigure)
+
+/*
+ * @brief: the constructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230330
+ */
+vtkVISCaptureFigure::vtkVISCaptureFigure()
+{
+    magFactor_ = 1;
+
+    renderImage_ = NULL;
+}
+
+/*
+ * @brief: the destructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230330
+ */
+vtkVISCaptureFigure::~vtkVISCaptureFigure()
+{
+    renderImage_->Delete();
+}
+
+/*
+ * @brief: set Capture Figure Source(设置捕获图形源)
+ * @param: renderer
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::SetCaptureFigureSource(vtkRenderer *render)
+{
+
+    int actorNum;
+
+    actorNum = render->VisibleActorCount();
+
+    if (actorNum == 0)
+    {
+        ErrorInfo(1, "There is no figure in renderWindow!");
+        return;
+    }
+
+    renderImage_ = vtkRenderLargeImage::New();
+    renderImage_->SetInput(render);
+    renderImage_->SetMagnification(magFactor_);
+    renderImage_->Update();
+}
+
+/*
+ * @brief: Modify Magnification Factor(修改放大系数)
+ * @param: factor
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::ModifyMagnificationFactor(int factor)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Figure Source, Please Set Capture Figure Source First!");
+        return;
+    }
+    else
+    {
+        magFactor_ = factor;
+
+        renderImage_->SetMagnification(factor);
+        renderImage_->Update();
+        renderImage_->Modified();
+
+    }
+}
+
+/*
+ * @brief: get Magnification Factor(获取放大系数)
+ * @param: void
+ * @ret: factor
+ * @birth: created by czm in 20230330
+ */
+int vtkVISCaptureFigure::GetMagnificationFactor()
+{
+    return this->magFactor_;
+}
+
+/*
+ * @brief: Capture Render Figure As JPEG(捕获渲染图为JPEG)
+ * @param: imageName
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::CaptureRenderFigureAsJPEG(char* imageName)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Source, Please Set Capture Figure Source First!");
+        return;
+    }
+
+    renderImage_->Modified();
+
+    vtkJPEGWriter *writer = vtkJPEGWriter::New();
+    writer->SetInputData(renderImage_->GetOutput());
+    writer->SetFileName(imageName);
+    writer->SetQuality(100);
+    writer->ProgressiveOn();
+    writer->Write();
+
+    writer->Delete();
+}
+
+/*
+ * @brief: Capture Render Figure As BMP(捕获渲染图为BMP)
+ * @param: imageName
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::CaptureRenderFigureAsBMP(char* imageName)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Source, Please Set Capture Figure Source First!");
+        return;
+    }
+
+    renderImage_->Modified();
+
+    vtkBMPWriter *writer = vtkBMPWriter::New();
+    writer->SetInputData(renderImage_->GetOutput());
+    writer->SetFileName(imageName);
+    writer->Write();
+
+    writer->Delete();
+}
+
+/*
+ * @brief: Capture Render Figure As PNG(捕获渲染图为PNG)
+ * @param: imageName
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::CaptureRenderFigureAsPNG(char* imageName)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Source, Please Set Capture Figure Source First!");
+        return;
+    }
+
+    renderImage_->Modified();
+
+    vtkPNGWriter *writer = vtkPNGWriter::New();
+    writer->SetInputData(renderImage_->GetOutput());
+    writer->SetFileName(imageName);
+    writer->Write();
+
+    writer->Delete();
+}
+
+/*
+ * @brief: Capture Render Figure As JPEG(捕获渲染图为JPEG)
+ * @param: imageName
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::CaptureRenderFigureAsTIFF(char* imageName)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Source, Please Set Capture Figure Source First!");
+        return;
+    }
+
+    renderImage_->Modified();
+
+    vtkTIFFWriter *writer = vtkTIFFWriter::New();
+    writer->SetInputData(renderImage_->GetOutput());
+    writer->SetFileName(imageName);
+    writer->Write();
+
+    writer->Delete();
+}
+
+/*
+ * @brief: Capture Render Figure As PNM(捕获渲染图为PNM)
+ * @param: imageName
+ * @ret: void
+ * @birth: created by czm in 20230330
+ */
+void vtkVISCaptureFigure::CaptureRenderFigureAsPNM(char* imageName)
+{
+    if (renderImage_ == NULL)
+    {
+        ErrorInfo(1, "No Source, Please Set Capture Figure Source First!");
+        return;
+    }
+
+    renderImage_->Modified();
+
+    vtkPNMWriter *writer = vtkPNMWriter::New();
+    writer->SetInputData(renderImage_->GetOutput());
+    writer->SetFileName(imageName);
+    writer->Write();
+
+    writer->Delete();
+}

+ 29 - 0
CAE_Solution/src/VTK/visualization_VTK/vtkviscapturefigure.h

@@ -0,0 +1,29 @@
+#ifndef VTKVISCAPTUREFIGURE_H
+#define VTKVISCAPTUREFIGURE_H
+#include "vtkvismanager.h"
+#include <vtkRenderLargeImage.h>
+#include <vtkObjectFactory.h>
+
+class vtkVISCaptureFigure :public vtkVISManager
+{
+public:
+    static vtkVISCaptureFigure* New();
+    vtkVISCaptureFigure();
+    ~vtkVISCaptureFigure();
+
+    void SetCaptureFigureSource(vtkRenderer *render);
+    void ModifyMagnificationFactor(int factor);
+    int GetMagnificationFactor();
+
+    void CaptureRenderFigureAsJPEG(char* imageName);
+    void CaptureRenderFigureAsBMP(char* imageName);
+    void CaptureRenderFigureAsPNG(char* imageName);
+    void CaptureRenderFigureAsTIFF(char* imageName);
+    void CaptureRenderFigureAsPNM(char* imageName);
+
+protected:
+    vtkRenderLargeImage *renderImage_;
+    int magFactor_;
+};
+
+#endif // VTKVISCAPTUREFIGURE_H

+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvismanager.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.cpp


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvismanager.h → CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.h


+ 2 - 2
CAE_Solution/src/visualization_VTK/vtkvismeshbasetovtksource.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkvismeshbasetovtksource.cpp

@@ -9,8 +9,8 @@
 #include <vtkWedge.h>
 #include <vtkObjectFactory.h>
 #include <vtkHexahedron.h>
-#include "mesh/meshbase.h"
-#include "mesh/meshunstructured.h"
+#include "../mesh/meshbase.h"
+#include "../mesh/meshunstructured.h"
 
 vtkStandardNewMacro(vtkVISMeshBaseToVTKSource)
 

+ 1 - 1
CAE_Solution/src/visualization_VTK/vtkvismeshbasetovtksource.h → CAE_Solution/src/VTK/visualization_VTK/vtkvismeshbasetovtksource.h

@@ -1,7 +1,7 @@
 #ifndef VTKVISMESHBASETOVTKSOURCE_H
 #define VTKVISMESHBASETOVTKSOURCE_H
 #include "vtkvismanager.h"
-#include "mesh/meshbase.h"
+#include "../mesh/meshbase.h"
 #include "vtkvisunstructuredgridsource.h"
 #include <iostream>
 #include <vector>

+ 1 - 1
CAE_Solution/src/visualization_VTK/vtkvismeshtovtksource.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkvismeshtovtksource.cpp

@@ -1,6 +1,6 @@
 #include "vtkvismeshtovtksource.h"
 #include <vtkObjectFactory.h>
-#include "mesh/meshunstructured.h"
+#include "../mesh/meshunstructured.h"
 #include <vtkUnstructuredGrid.h>
 #include <vtkPoints.h>
 #include <vtkLine.h>

+ 2 - 2
CAE_Solution/src/visualization_VTK/vtkvismeshtovtksource.h → CAE_Solution/src/VTK/visualization_VTK/vtkvismeshtovtksource.h

@@ -1,8 +1,8 @@
 #ifndef VTKVISMESHTOVTKSOURCE_H
 #define VTKVISMESHTOVTKSOURCE_H
 #include "vtkvismanager.h"
-#include "mesh/mesh.h"
-#include "mesh/meshbase.h"
+#include "../mesh/mesh.h"
+#include "../mesh/meshbase.h"
 #include "vtkvisunstructuredgridsource.h"
 #include <iostream>
 #include <vector>

+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvisunglyph.cpp.autosave → CAE_Solution/src/VTK/visualization_VTK/vtkvisunglyph.cpp


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvisunglyph.h → CAE_Solution/src/VTK/visualization_VTK/vtkvisunglyph.h


+ 0 - 0
CAE_Solution/src/visualization_VTK/vtkvisunshademesh.cpp → CAE_Solution/src/VTK/visualization_VTK/vtkvisunshademesh.cpp


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff