Merge pull request #171 from surgura/clean-build

Clean build
This commit is contained in:
Emiel Bruijntjes 2018-01-30 09:24:14 +01:00 committed by GitHub
commit 91c4f89159
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
111 changed files with 459 additions and 531 deletions

5
.gitignore vendored
View File

@ -13,3 +13,8 @@
*.la *.la
*.a *.a
*.a.* *.a.*
/build
/.vscode
.atom-build.cson
.atom-dbg.cson
/bin

View File

@ -1,11 +1,35 @@
cmake_minimum_required(VERSION 2.8) # Builds AMQP-CPP
#
# Options:
#
# - AMQP-CPP_BUILD_SHARED (default OFF)
# ON: Build shared lib
# OFF: Build static lib
#
# - AMQP-CPP_LINUX_TCP (default OFF)
# ON: Build posix handler implementation
# OFF: Don't build posix handler implementation
cmake_minimum_required(VERSION 3.1)
# project name
project(amqpcpp) project(amqpcpp)
# ensure c++11 on all compilers # build options
include(set_cxx_norm.cmake) option(AMQP-CPP_BUILD_SHARED "Build shared library. If off, build will be static." OFF)
set_cxx_norm (${CXX_NORM_CXX11}) option(AMQP-CPP_LINUX_TCP "Build linux sockets implementation." OFF)
# ensure c++11 on all compilers
set (CMAKE_CXX_STANDARD 11)
# add source files
# ------------------------------------------------------------------------------------------------------
# set include/ as include directory
include_directories(${CMAKE_SOURCE_DIR}/include)
# macro that adds a list of provided source files to a list called SRCS.
# if variable SRCS does not yet exist, it is created.
macro (add_sources) macro (add_sources)
file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
foreach (_src ${ARGN}) foreach (_src ${ARGN})
@ -21,36 +45,53 @@ macro (add_sources)
endif() endif()
endmacro() endmacro()
# add source files
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(include) if(AMQP-CPP_LINUX_TCP)
add_subdirectory(src/linux_tcp)
option(BUILD_SHARED "build shared library" OFF)
if(BUILD_SHARED)
add_library(amqpcpp SHARED ${SRCS})
set_target_properties(amqpcpp PROPERTIES SOVERSION 2.7)
install(TARGETS amqpcpp
LIBRARY DESTINATION lib
)
else()
add_library(amqpcpp STATIC ${SRCS})
install(TARGETS amqpcpp
ARCHIVE DESTINATION lib
)
endif()
Include_directories(${PROJECT_SOURCE_DIR})
install(DIRECTORY include/ DESTINATION include/amqpcpp
FILES_MATCHING PATTERN "*.h")
install(FILES amqpcpp.h DESTINATION include)
option(BUILD_TUTORIALS "build rabbitmq tutorials" OFF)
if(BUILD_TUTORIALS)
# add_subdirectory(examples/rabbitmq_tutorials)
endif() endif()
set(AMQP-CPP_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) # settings for specific compilers
set(AMQP-CPP_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE) # ------------------------------------------------------------------------------------------------------
# we have to prevent windows from defining the max macro.
if (WIN32) if (WIN32)
add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) add_definitions(-DNOMINMAX)
endif() endif()
# build targets
# ------------------------------------------------------------------------------------------------------
# set output directory
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
if(AMQP-CPP_BUILD_SHARED)
# create shared lib
add_library(${PROJECT_NAME} SHARED ${SRCS})
# set shared lib version
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION 2.8)
else()
# create static lib
add_library(${PROJECT_NAME} STATIC ${SRCS})
endif()
# install rules
# ------------------------------------------------------------------------------------------------------
if(AMQP-CPP_BUILD_SHARED)
# copy shared lib and its static counter part
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION lib
)
else()
# copy static lib
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION lib
)
endif()
# copy header files
install(DIRECTORY include/amqpcpp/ DESTINATION include/amqpcpp
FILES_MATCHING PATTERN "*.h")
install(FILES include/amqpcpp.h DESTINATION include)

View File

