Jerry Chen
2e350040b4
fix `std:max` type mismatch
...
env:
```
OS: Centos6.5 Linux 2.6.32-431.el6.i686
gcc: 4.8.2
```
make error:
```
g++ -Wall -c -I. -std=c++11 -g -fpic -o tcpconnection.o tcpconnection.cpp
In file included from tcpconnected.h:19:0,
from tcpresolver.h:22,
from tcpconnection.cpp:14:
tcpbuffer.h: In member function ‘ssize_t AMQP::TcpBuffer::receivefrom(int)’:
tcpbuffer.h:406:66: error: no matching function for call to ‘max(long int, int&)’
if (result < available) buffer.resize(std::max(0L, result));
^
tcpbuffer.h:406:66: note: candidates are:
In file included from /usr/local/include/c++/4.8.2/bits/char_traits.h:39:0,
from /usr/local/include/c++/4.8.2/string:40,
from includes.h:14,
from tcpconnection.cpp:13:
/usr/local/include/c++/4.8.2/bits/stl_algobase.h:216:5: note: template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)
max(const _Tp& __a, const _Tp& __b)
^
/usr/local/include/c++/4.8.2/bits/stl_algobase.h:216:5: note: template argument deduction/substitution failed:
In file included from tcpconnected.h:19:0,
from tcpresolver.h:22,
from tcpconnection.cpp:14:
tcpbuffer.h:406:66: note: deduced conflicting types for parameter ‘const _Tp’ (‘long int’ and ‘int’)
if (result < available) buffer.resize(std::max(0L, result));
^
...
```
2016-01-15 13:44:29 +08:00
Toon Schoenmakers
d6f6dba660
Better to set multiple socket flags at once
2015-12-22 15:02:37 +01:00
Emiel Bruijntjes
226ef47beb
socket connections have close-on-exit bit set
2015-12-14 20:20:03 +01:00
Emiel Bruijntjes
e2ce7103aa
disable the nagle algorithm to speed up write operations to the tcp connections (and dramatically improving write performance) fixes issue 50
2015-12-07 14:05:49 +01:00
Toon Schoenmakers
93a0b60b6e
clients can now intercept the heartbeat negotiation, and install a shorter of longer heartbeat interval, and clients can be notified for received heartbeat frames
2015-12-02 10:46:55 +01:00
Emiel Bruijntjes
9ec63a1869
Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP
2015-11-28 12:02:22 +01:00
Emiel Bruijntjes
155c989db5
added "override" keywords to overridden methods, fixed buffer overflow in setting up a connection
2015-11-28 11:38:15 +01:00
Emiel Bruijntjes
38e4b97eed
fixed that tcp connection ended up in an infinite loop when write operation failed because of broken pipe
2015-11-23 09:40:54 +01:00
Emiel Bruijntjes
08574bcf96
remove fpic from makefile
2015-11-17 13:08:38 +01:00
Emiel Bruijntjes
3ef9cf47b5
Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP
2015-11-10 15:29:37 +01:00
Emiel Bruijntjes
41b07672e0
fixed possible crash when connection was destructed while it was still busy resolving the domain name
2015-11-10 15:29:25 +01:00
Toon Schoenmakers
1aeb0ca530
if Connection::close() was called before the handshake was completed, the instructions that were sent in the middle were not sent to the server
2015-11-06 16:02:01 +01:00
Toon Schoenmakers
1cc86e79e8
fix detection of connections that are closed by the server
2015-11-06 15:17:41 +01:00
Emiel Bruijntjes
1370afee94
fix compile error
2015-11-04 13:10:05 +01:00
Emiel Bruijntjes
23fa396683
fix compile error
2015-11-04 13:06:28 +01:00
Emiel Bruijntjes
dcf0b3576b
fix issue when tcp is closed
2015-11-04 13:05:03 +01:00
Emiel Bruijntjes
bfdca4825a
added "make pure" option, to make the library without tcp support
2015-11-02 09:08:30 +01:00
Emiel Bruijntjes
89efd4670f
fix windows build
2015-11-01 11:11:51 +01:00
Emiel Bruijntjes
0e5024d38a
Merge pull request #47 from keenlogics/Heartbeat
...
The server heartbeat is stored in Connection
2015-11-01 05:03:02 -05:00
Emiel Bruijntjes
481b35ced5
Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP
2015-11-01 10:50:56 +01:00
Emiel Bruijntjes
d41423d5db
Added TcpChannel class so that Connection and Channel class are once again completely protocol agnostic
2015-11-01 09:51:43 +01:00
Emiel Bruijntjes
b4bd61580b
fixed to parsing incoming tcp data
2015-11-01 09:43:17 +01:00
Emiel Bruijntjes
df801953a1
improvements to work directly with tcp connections
2015-10-31 21:13:41 +01:00
Emiel Bruijntjes
189d6c9ef1
added Connection::waiting() method to find out if the connection object is waiting/expecting an answer from the rabbitmq server
2015-10-31 18:26:52 +01:00
Emiel Bruijntjes
f3955bcd51
implemented TcpConnection, so that users of the library do not have to setup their own tcp connections
2015-10-31 18:26:04 +01:00
Toon Schoenmakers
d79e0e7c7e
Added a static_fpic target so we can statically link this library into other libraries
...
Also got rid of the -flto, which is pretty useless in libraries anyway.
2015-10-30 14:29:55 +01:00
Sebastian Melinat
74a1a17553
During the handshake the heartbeat duration the server wants is stored in the connection so that clients can retrieve and use it for error detection
2015-10-21 15:26:53 +02:00
Jakub Stefanski
6782a7bfd4
Fix Windows build
...
Fixed windef.h shadowing of 'max' definition and added LEAN_AND_MEAN
definition for more lightweight build.
Added missing 'functional' includes.
2015-10-02 15:54:15 +02:00
Martijn Otto
b6c88febbd
Special treatment for Mac OS X: It uses a different parameter for setting the soname
2015-07-01 10:04:40 +02:00
RafalGoslawski
bcf77ea1c8
Add soname and release build traget, default make target is debug
2015-05-19 13:51:36 +02:00
Martijn Otto
a93b88697d
Fix double ready bug for channel, fixes #25
2015-05-18 10:56:50 +02:00
Martijn Otto
7ae4f9c5ff
Fixed a bug in the envelope, easy retrieval of field type and improved casting operators for numeric fields
2015-05-05 13:38:20 +02:00
Martijn Otto
fcc9522e16
Some bugfixes and performance enhancements
2015-04-30 14:18:18 +02:00
Martijn Otto
45deeaa754
Fixed a bug where a frame could be sent exceeding the maximum frame size (resulting in protocol errors) and added some optimizations
2015-04-30 10:59:03 +02:00
Martijn Otto
b9caf0199d
Received messages are now moved into the callback instead of provided as a const reference
2015-04-28 10:58:49 +02:00
Emiel Bruijntjes
ad3b95741e
various trics and changes so that windows compilers, and 32bit systems will not complain about stuff
2015-04-24 10:46:44 +02:00
Emiel Bruijntjes
3a4de6194c
removed symlinks from repository because not all systems (hello windows) understand them
2015-04-24 09:58:32 +02:00
Emiel Bruijntjes
f23dc72a4f
Fixed documentation, removed references to the ChannelHandler - an object that is no longer supported by AMQP-CPP
2015-01-26 14:47:30 +01:00
Emiel Bruijntjes
236dd02b13
fixed theoretical issue when deferredGet onSize() methods destructs the underlying channel object
2014-09-02 11:18:11 +02:00
Emiel Bruijntjes
9653578d4a
The Channel.get().onFinalize() function was called before the Channel.get().onSuccess() method, which is strange. This has been fixed. To fix this, we had to refactor the Deferred* into shared_ptrs
2014-09-02 10:32:55 +02:00
Emiel Bruijntjes
aceac8b677
the finalize callback is now called as part of the deferred object destructor, this ensures that the finalize callback will always be called
2014-08-29 13:18:08 +02:00
Emiel Bruijntjes
8759258a3e
Channel::get() and Channel::purgeQueue() methods always reported an error, even while there was no error
2014-08-29 13:16:05 +02:00
Emiel Bruijntjes
ebcdd71848
Added onSize() method to DeferredGet
2014-08-28 10:02:01 +02:00
Emiel Bruijntjes
c7b3f71f14
the connection.close function was only waiting for synchronous calls to complete, async calls that were waiting (after a synchronous) were still discarded, this has been fixed
2014-08-20 13:40:29 +02:00
Emiel Bruijntjes
d23e818f64
turns out that shared_from_this() can not be called from the constructor, so we made a special attach() function to postpone object initialization
2014-08-20 12:44:52 +02:00
Michael van der Werve
53b2bd9f0d
fixed typo in the connection implementation file
2014-08-20 12:03:15 +02:00
Emiel Bruijntjes
36734671cc
channel instructions that were given before the connection was fully initialized were immediately lost, if the connection was immediately closed
2014-08-20 11:59:05 +02:00
Emiel Bruijntjes
6997a70cf1
when a connection was closed, the commands already given to the channels were sometimes by-passed by the closing channel. This has been fixed. Also solved the problem that calls executed on channel objects that fall out of scope were not always completed
2014-08-20 11:47:16 +02:00
Emiel Bruijntjes
328820f898
renamed apple.h to endian.h because it turns out that it is also used for linux systems, and removed double implemented ChannelImpl::get() function
2014-08-14 15:25:44 +02:00
Emiel Bruijntjes
3e47191f90
fixed apple incompatibility
2014-08-14 15:19:08 +02:00