Martijn Otto
b91e0589f6
Updated cmake lists and added include, closes issue #75
2016-06-28 14:14:07 +02:00
Martijn Otto
2f1851728c
Merge pull request #72 from XeCycle/fionread-solaris
...
Some portability fixes for Solaris-like systems
2016-06-27 10:57:24 +02:00
Martijn Otto
d911d71dfa
Removed the ugly typedef
2016-06-27 10:52:58 +02:00
javeme
5c3ba7b00a
Program crashes when receiving a message due to memory corruption
...
crashes due to the wrong way using aligned_storage.
Steps to reproduce:
1. Start a consumer
channel.consume(queue, tag).onMessage(msgCallback)
2. Send a message to the consumer
3. The program crashes
Environment:
Windows 7 / VS2010
The reason:
The Windows prompted to memory corruption, I found some strange phenomenon
about stack_ptr<Message>, such as:
1.sizeof(stack_ptr<Message>) is equal to 2
2.stack_ptr._initialized becomes true after construct() called (actually,
it never has been assigned true, please see [1])
Finally I found that the root cause was stack_ptr._data, we directly used
aligned_storage rather than aligned_storage::type[2] as the type of _data.
so the _data was just an empty struct, and subsequent operations were
performed in illegal memory. It eventually led to the crash.
This patch we fixed the bug and add "_initialized = true" at the end of the
method stack_ptr::construct().
[1] https://github.com/CopernicaMarketingSoftware/AMQP-CPP/blob/master/include/stack_ptr.h#L83
[2] http://www.cplusplus.com/reference/type_traits/aligned_storage/
2016-06-27 02:03:15 +08:00
Carl Lei
55aba43078
portability fix for pow overload resolution
...
On Solaris the compiler is missing the template overload.
2016-06-25 20:15:44 +08:00
Martijn Otto
ba6b3e2923
Copied the methods to both implementations so they can return their concrete type
2016-06-23 16:02:04 +02:00
Martijn Otto
2c60151d31
Only allocate a message and its data when a consumer wants to and allow consumers to receive the individual parts
2016-06-23 14:42:50 +02:00
Emiel Bruijntjes
24c8527b5d
added tcpinbuffer with much less allocation
2016-06-15 13:32:30 -04:00
Emiel Bruijntjes
6320e2ae0e
added consistent-hash exchange (same as pull request #68 )
2016-06-15 11:20:31 -04:00
Emiel Bruijntjes
59830c659c
added connection::maxFrame() and connection::expected() methods to give hints about the amount of data that the connection::parse() method ideally expects
2016-06-15 04:57:46 -04:00
Jan Westerdiep
7384b521ac
small legibility fixes
2016-06-10 15:21:10 +02:00
hoxnox
15fa529bfd
Bugfix: add missing include guards
2016-04-06 17:49:39 +03:00
Aljar Meesters
70a7565c4e
fixed bug when connection goes out of scope
2016-03-04 17:34:28 +01:00
Martijn Otto
89c2075a5f
Fix segfault when the handler is destructed from within a callback
2016-01-15 14:19:09 +01:00
Brent Dimmig
bbfcf76f39
add TcpHandler implementation for libevent
2016-01-09 16:03:42 -05:00
Martijn Otto
18bf111eec
fixed changing io events for libev
2016-01-04 16:53:22 +01:00
Toon Schoenmakers
09ad7b6cf4
How about we include libev before using the structs from libev?
2015-12-30 16:04:34 +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
57c1109115
added extra Table::set() methods
2015-11-28 17:30:02 +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
16a5104cd1
added include guard
2015-11-17 11:17:21 +01:00
Emiel Bruijntjes
3c6f909871
on second thought, should not be protected
2015-11-17 10:07:33 +01:00
Emiel Bruijntjes
1fc239f9fe
loop member is now protected (could be useful)
2015-11-17 10:06:26 +01:00
Emiel Bruijntjes
66d2173f86
added libev implementation for the Tcp handler, added libev example program
2015-11-17 09:33:28 +01:00
Toon Schoenmakers
c783ec7618
When building the address url, username and password should be split with a colon
2015-11-02 17:53:43 +01:00
Toon Schoenmakers
875300dbce
Exposed the channels method in the TcpConnection class and added a more specialized constructor to the Address class
2015-11-02 17:47:21 +01:00
Emiel Bruijntjes
b610ac5183
added TcpConnection::close() method
2015-11-01 12:20:12 +01:00
Emiel Bruijntjes
9e08c6932f
extra Address constructor added
2015-11-01 12:17:33 +01:00
Emiel Bruijntjes
6061d853c7
Merge pull request #44 from Kojoley/envelope-copyctor-fix
...
AMQP::Envelope copy constructor missing base class constructor call
2015-11-01 05:14:27 -05:00
Emiel Bruijntjes
34699cfcd3
fixed formatting
2015-11-01 11:10:01 +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
66ade94fc0
moved the #pragma once statement
2015-11-01 10:48:13 +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
Emiel Bruijntjes
d18fd082d2
use move semantics in Login class (small optimization)
2015-10-31 18:23:24 +01:00
Emiel Bruijntjes
fc5a053089
added "Address" class to parse "amqp://" urls
2015-10-31 18:22:41 +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
Nikita Kniazev
ca522a32a5
AMQP::Envelope copy constructor missing base class constructor call
2015-09-28 12:56:52 +03:00
Toon Schoenmakers
12af6e854a
Added a method to check how many channels a connection has
2015-09-10 14:33:25 +02:00
Toon Schoenmakers
a0d7063c4e
Fixed a few incorrect signatures in docblocks
2015-08-03 16:25:25 +02:00
Martijn Otto
db3613112e
Removed some macros for FreeBSD: Apparantly they are not needed. We might need to remove them for NetBSD and DragonFly as well
2015-07-01 09:48:56 +02:00
Martijn Otto
7a11c23f03
When a deferred handler is in error state, registering a finalize callback should also cause it to be called immediately
2015-06-12 16:48:25 +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