@ -25,9 +25,11 @@ clean:
install: install:
mkdir -p ${INCLUDE_DIR}/$(LIBRARY_NAME) mkdir -p ${INCLUDE_DIR}/$(LIBRARY_NAME)
mkdir -p ${INCLUDE_DIR}/$(LIBRARY_NAME)/linux_tcp
mkdir -p ${LIBRARY_DIR} mkdir -p ${LIBRARY_DIR}
cp -f $(LIBRARY_NAME).h ${INCLUDE_DIR} cp -f include/$(LIBRARY_NAME).h ${INCLUDE_DIR}
cp -f include/*.h ${INCLUDE_DIR}/$(LIBRARY_NAME) cp -f include/amqpcpp/*.h ${INCLUDE_DIR}/$(LIBRARY_NAME)
cp -f include/amqpcpp/linux_tcp/*.h ${INCLUDE_DIR}/$(LIBRARY_NAME)/linux_tcp
-cp -f src/lib$(LIBRARY_NAME).so.$(VERSION) ${LIBRARY_DIR} -cp -f src/lib$(LIBRARY_NAME).so.$(VERSION) ${LIBRARY_DIR}
-cp -f src/lib$(LIBRARY_NAME).a.$(VERSION) ${LIBRARY_DIR} -cp -f src/lib$(LIBRARY_NAME).a.$(VERSION) ${LIBRARY_DIR}
ln -r -s -f $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(VERSION) $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(SONAME) ln -r -s -f $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(VERSION) $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(SONAME)

View File

@ -62,20 +62,41 @@ Then check out our other commercial and open source solutions:
INSTALLING INSTALLING
========== ==========
AMQP-CPP comes with an optional Linux-only TCP module that takes care of the network part required for the AMQP-CPP core library. If you use this module, you are required to link with `pthread`.
If you are on some kind of Linux environment, installing the library is as easy There are two methods to compile AMQP-CPP: CMake and Make. CMake is platform portable, but the Makefile only works on Linux. Building of a shared library is currently not supported on Windows.
After building there are two relevant files to include when using the library.
File|Include when?
----|------------
amqpcpp.h|Always
amqpcpp/linux_tcp.h|If using the Linux-only TCP module
On Windows you are required to define `NOMINMAX` when compiling code that includes public AMQP-CPP header files.
## CMake
The CMake file supports both building and installing. You can choose not to use the install functionality, and instead manually use the build output at `bin/`. Keep in mind that the TCP module is only supported for Linux. An example install method would be:
``` bash
mkdir build
cd build
cmake .. [-DBUILD_SHARED] [-DLINUX_TCP]
cmake --build .. --target install
```
Option|Default|Meaning
------|-------|-------
BUILD_SHARED|OFF|Static lib(ON) or shared lib(OFF)? Shared is not supported on Windows.
LINUX_TCP|OFF|Should the Linux-only TCP module be built?
## Make
Installing the library is as easy
as running `make` and `make install`. This will install the full version of as running `make` and `make install`. This will install the full version of
the AMQP-CPP, including the system specific TCP module. If you do not need the the AMQP-CPP, including the system specific TCP module. If you do not need the
additional TCP module (because you take care of handling the network stuff additional TCP module (because you take care of handling the network stuff
yourself), you can also compile a pure form of the library. Use `make pure` yourself), you can also compile a pure form of the library. Use `make pure`
and `make install` for that. and `make install` for that.
For users on a non-Linux environment: this library is known to work on your
environment too (after all, it does not do any operating specific system calls),
but it might take some extra effort to get your compiler to compile it. Please
send in your pull requests once you have it running, so that others can benefit
from your experiences.
When you compile an application that uses the AMQP-CPP library, do not When you compile an application that uses the AMQP-CPP library, do not
forget to link with the library. For gcc and clang the linker flag is -lamqpcpp. forget to link with the library. For gcc and clang the linker flag is -lamqpcpp.
If you use the fullblown version of AMQP-CPP (with the TCP module), you also If you use the fullblown version of AMQP-CPP (with the TCP module), you also
@ -992,4 +1013,3 @@ class that can be directly plugged into libev, libevent and libuv event loops.
For performance reasons, we need to investigate if we can limit the number of times For performance reasons, we need to investigate if we can limit the number of times
an incoming or outgoing messages is copied. an incoming or outgoing messages is copied.

View File

@ -1,77 +0,0 @@
/**
* AMQP.h
*
* Starting point for all includes of the Copernica AMQP library
*
* @documentation public
*/
#pragma once
// base C++ include files
#include <vector>
#include <string>
#include <memory>
#include <map>
#include <unordered_map>
#include <queue>
#include <limits>
#include <cstddef>
#include <cstring>
#include <stdexcept>
#include <utility>
#include <iostream>
#include <algorithm>
#include <functional>
// base C include files
#include <stdint.h>
#include <math.h>
// forward declarations
#include <amqpcpp/classes.h>
// utility classes
#include <amqpcpp/endian.h>
#include <amqpcpp/buffer.h>
#include <amqpcpp/bytebuffer.h>
#include <amqpcpp/receivedframe.h>
#include <amqpcpp/outbuffer.h>
#include <amqpcpp/watchable.h>
#include <amqpcpp/monitor.h>
// amqp types
#include <amqpcpp/field.h>
#include <amqpcpp/numericfield.h>
#include <amqpcpp/decimalfield.h>
#include <amqpcpp/stringfield.h>
#include <amqpcpp/booleanset.h>
#include <amqpcpp/fieldproxy.h>
#include <amqpcpp/table.h>
#include <amqpcpp/array.h>
// envelope for publishing and consuming
#include <amqpcpp/metadata.h>
#include <amqpcpp/envelope.h>
#include <amqpcpp/message.h>
// mid level includes
#include <amqpcpp/exchangetype.h>
#include <amqpcpp/flags.h>
#include <amqpcpp/callbacks.h>
#include <amqpcpp/deferred.h>
#include <amqpcpp/deferredconsumer.h>
#include <amqpcpp/deferredqueue.h>
#include <amqpcpp/deferreddelete.h>
#include <amqpcpp/deferredcancel.h>
#include <amqpcpp/deferredget.h>
#include <amqpcpp/channelimpl.h>
#include <amqpcpp/channel.h>
#include <amqpcpp/login.h>
#include <amqpcpp/address.h>
#include <amqpcpp/connectionhandler.h>
#include <amqpcpp/connectionimpl.h>
#include <amqpcpp/connection.h>
#include <amqpcpp/tcphandler.h>
#include <amqpcpp/tcpconnection.h>
#include <amqpcpp/tcpchannel.h>

19
appveyor.yml Normal file
View File

@ -0,0 +1,19 @@
version: '1.0.{build}'
image: Visual Studio 2017
platform:
- x64
configuration:
- Release
- Debug
install:
- git submodule update --init --recursive
before_build:
- cmake -G "Visual Studio 15 2017 Win64" .
build:
project: $(APPVEYOR_BUILD_FOLDER)\amqpcpp.sln

View File

@ -1,54 +0,0 @@
add_sources(
address.h
addresses.h
array.h
booleanset.h
buffer.h
bytebuffer.h
callbacks.h
channel.h
channelimpl.h
classes.h
connection.h
connectionhandler.h
connectionimpl.h
copiedbuffer.h
decimalfield.h
deferred.h
deferredcancel.h
deferredconsumer.h
deferredconsumerbase.h
deferreddelete.h
deferredget.h
deferredqueue.h
endian.h
entityimpl.h
envelope.h
exception.h
exchangetype.h
field.h
fieldproxy.h
flags.h
frame.h
libboostasio.h
libev.h
libevent.h
libuv.h
login.h
message.h
metadata.h
monitor.h
numericfield.h
outbuffer.h
protocolexception.h
receivedframe.h
stack_ptr.h
stringfield.h
table.h
tcpchannel.h
tcpconnection.h
tcpdefines.h
tcphandler.h
watchable.h
)

79
include/amqpcpp.h Normal file
View File

