Commit Graph

166 Commits

Author SHA1 Message Date
Emiel Bruijntjes a091921e88 added connection::heartbeat() method, userspace programs are responsible for calling this method once every 60 seconds 2017-06-16 10:14:42 +01:00
Daan Mulder b2877434cf fix new bug in parsing amqp:// address where the default vhost was incorrectly overwritten 2017-05-11 13:59:07 +02:00
Emiel Bruijntjes 8501f19c0b fixed parsing amqp:// address 2017-05-04 15:51:23 +02:00
RafalGoslawski 5e895f3b9f Update CMakeLists.txt. fixes #123 2017-05-04 11:34:17 +02:00
Emiel Bruijntjes d7214d1373 added Addresses class to parse a comma separated list of addresses 2017-05-01 22:06:28 +02:00
Emiel Bruijntjes 2a249ae7ea fixed issue with parsing the password in a amqp:// string 2017-05-01 21:59:45 +02:00
Emiel Bruijntjes af6886be92 added comparison operators to Address and Login classes 2017-04-26 09:00:01 +02:00
Emiel Bruijntjes 6f6c98f453 fixed compile issue 2017-03-16 11:36:35 +01:00
Emiel Bruijntjes 0d9b4c8bba reinstalled channel methods that were removed to stay compatible with previous amqp-cpp release 2017-03-13 14:02:33 +01:00
Okke bdae991324 Moved header files to include/ because of broken header dependencies 2017-03-09 11:53:13 +01:00
Emiel Bruijntjes 71eba4c5d3 prevent copying of buffers 2017-03-09 09:25:26 +01:00
Emiel Bruijntjes 1f5f641d8b we now use passthrough buffers, so we no longer have to dynamically allocate a buffer for each and every outgoing message 2017-03-09 00:18:53 +01:00
Emiel Bruijntjes e59d0ff387 removed envelope::message() method because it is expensive 2017-03-08 14:23:05 +01:00
Emiel Bruijntjes 00b81949d3 the AMQP::Message and AMQP::Envelope objects can now longer be copied or moved, and the signatures for creating an envelope and publishing a message have been made much more strict. This could be a API breaking change, to the version number should be upped 2017-03-08 13:32:51 +01:00
Okke c6608cee0a Added even more debug code for the channelimpl class 2017-03-07 10:10:11 +01:00
Okke 055431de6e Fixed compilation issue due to recent changes in ChannelImpl 2017-03-03 12:56:54 +01:00
Emiel Bruijntjes d3c0ea293b better error message if channel is in an error state 2017-03-02 12:09:08 +01:00
Emiel Bruijntjes ed2ffd3f03 added method tcpconnection::flush() 2016-09-19 10:19:06 +02:00
Emiel Bruijntjes 5bb7b1a36f added const char * constructors to AMQP::Login class 2016-09-15 12:53:55 +02:00
Emiel Bruijntjes 173225071e we no longer use "emit" for method names, because it seems to conflict with the Qt library that uses emit as some sort of macro 2016-09-10 20:36:06 +02:00
Martijn Otto afb04a8f30 Re-introduced the casting operators with a note explaining why we need this. 2016-09-05 10:11:31 +02:00
theirix c6643062b6 Removed unneeded self-cast operators
They are not used and caused a lot of warnings
while compiling and using AMQP-CPP
2016-09-02 22:33:12 +03:00
Emiel Bruijntjes 383914c0c7 Merge pull request #80 from theirix/sigpipe-osx
Avoid SIGPIPE on OS X without MSG_NOSIGNAL
2016-07-27 05:09:44 -04:00
Martijn Otto 53dd7c74c5 Merge pull request #86 from ogapo/master
libuv drop in implementation for TcpHandler
2016-07-18 15:12:24 +02:00
David Nikdel fd69a4c01d map closed sockets to both read and write
- this is more consistent with libev so probably will match what existing code expects
2016-07-16 20:43:19 -04:00
David Nikdel 584d92e751 can't use struct elaboration with typedef 2016-07-16 20:30:03 -04:00
David Nikdel 1e1ec0c133 Update libuv.h
- if status is not ok, report that as readable
- no need to stop uv_poll_t before changing events according to the docs
2016-07-16 20:27:00 -04:00
javeme 4b7874c5b6 Implement copy constructor for class Monitor
To support the instance copy of Monitor like the following:
    AMQP::Monitor monitor(consumer);
    consumer->bindExchange(exchange, AMQP::direct).onSuccess([&, monitor](){
        // do something when the consumer is ready!
        if(monitor.valid())
            consumer->doSomething();
    });
2016-07-17 00:54:42 +08:00
David Nikdel b8d2c0c600 fix casting 2016-07-14 23:49:31 -04:00
David Nikdel 5042b699bd create libuv.h based on libev.h 2016-07-14 23:30:43 -04:00
theirix 66f2001c7b Avoid SIGPIPE on OS X without MSG_NOSIGNAL
OS X does not have Linux-specific option MSG_NOSIGNAL.
SIGPIPE can be avoided on OS X by using sockopt SO_NOSIGPIPE.
Credits: https://noahdesu.github.io/2014/01/16/port-sendmsg.html
2016-07-10 21:44:14 +03:00
David van Erkelens dddd16b74d Make sure single gets are processed correctly as well 2016-07-05 16:39:12 +02:00
Martijn Otto 5d741bfd2d Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP 2016-07-04 10:14:00 +02:00
Martijn Otto 5b40c04f2a Added documentation about missing RabbitMQ functionality 2016-07-04 10:13:50 +02:00
Martijn Otto c055b1a439 Merge pull request #77 from javeme/return-type-of-waiting
Correct the returning type of Connection::waiting()
2016-07-04 09:41:54 +02:00
javeme 5cff314d88 Correct the returning type of Connection::waiting()
The returning type of Connection::waiting() should be bool,
but currently it's size_t type.
2016-07-03 21:35:44 +08:00
Maksim Kuzevanov 1dcbc33b53 make it compile with cmake 2.8/gcc 4.7.3 2016-07-01 17:29:35 +03:00
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