Commit Graph

399 Commits

Author SHA1 Message Date
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
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
Emiel Bruijntjes 271cc39c17 whitespace change 2014-08-13 16:43:59 +02:00
Emiel Bruijntjes 5bc7b4b5b3 added destructor of ReducedBuffer 2014-08-13 15:02:54 +02:00
Emiel Bruijntjes 945a01f659 The Connection::parse() method can now also be called with a buffer object, which allows the user to implement the buffer much more efficiently: it no longer has to be an array 2014-08-13 13:01:27 +02:00
Richard Hodges d2a84b5f8d build - added new source files to CMakeLists 2014-08-07 11:09:02 +01:00
Emiel Bruijntjes a8ff6de550 fixed bug in channel.get() calls 2014-08-07 11:00:06 +01:00
Emiel Bruijntjes 37a51cdc7b basic.get is asynchronous until the entire body has been received, only then subsequent messages are sent + first work in progress on implementing smarter buffers 2014-08-07 11:00:06 +01:00
Emiel Bruijntjes dca76db2f0 empty messages could not be consumed or get, this has now been fixed 2014-08-07 11:00:06 +01:00
Emiel Bruijntjes bcbe50e22c basic.get callbacks only have to be installed for a single message, so we uninstall it right after the message was handled 2014-08-07 11:00:06 +01:00
Emiel Bruijntjes b4270f39bc added Channel::get() that allows one to retrieve a single message from the channel 2014-08-07 11:00:06 +01:00
Emiel Bruijntjes f905c9db49 Quality of service now supports "global" parameter (default is still false) 2014-08-07 11:00:05 +01:00
Emiel Bruijntjes d99b117a60 fixed bug in channel.get() calls 2014-08-04 13:44:17 +02:00
Emiel Bruijntjes e299aa5fac basic.get is asynchronous until the entire body has been received, only then subsequent messages are sent + first work in progress on implementing smarter buffers 2014-08-01 11:55:07 +02:00
Emiel Bruijntjes b97222c4db empty messages could not be consumed or get, this has now been fixed 2014-08-01 10:37:18 +02:00
Emiel Bruijntjes 7956d706fb basic.get callbacks only have to be installed for a single message, so we uninstall it right after the message was handled 2014-08-01 10:05:02 +02:00
Emiel Bruijntjes 42514e80db Merge branch 'master' of https://github.com/CopernicaMarketingSoftware/AMQP-CPP 2014-07-31 13:11:30 +02:00
Emiel Bruijntjes f39410039b added Channel::get() that allows one to retrieve a single message from the channel 2014-07-31 12:58:13 +02:00
Martijn Otto f2f241665f Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP 2014-07-31 10:17:15 +02:00
Martijn Otto 98aba8f638 Fix for issue #12 2014-07-31 10:16:55 +02:00
Emiel Bruijntjes cac3247304 Quality of service now supports "global" parameter (default is still false) 2014-07-31 10:10:15 +02:00
Richard Hodges d4b10cbf35 bug - negate the result of send() before using the result in a DeferredResult constructor 2014-07-30 15:29:05 +01:00
Richard Hodges d2a97c1dd3 bugfix - fixes bug where channel declaration deferred object is put in fail state after successful send of data
refs #12
2014-07-30 09:39:20 +01:00
Richard Hodges b9ca150dba merged from latest upstream 2014-07-28 15:16:32 +01:00
Richard Hodges b41e2edc52 Merge remote-tracking branch 'upstream/master' 2014-07-28 15:07:06 +01:00
Emiel Bruijntjes 850252e1dd link time optimization only for static libs 2014-07-25 09:34:01 +02:00
Richard Hodges 7c0642f30d build - added CMakeLists.txt to allow integration into a CMAKE build tree 2014-07-11 18:17:03 +01:00
Emiel Bruijntjes 3a700226c8 BasicNack frame makes the consumer stop (dont know why) so we use the BackReject message instead when there is no need to reject multiple messages 2014-05-26 18:17:49 +02:00
Martijn Otto a9570277b7 Removed the nowait option from the public interface, because the deferred would never be called and implemented a queue to wait for synchronous methods to complete before sending the next frame 2014-04-29 15:51:33 +02:00
Emiel Bruijntjes 1fecc57d67 when a connection gets in error state, all deferred results will now also call their error callback, and the channel wide error handler is called _after_ all individual error handlers are called 2014-04-16 09:25:08 +02:00
Emiel Bruijntjes 82249ee368 update documentation, error callbacks now get a const char * instead of a std::string 2014-04-15 14:22:30 +02:00
Emiel Bruijntjes 3d4a1b865e removed some @todo tags 2014-04-15 13:22:06 +02:00
Emiel Bruijntjes b13398b09d setTimeout function removed from connection handler, the finalize and error callbacks are called right away if installed on an object that already is in an error state 2014-04-15 13:18:32 +02:00
Emiel Bruijntjes 60b59524e7 when an error is detected on a channel, all subsequent and cached deferred objects are notified about the error too 2014-04-15 13:14:16 +02:00
Emiel Bruijntjes d08270701e refactored dealing with error messages 2014-04-15 13:01:27 +02:00
Emiel Bruijntjes ae7a32a8bf when a consumer is cancelled, it is also removed from the map of active consumers in the the ChannelImpl object 2014-04-15 12:36:11 +02:00
Emiel Bruijntjes 3b78247363 error callbacks get a const char *, no longer a std::string 2014-04-15 12:29:22 +02:00
Emiel Bruijntjes 301b8153e3 deferred objects are now correctly destructed + added extra checks so that no crashes occur when someone destructs a channel inside a callback function 2014-04-15 12:25:56 +02:00
Emiel Bruijntjes 745ab512a5 the consumer message callback can now also be installed via the Deferred objects, and it is no longer passed a consumer tag, because it already is obvious what the consumer tag is supposed to be 2014-04-15 11:39:52 +02:00
Emiel Bruijntjes 921f24ae06 de-templified the deferred objects, to make them easier to understand for other programmers 2014-04-15 10:43:33 +02:00
Emiel Bruijntjes 7b20f46519 removed channel parameter from the callbacks, because this can easily be captured 2014-04-15 08:52:49 +02:00
Emiel Bruijntjes d47d6bda5d removed noreturn attribute because not supported on gcc 4.7 (issue #10) 2014-04-14 17:17:17 +02:00
Emiel Bruijntjes b8d4581569 cast to array and cast to object implemented, refactored shared-ptr and clone() methods to utilize std::make_shared (see issue #7) 2014-04-14 17:14:36 +02:00
Emiel Bruijntjes bcc6eaff82 added const access for operator[] (issue #7) 2014-04-14 16:06:29 +02:00
Martijn Otto 83621790f4 Give the connection object to the timeout as well 2014-04-14 15:31:15 +02:00
Martijn Otto 05412e0d2b Merged recent commits 2014-04-14 14:23:37 +02:00
Martijn Otto 1c0495378a Implemented deferred consumers and a setTimeout method on the connection handler for indicating immediate failures on deferred objects 2014-04-14 14:10:57 +02:00
Emiel Bruijntjes cf5def0e89 fixed operator[] for arrays and strings, implemented << operator for field and fieldproxy objects to simplify debugging (reported from issue #7) 2014-04-14 13:34:46 +02:00
Luca Marturana 3680d621ba Bug fix on array serialization 2014-04-11 11:22:24 +02:00
Martijn Otto d2c17869e0 Moved the remaining methods over to deferred handlers 2014-04-10 12:51:04 +02:00
Martijn Otto e1b0e3dea1 Added a generic callback class that acts as a container for the different types of callbacks 2014-04-08 16:12:04 +02:00
Martijn Otto 2939272bc8 Work in progress to convert channel handler to callback system 2014-04-08 14:42:07 +02:00
Luca Marturana 41c1402d15 Const modifier to table get and some array operations 2014-04-02 12:59:24 +02:00
Luca Marturana 47f5ec2710 On connection::parse char* can be const 2014-04-02 11:53:46 +02:00
Niels Werensteijn 69f4669ccc Three fixes to get this lib compiled on linux g++ 4.7.3
Added <stdexcept> include to amqpcpp.h
Removed virtual destructors for exception.h and protocolexception.h. They were causing compile issues because of (no) noexcept specification. They were empty implementations anyway, and the ~std::exception was already virtual, so they were not needed anyway.
2014-03-03 17:29:50 +01:00
Emiel Bruijntjes 6cfead9902 {auto} if connection.close() was called before the connection was set up, the instructions that were called between setting up the connection and the call to close() were lost. This forced users to always use the onConnected() handler to wait for the first instruction to be sent. But this is not according to the library design, so now the instructions that are given before the close() will be executed too; 2014-02-21 00:54:40 -08:00
Emiel Bruijntjes 8ae54cc598 Use generic g++ version, and not 4.8 explicitly in makefile 2014-02-11 23:30:05 -08:00
Emiel Bruijntjes ffc400f4f0 Initialized a number of unused and deprecated variables to zero. This was not a big issue, because the information was unused, but it caused valgrind to report errors about using unitialized data 2014-02-11 23:27:07 -08:00
Emiel Bruijntjes d4e543e74a Login object now has methods to retrieve user name and password 2014-02-04 06:57:25 -08:00
Emiel Bruijntjes 99406af6c7 Channel::declareQueue() passive and durable flags were in conflict 2014-01-12 02:40:42 -08:00
Emiel Bruijntjes 9c86f0d750 added symlink in source directory otherwise it will not compile 2014-01-08 00:03:04 -08:00
Emiel Bruijntjes 5680ea8f11 fix the library after the rename operation 2014-01-07 01:17:09 -08:00
Emiel Bruijntjes aba769f5cb monitor class moved from include directory to src 2014-01-06 13:34:54 -08:00
Emiel Bruijntjes a442a4773a use default compiler 2014-01-06 09:21:15 -08:00
Emiel Bruijntjes a9e6045414 Removed and implemented many @todo tags from the source code, and added extra safety checks if some ignorant user decides to destruct channels or objects while they are still in use, implemented correct closing handshake for both connections and channels 2014-01-06 08:15:21 -08:00
Emiel Bruijntjes d1ab8b179a implemented returned messages 2014-01-06 06:49:31 -08:00
Emiel Bruijntjes efc556ee0a added support for recovering 2014-01-06 05:38:48 -08:00
Emiel Bruijntjes 5a636f5b57 Implemented nack/reject 2014-01-06 05:28:58 -08:00
Emiel Bruijntjes d1ae133f42 implemented channel.ack() method 2014-01-05 12:21:09 -08:00
Emiel Bruijntjes cf1cbfa551 implemented consuming, refactored a lot of code from cpp files to header files 2014-01-05 09:50:41 -08:00
Emiel Bruijntjes 5269f51a92 Implemented setting the quality of service (and it turns out that the prefetch size is not implemented in rabbitMQ, nor is setting the qos for the entire connection, so we have only implemented it for a channel) 2014-01-05 05:19:35 -08:00
Emiel Bruijntjes 5e96e2d832 it now is possible to publish messages to an exchange with this library 2014-01-05 04:08:35 -08:00
Emiel Bruijntjes 9c1e44f512 First setup for implementing the publish method 2014-01-04 12:01:02 -08:00
Emiel Bruijntjes 24a4b866c1 Fixes to Makefile to remove dependecy on Copernica directory structure 2014-01-04 11:41:01 -08:00
Emiel Bruijntjes e5b705b742 Implemented buffering of outgoing messages before the connection is set up, so that it is possible to create channel objects and call AMQP methods even while the connection handshake is still in progress 2014-01-04 11:34:36 -08:00
Emiel Bruijntjes c87739312a updated Makefile, removed vhost from Login object 2014-01-04 05:10:25 -08:00
Emiel Bruijntjes ea4f82ac8f Initial commit with the implementation of all methods apart from the publish and consume methods 2014-01-04 03:45:04 -08:00