@ -0,0 +1,79 @@
/**
* AMQP.h
*
* Starting point for all includes of the Copernica AMQP library
*
* @documentation public
*/
#pragma once
// base C++ include files
#include <vector>
#include <string>
#include <memory>
#include <map>
#include <unordered_map>
#include <queue>
#include <limits>
#include <cstddef>
#include <cstring>
#include <stdexcept>
#include <utility>
#include <iostream>
#include <algorithm>
#include <functional>
// base C include files
#include <stdint.h>
#include <math.h>
// fix strcasecmp on non linux platforms
#if (defined(_WIN16) || defined(_WIN32) || defined(_WIN64) || defined(__WINDOWS__)) && !defined(__CYGWIN__)
#define strcasecmp _stricmp
#endif
// forward declarations
#include "amqpcpp/classes.h"
// utility classes
#include "amqpcpp/endian.h"
#include "amqpcpp/buffer.h"
#include "amqpcpp/bytebuffer.h"
#include "amqpcpp/receivedframe.h"
#include "amqpcpp/outbuffer.h"
#include "amqpcpp/watchable.h"
#include "amqpcpp/monitor.h"
// amqp types
#include "amqpcpp/field.h"
#include "amqpcpp/numericfield.h"
#include "amqpcpp/decimalfield.h"
#include "amqpcpp/stringfield.h"
#include "amqpcpp/booleanset.h"
#include "amqpcpp/fieldproxy.h"
#include "amqpcpp/table.h"
#include "amqpcpp/array.h"
// envelope for publishing and consuming
#include "amqpcpp/metadata.h"
#include "amqpcpp/envelope.h"
#include "amqpcpp/message.h"
// mid level includes
#include "amqpcpp/exchangetype.h"
#include "amqpcpp/flags.h"
#include "amqpcpp/callbacks.h"
#include "amqpcpp/deferred.h"
#include "amqpcpp/deferredconsumer.h"
#include "amqpcpp/deferredqueue.h"
#include "amqpcpp/deferreddelete.h"
#include "amqpcpp/deferredcancel.h"
#include "amqpcpp/deferredget.h"
#include "amqpcpp/channelimpl.h"
#include "amqpcpp/channel.h"
#include "amqpcpp/login.h"
#include "amqpcpp/address.h"
#include "amqpcpp/connectionhandler.h"
#include "amqpcpp/connectionimpl.h"
#include "amqpcpp/connection.h"

View File

@ -72,7 +72,7 @@
#define be32toh(x) ntohl(x) #define be32toh(x) ntohl(x)
#define le32toh(x) (x) #define le32toh(x) (x)
#define htobe64(x) htonll(x) #define htobe64(x) ((1==htonl(1)) ? (x) : ((uint64_t)htonl((x) & 0xFFFFFFFF) << 32) | htonl((x) >> 32))
#define htole64(x) (x) #define htole64(x) (x)
#define be64toh(x) ntohll(x) #define be64toh(x) ntohll(x)
#define le64toh(x) (x) #define le64toh(x) (x)

View File

@ -0,0 +1,3 @@
#include "linux_tcp/tcphandler.h"
#include "linux_tcp/tcpconnection.h"
#include "linux_tcp/tcpchannel.h"

View File

@ -21,6 +21,7 @@
#include "envelope.h" #include "envelope.h"
#include <limits> #include <limits>
#include <stdexcept> #include <stdexcept>
#include <algorithm>
/** /**
* Set up namespace * Set up namespace
@ -93,10 +94,10 @@ protected:
size = std::min(size, _bodySize - _filled); size = std::min(size, _bodySize - _filled);
// append more data // append more data
memcpy(_body + _filled, buffer, size); memcpy(_body + _filled, buffer, (size_t)size);
// update filled data // update filled data
_filled += size; _filled += (size_t)size;
} }
else if (size >= _bodySize) else if (size >= _bodySize)
{ {
@ -107,16 +108,16 @@ protected:
else else
{ {
// allocate the buffer // allocate the buffer
_body = (char *)malloc(_bodySize); _body = (char *)malloc((size_t)_bodySize);
// remember that the buffer was allocated, so that the destructor can get rid of it // remember that the buffer was allocated, so that the destructor can get rid of it
_allocated = true; _allocated = true;
// append more data // append more data
memcpy(_body, buffer, std::min(size, _bodySize)); memcpy(_body, buffer, std::min((size_t)size, (size_t)_bodySize));
// update filled data // update filled data
_filled = std::min(size, _bodySize); _filled = std::min((size_t)size, (size_t)_bodySize);
} }
// check if we're done // check if we're done

View File

@ -302,20 +302,20 @@ public:
// the result (2 for the two boolean sets) // the result (2 for the two boolean sets)
uint32_t result = 2; uint32_t result = 2;
if (hasExpiration()) result += _expiration.size(); if (hasExpiration()) result += (uint32_t)_expiration.size();
if (hasReplyTo()) result += _replyTo.size(); if (hasReplyTo()) result += (uint32_t)_replyTo.size();
if (hasCorrelationID()) result += _correlationID.size(); if (hasCorrelationID()) result += (uint32_t)_correlationID.size();
if (hasPriority()) result += _priority.size(); if (hasPriority()) result += (uint32_t)_priority.size();
if (hasDeliveryMode()) result += _deliveryMode.size(); if (hasDeliveryMode()) result += (uint32_t)_deliveryMode.size();
if (hasHeaders()) result += _headers.size(); if (hasHeaders()) result += (uint32_t)_headers.size();
if (hasContentEncoding()) result += _contentEncoding.size(); if (hasContentEncoding()) result += (uint32_t)_contentEncoding.size();
if (hasContentType()) result += _contentType.size(); if (hasContentType()) result += (uint32_t)_contentType.size();
if (hasClusterID()) result += _clusterID.size(); if (hasClusterID()) result += (uint32_t)_clusterID.size();
if (hasAppID()) result += _appID.size(); if (hasAppID()) result += (uint32_t)_appID.size();
if (hasUserID()) result += _userID.size(); if (hasUserID()) result += (uint32_t)_userID.size();
if (hasTypeName()) result += _typeName.size(); if (hasTypeName()) result += (uint32_t)_typeName.size();
if (hasTimestamp()) result += _timestamp.size(); if (hasTimestamp()) result += (uint32_t)_timestamp.size();
if (hasMessageID()) result += _messageID.size(); if (hasMessageID()) result += (uint32_t)_messageID.size();
// done // done
return result; return result;

View File

@ -42,6 +42,8 @@ private:
T _value; T _value;
public: public:
using Type = T;
/** /**
* Default constructor, assign 0 * Default constructor, assign 0
*/ */
@ -116,14 +118,14 @@ public:
* Get the value * Get the value
* @return mixed * @return mixed
*/ */
operator uint8_t () const override { return _value; } operator uint8_t () const override { return (uint8_t)_value; }
operator uint16_t() const override { return _value; } operator uint16_t() const override { return (uint16_t)_value; }
operator uint32_t() const override { return _value; } operator uint32_t() const override { return (uint32_t)_value; }
operator uint64_t() const override { return _value; } operator uint64_t() const override { return (uint64_t)_value; }
operator int8_t () const override { return _value; } operator int8_t () const override { return (int8_t)_value; }
operator int16_t () const override { return _value; } operator int16_t () const override { return (int16_t)_value; }
operator int32_t () const override { return _value; } operator int32_t () const override { return (int32_t)_value; }
operator int64_t () const override { return _value; } operator int64_t () const override { return (int64_t)_value; }
/** /**
* Get the value * Get the value
@ -213,4 +215,3 @@ typedef NumericField<double, 'd'> Double;
* end namespace * end namespace
*/ */
} }

