Commit Graph

250 Commits

Author SHA1 Message Date
Emiel Bruijntjes 1f3500cee8 breaking changes:
channel.publish() now returns a DeferredConsumer object on which callbacks can be installed for handling returned messages,
channel.get().onSize() has a different behavior: it now reports the message size (and no longer the queue size),
channel.get().onCount() has been added: it reports the queue size (this used to be the onSize() method),
channel.consume().onSize() method has been added to find out the size of the upcoming message
2018-03-01 21:12:53 +01:00
Emiel Bruijntjes f39df772d3 breaking changes:
channel.publish() now returns a DeferredConsumer object on which callbacks can be installed for handling returned messages,
channel.get().onSize() has a different behavior: it now reports the message size (and no longer the queue size),
channel.get().onCount() has been added: it reports the queue size (this used to be the onSize() method),
channel.consume().onSize() method has been added to find out the size of the upcoming message
2018-03-01 21:12:50 +01:00
Emiel Bruijntjes ef76876d67 refactored code to make room for a deferredpublisher class (which will also use the deferredreceiver base class) 2018-03-01 18:07:18 +01:00
Emiel Bruijntjes 520fe40201 refactored handling of incoming messages from consume and get operations, to prepare for future handling of returned messages and publisher confirms. this also implies a small change to the api: the begin-callback when a message is received now also gets the original exchange and routing key (which could be useful) 2018-03-01 17:34:27 +01:00
Emiel Bruijntjes 3ccc6af475 added deferredreceiver files (forgotter in prev commit) 2018-02-27 05:09:03 +01:00
Emiel Bruijntjes e0feb17ecc renamed deferredconsumerbase into deferredreceiver, because it is not only a base class for the consumer, but also for other receiving operations: get requests and in the future also for returned messages 2018-02-27 05:08:21 +01:00
Emiel Bruijntjes ec327de396 less conservative caching of outgoing data. This fixes #184 2018-02-07 10:08:32 +01:00
Emiel Bruijntjes f5540e9af2 fixed autodelete flag for declaring an exchange and added support for internal exchange. this fixes #183 2018-02-06 21:54:56 +01:00
zerodefect 4b2c423896 Build examples now with travis-ci to ensure new changes don't break existing code. Fixed warnings as a result of lambda captures. 2018-01-30 10:07:27 +00:00
Aart Stuurman f64b705c19 Merge branch 'clean-build' of https://github.com/surgura/AMQP-CPP into clean-build 2018-01-28 22:20:18 +01:00
Aart Stuurman dd6bbada96 Fix build error for Make where include files could not be found. Make now installs headers correctly. 2018-01-26 23:04:01 +01:00
Aart Stuurman d0bfa0bfc7 Updated Makefile to have same results as before the update. 2018-01-26 22:14:43 +01:00
Aart Stuurman f25efd2235 Merge https://github.com/CopernicaMarketingSoftware/AMQP-CPP into travis 2018-01-25 18:17:43 +01:00
Aart Stuurman 413af81635 Fixed unix compile error after previous commit. 2018-01-24 02:03:16 +01:00
Aart Stuurman cf7261add5 Reordered public include files so they are now in include/amqpcpp/. 2018-01-24 01:58:18 +01:00
Aart Stuurman b211fc7779 fixed 32 bit warnings. 2018-01-24 00:38:07 +01:00
Aart Stuurman 715b683867 restore ignore file for make. 2018-01-23 19:22:33 +01:00
Aart Stuurman 80850810d3 fixed compile error at linux_tcp 2018-01-23 19:17:49 +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
Aart Stuurman b1be2267f6 comments 2018-01-23 19:02:46 +01:00
Aart Stuurman 5701d28b2b added BUILD_TCP option to build the linux sockets implementation. 2018-01-23 18:49:59 +01:00
Emiel Bruijntjes 9935f8414b update copyright year when connection is established to rabbitmq 2018-01-23 17:17:21 +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
Emiel Bruijntjes f05aba0782 added TcpConnection::fileno() to expose the internal filedescriptor / socket 2017-12-12 17:10:51 +01:00
Emiel Bruijntjes 562703b1cf renamed major() and minor() methods of the ConnectionStartFrame class to fix warning from new gcc version that these function names are more or less reserved 2017-11-01 08:20:52 +01: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 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 061c462ee0 Set correct message length 2017-06-08 23:18:40 +02:00
Marcin Gibula a28ea01f0e Call ACK and NACK callbacks 2017-06-08 22:57:29 +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
Rafal Goslawski a976f5bea4 removed unneeded reference to endian.h. fixes #123 2017-05-04 15:15:51 +02:00
RafalGoslawski 5e895f3b9f Update CMakeLists.txt. fixes #123 2017-05-04 11:34:17 +02:00
Emiel Bruijntjes 16e2d21aa3 fixed issue that a tcp connection could crash if the user space code deconstructed a handler in a onClosed() handler 2017-04-26 15:33:17 +02: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 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 ed2ffd3f03 added method tcpconnection::flush() 2016-09-19 10:19:06 +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
theirix e6e70e69de Removed unneeded const qual 2016-09-02 22:44:11 +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
theirix fbe287c795 Build shared library with CMake
Added option BUILD_SHARED to build shared library instead of static.
2016-07-10 22:24:24 +03: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 ad9171f226 Changed writev to sendmsg to prevent SIGPIPE errors 2016-07-06 14:08:45 +02:00
Emiel Bruijntjes aad09a1dd2 work in progress to prevent SIGPIPE signals (this is going to fix #79) 2016-07-06 13:03:51 +02:00
David van Erkelens dddd16b74d Make sure single gets are processed correctly as well 2016-07-05 16:39:12 +02:00
Martijn Otto 979128782b Merge pull request #76 from maxim-ky/master
Made some destructors virtual and fixed a user-after-free bug
2016-07-04 09:38:31 +02:00
Maksim Kuzevanov e3b7e6abd6 fix undefined behaviour due to a reference to a destroyed temporary object 2016-07-01 17:29:40 +03: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 17693ef549 Correctly remove the dependency files on clean and fix frame errors on architectures where chars default to unsigned,
fixes issue #52
2016-07-01 16:00:44 +02: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
javeme 49eef84883 Bugfix: add missing include "includes.h" for deferredconsumerbase.cpp
When I compiled on the windows, there was a lot of errors like:
  error C2065: "xxx": undeclared identifier...
2016-06-27 00:37:31 +08:00
Carl Lei 6d71b73063 portability fix for FIONREAD on Solaris 2016-06-25 20:15:12 +08:00
Martijn Otto 434a0fad52 Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP 2016-06-23 14:43:10 +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 5e88fd3e75 fixed reallocation bug 2016-06-22 13:49:49 +02:00
Emiel Bruijntjes 3d9b5b444b fixed issues that caused reading data to be broken 2016-06-15 14:50:33 -04:00
Emiel Bruijntjes 99abd157e5 removed tcpbuffer and replaced it with a tcpoutbuffer 2016-06-15 13:41:14 -04:00
Emiel Bruijntjes bc01c82e80 added buffer 2016-06-15 13:32:40 -04: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 6e31cecdbd Buildfix: tcpconnection.cpp added to build sources 2016-03-27 22:17:40 +03:00
Emiel Bruijntjes 1681fd6072 Merge pull request #51 from indrekj/yosemite
Fix compiling on OS X Yosemite
2016-03-22 09:21:19 +01:00
Aljar Meesters 70a7565c4e fixed bug when connection goes out of scope 2016-03-04 17:34:28 +01:00
Emiel Bruijntjes a5e86d4b95 Merge pull request #55 from swordflychen/master
fix `std:max` type mismatch
2016-02-22 16:38:41 +01:00
Martijn Otto 89c2075a5f Fix segfault when the handler is destructed from within a callback 2016-01-15 14:19:09 +01:00
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
Indrek Juhkam 40687f3572 Include sys/uio.h to fix writev compile error on os x 2015-12-04 20:09:32 +02:00
Indrek Juhkam 767fb175b1 Provide an alternative to pipe2() on non-Linux systems 2015-12-04 19:38:24 +02: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