Commit Graph

250 Commits

Author SHA1 Message Date
Aart Stuurman cf7261add5 Reordered public include files so they are now in include/amqpcpp/. 2018-01-24 01:58:18 +01:00
Aart Stuurman 4c7a71e3a6 Fixed compile error on g++ caused by fixing warning. 2018-01-24 00:59:46 +01:00
Aart Stuurman b211fc7779 fixed 32 bit warnings. 2018-01-24 00:38:07 +01:00
Aart Stuurman 4072430fb3 Attempt to fix warning C4267 2018-01-24 00:19:55 +01:00
Steven Geddis d71040b2e5 fix bad opening comment block 2018-01-23 19:16:44 +01:00
Aart Stuurman 27f765b5f7 linux tcp is now opt-out instead of opt-in(to keep compatibility with the original lib). 2018-01-23 19:15:10 +01:00
Steven Geddis 4652a9cbdf libboostasio.h does not compile with clang-3.9 due to following error when compile if cpp17 preprocessor check: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]. Fix this by moving the bind away from preprocessor macro. Replace the STRAND_SOCKET_HANDLER, STRAND_TIMER_HANDLER macros with template functions. 2018-01-23 18:55:46 +01:00
Aart Stuurman 5701d28b2b added BUILD_TCP option to build the linux sockets implementation. 2018-01-23 18:49:59 +01:00
Aart Stuurman 001dfaa7e0 - Moved linux specific TCP implementation to a seperate folder and removed it from default build. Does not yet build correctly if you want that.
- Fixed conversion warnings from <some integer> type to uint32_t, which happens a lot around here. This is no functional change, just making it explicit so the compiler doesn't warn.
2018-01-23 16:47:53 +01:00
Alessandro Pischedda fd14790166 fix boost::placeholders undefined error and remain well explicited than use just '_1' or '_2' 2018-01-18 10:08:56 +01:00
Alessandro Pischedda 97124dc604
Fix compile
remove ?boost::placeholders::' .
2018-01-17 15:20:04 +01:00
Emiel Bruijntjes b25bd583a3 added operator< to AMQP::Address 2017-12-29 19:27:40 +01:00
Emiel Bruijntjes f05aba0782 added TcpConnection::fileno() to expose the internal filedescriptor / socket 2017-12-12 17:10:51 +01:00
Emiel Bruijntjes c63f62189e better docblocks so that future users will understand the difference between the callbacks for a consumer (mentioned in issue #156) 2017-11-21 16:45:05 +01:00
Emiel Bruijntjes 60466cc6bf Updated comment for Channel and TcpChannel constructors (to prevent issues like #154) 2017-11-17 11:38:54 +01:00
Emiel Bruijntjes d75ae2ebe1 fix compile issue because comma was missing 2017-10-24 12:54:29 +02:00
zerodefect 034e72bbc2 Added example/test application to demonstrate boost asio io_service handler. 2017-10-23 11:40:49 +01:00
zerodefect 5410f1abdd Replaced tabs with spaces in LibBoostAsioHandler 2017-10-19 16:14:21 +01:00
zerodefect cdd9918e6a Cleaned up docs/comments in LibBoostAsioHandler 2017-10-19 16:06:41 +01:00
zerodefect a9daf7e769 Added strand to LibBoostAsioHandler.h to ensure that 1 thread goes through the 'gate' (from the io_service set of threads) at any one time. 2017-10-19 15:59:40 +01:00
zerodefect 12ffe885c1 Cleaned up existing boost handler. There were a few bits that needed tidying up. 2017-10-19 14:44:29 +01:00
zerodefect e3e0c6da19 Added timer boost asio event handler to perform health checks. 2017-10-13 09:26:32 +01:00
zerodefect d1b2139af0 Cleaned up the handler upon conducting some additional testing. 2017-10-12 17:11:38 +01:00
zerodefect e9cb9fbe92 Renamed libboostasio.hpp to libboostasio.h. Added header to copied files as part of install. 2017-10-12 11:41:41 +01:00
zerodefect 204b68401e Added boost asio TCP handler for use on POSIX-based systems 2017-10-12 11:22:47 +01:00
Emiel Bruijntjes 27ac6aeea5 added operator<< to write a amqp address to a stream 2017-06-21 09:44:52 +02:00
Emiel Bruijntjes acd6698db3 the libev timer no longer takes ownership over the event loop 2017-06-21 09:35:48 +02:00
Emiel Bruijntjes 49337d078d heartbeats will now only be sent if the connection is idle 2017-06-19 10:24:03 +02:00
Emiel Bruijntjes fda26f20f4 update the readme, heartbeats are now disabled by default, only the libev implementation has enabled them, resolves #137 2017-06-16 11:17:13 +01:00
Emiel Bruijntjes 90d9946474 implemented heartbeats for libev 2017-06-16 10:36:34 +01:00
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
Marcin Gibula 3ab9eed268 Simplify message counter logic 2017-06-08 23:41:55 +02:00
Marcin Gibula f0712cfdc2 Add ACK and NACK callbacks to Channel 2017-06-08 22:50:45 +02:00
Marcin Gibula 30e652c669 Add Channel::setConfirmMode() and Channel::messageCounter() methods 2017-06-08 22:19:55 +02:00
Marcin Gibula c7a12d22c1 Add confirm.select and confirm.select-ok frames 2017-06-08 22:00:28 +02: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
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