View File

@ -119,7 +119,7 @@ public:
virtual size_t size() const override virtual size_t size() const override
{ {
// find out size of the size parameter // find out size of the size parameter
T size(_data.size()); T size((typename T::Type)_data.size());
// size of the uint8 or uint32 + the actual string size // size of the uint8 or uint32 + the actual string size
return size.size() + _data.size(); return size.size() + _data.size();
@ -160,7 +160,7 @@ public:
virtual void fill(OutBuffer& buffer) const override virtual void fill(OutBuffer& buffer) const override
{ {
// create size // create size
T size(_data.size()); T size((typename T::Type)_data.size());
// first, write down the size of the string // first, write down the size of the string
size.fill(buffer); size.fill(buffer);
@ -210,4 +210,3 @@ typedef StringField<ULong, 'S'> LongString;
* end namespace * end namespace
*/ */
} }

View File

@ -1,55 +0,0 @@
# Version
cmake_minimum_required(VERSION 2.6.3)
set(CXX_NORM_CXX98 1) # C++98
set(CXX_NORM_CXX03 2) # C++03
set(CXX_NORM_CXX11 3) # C++11
# - Set the wanted C++ norm
# Adds the good argument to the command line in function of the compiler
# Currently only works with g++ and clang++
macro(set_cxx_norm NORM)
# Extract c++ compiler --version output
exec_program(
${CMAKE_CXX_COMPILER}
ARGS --version
OUTPUT_VARIABLE _compiler_output
)
# Keep only the first line
string(REGEX REPLACE
"(\n.*$)"
""
cxx_compiler_version "${_compiler_output}"
)
# Extract the version number
string(REGEX REPLACE
"([^0-9.])|([0-9.][^0-9.])"
""
cxx_compiler_version "${cxx_compiler_version}"
)
if(CMAKE_COMPILER_IS_GNUCXX)
if(${NORM} EQUAL ${CXX_NORM_CXX98})
add_definitions("-std=c++98")
elseif(${NORM} EQUAL ${CXX_NORM_CXX03})
add_definitions("-std=c++03")
elseif(${NORM} EQUAL ${CXX_NORM_CXX11})
if(${cxx_compiler_version} VERSION_LESS "4.7.0")
add_definitions("-std=c++0x")
else()
add_definitions("-std=c++11")
endif()
endif()
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
if(${NORM} EQUAL ${CXX_NORM_CXX11})
add_definitions("-std=c++11")
endif()
endif()
endmacro()

View File

@ -1,100 +1,14 @@
add_sources( add_sources(
addressinfo.h array.cpp
array.cpp channelimpl.cpp
basicackframe.h connectionimpl.cpp
basiccancelframe.h deferredcancel.cpp
basiccancelokframe.h deferredconsumer.cpp
basicconsumeframe.h deferredconsumerbase.cpp
basicconsumeokframe.h deferredget.cpp
basicdeliverframe.h field.cpp
basicframe.h flags.cpp
basicgetemptyframe.h receivedframe.cpp
basicgetframe.h table.cpp
basicgetokframe.h watchable.cpp
basicheaderframe.h
basicnackframe.h
basicpublishframe.h
basicqosframe.h
basicqosokframe.h
basicrecoverasyncframe.h
basicrecoverframe.h
basicrecoverokframe.h
basicrejectframe.h
basicreturnframe.h
bodyframe.h
channelcloseframe.h
channelcloseokframe.h
channelflowframe.h
channelflowokframe.h
channelframe.h
channelimpl.cpp
channelopenframe.h
channelopenokframe.h
connectioncloseframe.h
connectioncloseokframe.h
connectionframe.h
connectionimpl.cpp
connectionopenframe.h
connectionopenokframe.h
connectionsecureframe.h
connectionsecureokframe.h
connectionstartframe.h
connectionstartokframe.h
connectiontuneframe.h
connectiontuneokframe.h
consumedmessage.h
deferredcancel.cpp
deferredconsumer.cpp
deferredconsumerbase.cpp
deferredget.cpp
exchangebindframe.h
exchangebindokframe.h
exchangedeclareframe.h
exchangedeclareokframe.h
exchangedeleteframe.h
exchangedeleteokframe.h
exchangeframe.h
exchangeunbindframe.h
exchangeunbindokframe.h
extframe.h
field.cpp
flags.cpp
framecheck.h
headerframe.h
heartbeatframe.h
includes.h
methodframe.h
passthroughbuffer.h
pipe.h
protocolheaderframe.h
queuebindframe.h
queuebindokframe.h
queuedeclareframe.h
queuedeclareokframe.h
queuedeleteframe.h
queuedeleteokframe.h
queueframe.h
queuepurgeframe.h
queuepurgeokframe.h
queueunbindframe.h
queueunbindokframe.h
receivedframe.cpp
reducedbuffer.h
returnedmessage.h
table.cpp
tcpclosed.h
tcpconnected.h
tcpconnection.cpp
tcpinbuffer.h
tcpoutbuffer.h
tcpresolver.h
tcpstate.h
transactioncommitframe.h
transactioncommitokframe.h
transactionframe.h
transactionrollbackframe.h
transactionrollbackokframe.h
transactionselectframe.h
transactionselectokframe.h
watchable.cpp
) )

View File

@ -1,11 +1,11 @@
CPP = g++ CPP = g++
RM = rm -f RM = rm -f
CPPFLAGS = -Wall -c -I. -std=c++11 -MD CPPFLAGS = -Wall -c -I../include -std=c++11 -MD
LD = g++ LD = g++
LD_FLAGS = -Wall -shared LD_FLAGS = -Wall -shared
SHARED_LIB = lib$(LIBRARY_NAME).so.$(VERSION) SHARED_LIB = lib$(LIBRARY_NAME).so.$(VERSION)
STATIC_LIB = lib$(LIBRARY_NAME).a.$(VERSION) STATIC_LIB = lib$(LIBRARY_NAME).a.$(VERSION)
SOURCES = $(wildcard *.cpp) SOURCES = $(wildcard *.cpp) $(wildcard linux_tcp/*.cpp)
SHARED_OBJECTS = $(SOURCES:%.cpp=%.o) SHARED_OBJECTS = $(SOURCES:%.cpp=%.o)
STATIC_OBJECTS = $(SOURCES:%.cpp=%.s.o) STATIC_OBJECTS = $(SOURCES:%.cpp=%.s.o)
DEPENDENCIES = $(SOURCES:%.cpp=%.d) DEPENDENCIES = $(SOURCES:%.cpp=%.d)
@ -53,4 +53,3 @@ ${SHARED_OBJECTS}:
${STATIC_OBJECTS}: ${STATIC_OBJECTS}:
${CPP} ${CPPFLAGS} -o $@ ${@:%.s.o=%.cpp} ${CPP} ${CPPFLAGS} -o $@ ${@:%.s.o=%.cpp}

View File

@ -29,7 +29,7 @@ Array::Array(ReceivedFrame &frame)
if (!field) continue; if (!field) continue;
// less bytes to read // less bytes to read
charsToRead -= field->size(); charsToRead -= (uint32_t)field->size();
// add the additional field // add the additional field
_fields.push_back(std::shared_ptr<Field>(field)); _fields.push_back(std::shared_ptr<Field>(field));
@ -76,7 +76,7 @@ const Field &Array::get(uint8_t index) const
*/ */
uint32_t Array::count() const uint32_t Array::count() const
{ {
return _fields.size(); return (uint32_t)_fields.size();
} }
/** /**

View File

@ -59,7 +59,7 @@ public:
* @param noWait whether to wait for a response. * @param noWait whether to wait for a response.
*/ */
BasicCancelFrame(uint16_t channel, const std::string& consumerTag, bool noWait = false) : BasicCancelFrame(uint16_t channel, const std::string& consumerTag, bool noWait = false) :
BasicFrame(channel, consumerTag.size() + 2), // 1 for extra string size, 1 for bool BasicFrame(channel, (uint32_t)(consumerTag.size() + 2)), // 1 for extra string size, 1 for bool
_consumerTag(consumerTag), _consumerTag(consumerTag),
_noWait(noWait) {} _noWait(noWait) {}

View File

@ -53,7 +53,7 @@ public:
* @param consumerTag holds the consumertag specified by client or server * @param consumerTag holds the consumertag specified by client or server
*/ */
BasicCancelOKFrame(uint16_t channel, std::string& consumerTag) : BasicCancelOKFrame(uint16_t channel, std::string& consumerTag) :
BasicFrame(channel, consumerTag.length() + 1), // add 1 byte for encoding the size of consumer tag BasicFrame(channel, (uint32_t)(consumerTag.length() + 1)), // add 1 byte for encoding the size of consumer tag
_consumerTag(consumerTag) _consumerTag(consumerTag)
{} {}

View File

@ -86,7 +86,7 @@ public:
* @param filter additional arguments * @param filter additional arguments
*/ */
BasicConsumeFrame(uint16_t channel, const std::string& queueName, const std::string& consumerTag, bool noLocal = false, bool noAck = false, bool exclusive = false, bool noWait = false, const Table& filter = {}) : BasicConsumeFrame(uint16_t channel, const std::string& queueName, const std::string& consumerTag, bool noLocal = false, bool noAck = false, bool exclusive = false, bool noWait = false, const Table& filter = {}) :
BasicFrame(channel, (queueName.length() + consumerTag.length() + 5 + filter.size())), // size of vars, +1 for each shortstring size, +1 for bools, +2 for deprecated value BasicFrame(channel, (uint32_t)(queueName.length() + consumerTag.length() + 5 + filter.size())), // size of vars, +1 for each shortstring size, +1 for bools, +2 for deprecated value
_queueName(queueName), _queueName(queueName),
_consumerTag(consumerTag), _consumerTag(consumerTag),
_bools(noLocal, noAck, exclusive, noWait), _bools(noLocal, noAck, exclusive, noWait),

View File

@ -43,7 +43,7 @@ public:
* @param consumerTag consumertag specified by client of provided by server * @param consumerTag consumertag specified by client of provided by server
*/ */
BasicConsumeOKFrame(uint16_t channel, const std::string& consumerTag) : BasicConsumeOKFrame(uint16_t channel, const std::string& consumerTag) :
BasicFrame(channel, consumerTag.length() + 1), // length of string + 1 for encoding of stringsize BasicFrame(channel, (uint32_t)(consumerTag.length() + 1)), // length of string + 1 for encoding of stringsize
_consumerTag(consumerTag) _consumerTag(consumerTag)
{} {}

View File

@ -13,9 +13,9 @@
* Dependencies * Dependencies
*/ */
#include "basicframe.h" #include "basicframe.h"
#include "../include/stringfield.h" #include "amqpcpp/stringfield.h"
#include "../include/booleanset.h" #include "amqpcpp/booleanset.h"
#include "../include/connectionimpl.h" #include "amqpcpp/connectionimpl.h"
/** /**
* Set up namespace * Set up namespace
@ -87,7 +87,7 @@ public:
* @param routingKey message routing key * @param routingKey message routing key
*/ */
BasicDeliverFrame(uint16_t channel, const std::string& consumerTag, uint64_t deliveryTag, bool redelivered = false, const std::string& exchange = "", const std::string& routingKey = "") : BasicDeliverFrame(uint16_t channel, const std::string& consumerTag, uint64_t deliveryTag, bool redelivered = false, const std::string& exchange = "", const std::string& routingKey = "") :
BasicFrame(channel, (consumerTag.length() + exchange.length() + routingKey.length() + 12)), BasicFrame(channel, (uint32_t)(consumerTag.length() + exchange.length() + routingKey.length() + 12)),
// length of strings + 1 byte per string for stringsize, 8 bytes for uint64_t and 1 for bools // length of strings + 1 byte per string for stringsize, 8 bytes for uint64_t and 1 for bools
_consumerTag(consumerTag), _consumerTag(consumerTag),
_deliveryTag(deliveryTag), _deliveryTag(deliveryTag),

View File

@ -59,7 +59,7 @@ public:
* @param noAck whether server expects acknowledgements for messages * @param noAck whether server expects acknowledgements for messages
*/ */
BasicGetFrame(uint16_t channel, const std::string& queue, bool noAck = false) : BasicGetFrame(uint16_t channel, const std::string& queue, bool noAck = false) :
BasicFrame(channel, queue.length() + 4), // 1 for bool, 1 for string size, 2 for deprecated field BasicFrame(channel, (uint32_t)(queue.length() + 4)), // 1 for bool, 1 for string size, 2 for deprecated field
_queue(queue), _queue(queue),
_noAck(noAck) _noAck(noAck)
{} {}

View File

@ -76,7 +76,7 @@ public:
* @param messageCount number of messages in the queue * @param messageCount number of messages in the queue
*/ */
BasicGetOKFrame(uint16_t channel, uint64_t deliveryTag, bool redelivered, const std::string& exchange, const std::string& routingKey, uint32_t messageCount) : BasicGetOKFrame(uint16_t channel, uint64_t deliveryTag, bool redelivered, const std::string& exchange, const std::string& routingKey, uint32_t messageCount) :
BasicFrame(channel, (exchange.length() + routingKey.length() + 15)), // string length, +1 for each shortsrting length + 8 (uint64_t) + 4 (uint32_t) + 1 (bool) BasicFrame(channel, (uint32_t)(exchange.length() + routingKey.length() + 15)), // string length, +1 for each shortsrting length + 8 (uint64_t) + 4 (uint32_t) + 1 (bool)
_deliveryTag(deliveryTag), _deliveryTag(deliveryTag),
_redelivered(redelivered), _redelivered(redelivered),
_exchange(exchange), _exchange(exchange),

View File

@ -13,10 +13,10 @@
* Dependencies * Dependencies
*/ */
#include "headerframe.h" #include "headerframe.h"
#include "../include/metadata.h" #include "amqpcpp/metadata.h"
#include "../include/envelope.h" #include "amqpcpp/envelope.h"
#include "../include/connectionimpl.h" #include "amqpcpp/connectionimpl.h"
#include "../include/deferredconsumerbase.h" #include "amqpcpp/deferredconsumerbase.h"
/** /**
* Set up namespace * Set up namespace

View File

@ -70,7 +70,7 @@ public:
* @param immediate request immediate delivery @default = false * @param immediate request immediate delivery @default = false
*/ */
BasicPublishFrame(uint16_t channel, const std::string& exchange = "", const std::string& routingKey = "", bool mandatory = false, bool immediate = false) : BasicPublishFrame(uint16_t channel, const std::string& exchange = "", const std::string& routingKey = "", bool mandatory = false, bool immediate = false) :
BasicFrame(channel, exchange.length() + routingKey.length() + 5), // 1 extra per string (for the size), 1 for bools, 2 for deprecated field BasicFrame(channel, (uint32_t)(exchange.length() + routingKey.length() + 5)), // 1 extra per string (for the size), 1 for bools, 2 for deprecated field
_exchange(exchange), _exchange(exchange),
_routingKey(routingKey), _routingKey(routingKey),
_bools(mandatory, immediate) _bools(mandatory, immediate)

View File

@ -67,7 +67,7 @@ public:
* @param routingKey message routing key * @param routingKey message routing key
*/ */
BasicReturnFrame(uint16_t channel, int16_t replyCode, const std::string& replyText = "", const std::string& exchange = "", const std::string& routingKey = "") : BasicReturnFrame(uint16_t channel, int16_t replyCode, const std::string& replyText = "", const std::string& exchange = "", const std::string& routingKey = "") :
BasicFrame(channel, replyText.length() + exchange.length() + routingKey.length() + 5), // 3 for each string (extra size byte), 2 for uint16_t BasicFrame(channel, (uint32_t)(replyText.length() + exchange.length() + routingKey.length() + 5)), // 3 for each string (extra size byte), 2 for uint16_t
_replyCode(replyCode), _replyCode(replyCode),
_replyText(replyText), _replyText(replyText),
_exchange(exchange), _exchange(exchange),

View File

@ -13,8 +13,8 @@
* Dependencies * Dependencies
*/ */
#include "extframe.h" #include "extframe.h"
#include "../include/connectionimpl.h" #include "amqpcpp/connectionimpl.h"
#include "../include/deferredconsumerbase.h" #include "amqpcpp/deferredconsumerbase.h"
/** /**
* Set up namespace * Set up namespace

View File

@ -82,7 +82,7 @@ public:
* @param failingMethod failing method id if applicable * @param failingMethod failing method id if applicable
*/ */
ChannelCloseFrame(uint16_t channel, uint16_t code = 0, const std::string& text = "", uint16_t failingClass = 0, uint16_t failingMethod = 0) : ChannelCloseFrame(uint16_t channel, uint16_t code = 0, const std::string& text = "", uint16_t failingClass = 0, uint16_t failingMethod = 0) :
ChannelFrame(channel, (text.length() + 7)), // sizeof code, failingclass, failingmethod (2byte + 2byte + 2byte) + text length + text length byte ChannelFrame(channel, (uint32_t)(text.length() + 7)), // sizeof code, failingclass, failingmethod (2byte + 2byte + 2byte) + text length + text length byte
_code(code), _code(code),
_text(text), _text(text),
_failingClass(failingClass), _failingClass(failingClass),

View File

@ -481,7 +481,7 @@ bool ChannelImpl::publish(const std::string &exchange, const std::string &routin
uint64_t chunksize = std::min(static_cast<uint64_t>(maxpayload), bytesleft); uint64_t chunksize = std::min(static_cast<uint64_t>(maxpayload), bytesleft);
// send out a body frame // send out a body frame
if (!send(BodyFrame(_id, data + bytessent, chunksize))) return false; if (!send(BodyFrame(_id, data + bytessent, (uint32_t)chunksize))) return false;
// channel still valid? // channel still valid?
if (!monitor.valid()) return false; if (!monitor.valid()) return false;

View File

@ -82,7 +82,7 @@ public:
* @param failingMethod id of the failing method if applicable * @param failingMethod id of the failing method if applicable
*/ */
ConnectionCloseFrame(uint16_t code, const std::string &text, uint16_t failingClass = 0, uint16_t failingMethod = 0) : ConnectionCloseFrame(uint16_t code, const std::string &text, uint16_t failingClass = 0, uint16_t failingMethod = 0) :
ConnectionFrame(text.length() + 7), // 1 for extra string byte, 2 for each uint16 ConnectionFrame((uint32_t)(text.length() + 7)), // 1 for extra string byte, 2 for each uint16
_code(code), _code(code),
_text(text), _text(text),
_failingClass(failingClass), _failingClass(failingClass),

View File

@ -125,7 +125,7 @@ uint64_t ConnectionImpl::parse(const Buffer &buffer)
try try
{ {
// try to recognize the frame // try to recognize the frame
ReducedBuffer reduced_buf(buffer, processed); ReducedBuffer reduced_buf(buffer, (size_t)processed);
ReceivedFrame receivedFrame(reduced_buf, _maxFrame); ReceivedFrame receivedFrame(reduced_buf, _maxFrame);
// do we have the full frame? // do we have the full frame?
@ -146,7 +146,7 @@ uint64_t ConnectionImpl::parse(const Buffer &buffer)
// have the initial bytes of the header, we already know how much // have the initial bytes of the header, we already know how much
// data we need for the next frame, otherwise we need at least 7 // data we need for the next frame, otherwise we need at least 7
// bytes for processing the header of the next frame // bytes for processing the header of the next frame
_expected = receivedFrame.header() ? receivedFrame.totalSize() : 7; _expected = receivedFrame.header() ? (uint32_t)receivedFrame.totalSize() : 7;
// we're ready for now // we're ready for now
return processed; return processed;

View File

@ -60,7 +60,7 @@ public:
* @param vhost name of virtual host to open * @param vhost name of virtual host to open
*/ */
ConnectionOpenFrame(const std::string &vhost) : ConnectionOpenFrame(const std::string &vhost) :
ConnectionFrame(vhost.length() + 3), // length of vhost + byte to encode this length + deprecated shortstring size + deprecated bool ConnectionFrame((uint32_t)(vhost.length() + 3)), // length of vhost + byte to encode this length + deprecated shortstring size + deprecated bool
_vhost(vhost), _vhost(vhost),
_deprecatedCapabilities(""), _deprecatedCapabilities(""),
_deprecatedInsist() _deprecatedInsist()

View File

@ -43,7 +43,7 @@ public:
* @param challenge the challenge * @param challenge the challenge
*/ */
ConnectionSecureFrame(const std::string& challenge) : ConnectionSecureFrame(const std::string& challenge) :
ConnectionFrame(challenge.length() + 4), // 4 for the length of the challenge (uint32_t) ConnectionFrame((uint32_t)(challenge.length() + 4)), // 4 for the length of the challenge (uint32_t)
_challenge(challenge) _challenge(challenge)
{} {}

View File

@ -43,7 +43,7 @@ public:
* @param response the challenge response * @param response the challenge response
*/ */
ConnectionSecureOKFrame(const std::string& response) : ConnectionSecureOKFrame(const std::string& response) :
ConnectionFrame(response.length() + 4), //response length + uint32_t for encoding the length ConnectionFrame((uint32_t)(response.length() + 4)), //response length + uint32_t for encoding the length
_response(response) _response(response)
{} {}

View File

@ -81,7 +81,7 @@ public:
* @param locales available locales * @param locales available locales
*/ */
ConnectionStartFrame(uint8_t major, uint8_t minor, const Table& properties, const std::string& mechanisms, const std::string& locales) : ConnectionStartFrame(uint8_t major, uint8_t minor, const Table& properties, const std::string& mechanisms, const std::string& locales) :
ConnectionFrame((properties.size() + mechanisms.length() + locales.length() + 10)), // 4 for each longstring (size-uint32), 2 major/minor ConnectionFrame((uint32_t)(properties.size() + mechanisms.length() + locales.length() + 10)), // 4 for each longstring (size-uint32), 2 major/minor
_major(major), _major(major),
_minor(minor), _minor(minor),
_properties(properties), _properties(properties),

View File

@ -82,7 +82,7 @@ public:
* @param locale selected locale. * @param locale selected locale.
*/ */
ConnectionStartOKFrame(const Table& properties, const std::string& mechanism, const std::string& response, const std::string& locale) : ConnectionStartOKFrame(const Table& properties, const std::string& mechanism, const std::string& response, const std::string& locale) :
ConnectionFrame((properties.size() + mechanism.length() + response.length() + locale.length() + 6)), // 1 byte extra per shortstring, 4 per longstring ConnectionFrame((uint32_t)(properties.size() + mechanism.length() + response.length() + locale.length() + 6)), // 1 byte extra per shortstring, 4 per longstring
_properties(properties), _properties(properties),
_mechanism(mechanism), _mechanism(mechanism),
_response(response), _response(response),

View File

@ -10,7 +10,7 @@
/** /**
* Dependencies * Dependencies
*/ */
#include "../include/deferredconsumerbase.h" #include "amqpcpp/deferredconsumerbase.h"
#include "basicdeliverframe.h" #include "basicdeliverframe.h"
#include "basicgetokframe.h" #include "basicgetokframe.h"
#include "basicheaderframe.h" #include "basicheaderframe.h"

View File

@ -95,7 +95,7 @@ public:
* @param arguments * @param arguments
*/ */
ExchangeBindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) : ExchangeBindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) :
ExchangeFrame(channel, (destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field
_destination(destination), _destination(destination),
_source(source), _source(source),
_routingKey(routingKey), _routingKey(routingKey),

View File

@ -81,7 +81,7 @@ public:
* @param arguments additional arguments * @param arguments additional arguments
*/ */
ExchangeDeclareFrame(uint16_t channel, const std::string& name, const std::string& type, bool passive, bool durable, bool noWait, const Table& arguments) : ExchangeDeclareFrame(uint16_t channel, const std::string& name, const std::string& type, bool passive, bool durable, bool noWait, const Table& arguments) :
ExchangeFrame(channel, (name.length() + type.length() + arguments.size() + 5)), // size of name, type and arguments + 1 (all booleans are stored in 1 byte) + 2 (deprecated short) + 2 (string sizes) ExchangeFrame(channel, (uint32_t)(name.length() + type.length() + arguments.size() + 5)), // size of name, type and arguments + 1 (all booleans are stored in 1 byte) + 2 (deprecated short) + 2 (string sizes)
_name(name), _name(name),
_type(type), _type(type),
_bools(passive, durable, false, false, noWait), _bools(passive, durable, false, false, noWait),

View File

@ -73,7 +73,7 @@ public:
* @param bool noWait Do not wait for a response * @param bool noWait Do not wait for a response
*/ */
ExchangeDeleteFrame(uint16_t channel, const std::string& name, bool ifUnused = false, bool noWait = false) : ExchangeDeleteFrame(uint16_t channel, const std::string& name, bool ifUnused = false, bool noWait = false) :
ExchangeFrame(channel, name.length() + 4), // length of the name, 1 byte for encoding this length, 1 for bools, 2 for deprecated short ExchangeFrame(channel, (uint32_t)(name.length() + 4)), // length of the name, 1 byte for encoding this length, 1 for bools, 2 for deprecated short
_name(name), _name(name),
_bools(ifUnused, noWait) _bools(ifUnused, noWait)
{} {}

View File

@ -95,7 +95,7 @@ public:
* @param arguments * @param arguments
*/ */
ExchangeUnbindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) : ExchangeUnbindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) :
ExchangeFrame(channel, (destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field
_destination(destination), _destination(destination),
_source(source), _source(source),
_routingKey(routingKey), _routingKey(routingKey),

View File

@ -19,8 +19,8 @@
/** /**
* Dependencies * Dependencies
*/ */
#include "../include/frame.h" #include "amqpcpp/frame.h"
#include "../include/receivedframe.h" #include "amqpcpp/receivedframe.h"
/** /**
* Set up namespace * Set up namespace

View File

@ -50,7 +50,7 @@ public:
virtual ~FrameCheck() virtual ~FrameCheck()
{ {
// update the number of bytes to skip // update the number of bytes to skip
_frame->_skip += _size; _frame->_skip += (uint32_t)_size;
} }
}; };

View File

@ -9,7 +9,7 @@
// c and c++ dependencies // c and c++ dependencies
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h> // TODO cstring
#include <stdint.h> #include <stdint.h>
#include <string> #include <string>
#include <memory> #include <memory>
@ -21,67 +21,69 @@
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <queue> #include <queue>
#include <sys/types.h>
#include <sys/socket.h> #include <sys/types.h> // TODO is this needed
#include <netdb.h>
#include <unistd.h>
#include <netinet/tcp.h>
#include <functional> #include <functional>
#include <stdexcept> #include <stdexcept>
// TODO make this nice
#ifdef _MSC_VER
//not #if defined(_WIN32) || defined(_WIN64) because we have strncasecmp in mingw
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#endif
// forward declarations // forward declarations
#include "../include/classes.h" #include "amqpcpp/classes.h"
// utility classes // utility classes
#include "../include/endian.h" #include "amqpcpp/endian.h"
#include "../include/buffer.h" #include "amqpcpp/buffer.h"
#include "../include/bytebuffer.h" #include "amqpcpp/bytebuffer.h"
#include "../include/receivedframe.h" #include "amqpcpp/receivedframe.h"
#include "../include/outbuffer.h" #include "amqpcpp/outbuffer.h"
#include "../include/copiedbuffer.h" #include "amqpcpp/copiedbuffer.h"
#include "../include/watchable.h" #include "amqpcpp/watchable.h"
#include "../include/monitor.h" #include "amqpcpp/monitor.h"
#include "../include/tcpdefines.h"
// amqp types // amqp types
#include "../include/field.h" #include "amqpcpp/field.h"
#include "../include/numericfield.h" #include "amqpcpp/numericfield.h"
#include "../include/decimalfield.h" #include "amqpcpp/decimalfield.h"
#include "../include/stringfield.h" #include "amqpcpp/stringfield.h"
#include "../include/booleanset.h" #include "amqpcpp/booleanset.h"
#include "../include/fieldproxy.h" #include "amqpcpp/fieldproxy.h"
#include "../include/table.h" #include "amqpcpp/table.h"
#include "../include/array.h" #include "amqpcpp/array.h"
// envelope for publishing and consuming // envelope for publishing and consuming
#include "../include/metadata.h" #include "amqpcpp/metadata.h"
#include "../include/envelope.h" #include "amqpcpp/envelope.h"
#include "../include/message.h" #include "amqpcpp/message.h"
// mid level includes // mid level includes
#include "../include/exchangetype.h" #include "amqpcpp/exchangetype.h"
#include "../include/flags.h" #include "amqpcpp/flags.h"
#include "../include/callbacks.h" #include "amqpcpp/callbacks.h"
#include "../include/deferred.h" #include "amqpcpp/deferred.h"
#include "../include/deferredconsumer.h" #include "amqpcpp/deferredconsumer.h"
#include "../include/deferredqueue.h" #include "amqpcpp/deferredqueue.h"
#include "../include/deferreddelete.h" #include "amqpcpp/deferreddelete.h"
#include "../include/deferredcancel.h" #include "amqpcpp/deferredcancel.h"
#include "../include/deferredget.h" #include "amqpcpp/deferredget.h"
#include "../include/channelimpl.h" #include "amqpcpp/channelimpl.h"
#include "../include/channel.h" #include "amqpcpp/channel.h"
#include "../include/login.h" #include "amqpcpp/login.h"
#include "../include/address.h" #include "amqpcpp/address.h"
#include "../include/connectionhandler.h" #include "amqpcpp/connectionhandler.h"
#include "../include/connectionimpl.h" #include "amqpcpp/connectionimpl.h"
#include "../include/connection.h" #include "amqpcpp/connection.h"
#include "../include/tcphandler.h"
#include "../include/tcpconnection.h"
// classes that are very commonly used // classes that are very commonly used
#include "../include/exception.h" #include "amqpcpp/exception.h"
#include "../include/protocolexception.h" #include "amqpcpp/protocolexception.h"
#include "../include/frame.h" #include "amqpcpp/frame.h"
#include "extframe.h" #include "extframe.h"
#include "methodframe.h" #include "methodframe.h"
#include "headerframe.h" #include "headerframe.h"
@ -91,6 +93,5 @@
#include "queueframe.h" #include "queueframe.h"
#include "basicframe.h" #include "basicframe.h"
#include "transactionframe.h" #include "transactionframe.h"
#include "addressinfo.h"

View File

@ -0,0 +1,3 @@
add_sources(
tcpconnection.cpp
)

27
src/linux_tcp/includes.h Normal file
View File

@ -0,0 +1,27 @@
/**
* Includes.h
*
* The includes that are necessary to compile the optional TCP part of the AMQP library
* This file also holds includes that may not be necessary for including the library
*
* @documentation private
*/
// include files from main library
#include "../includes.h"
// c and c++ dependencies
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <netinet/tcp.h>
// utility classes
#include "amqpcpp/linux_tcp/tcpdefines.h"
// mid level includes
#include "amqpcpp/linux_tcp/tcphandler.h"
#include "amqpcpp/linux_tcp/tcpconnection.h"
// classes that are very commonly used
#include "addressinfo.h"

Some files were not shown because too many files have changed in this diff Show More