Commit Graph

399 Commits

Author SHA1 Message Date
Emiel Bruijntjes 025fdb5530
Merge pull request #134 from mgibula/master
Add Publisher Confirms support
2018-05-14 22:42:56 +02:00
Marcin Gibula cab0602dbf Forgot to set ChannelImpl::_confirm 2018-05-14 22:36:49 +02:00
Marcin Gibula 578abbf973 Update src/CMakeLists.txt 2018-05-14 21:44:01 +02:00
Marcin Gibula 2aa55b83c7 Replace old API with DeferredConfirm class 2018-05-14 21:12:34 +02:00
Marcin Gibula bf1caa1eae Add DeferredConfirm class 2018-05-14 21:05:49 +02:00
Marcin Gibula eeee1c3c5f Rename setConfirmMode() to confirmSelect() 2018-05-14 12:59:20 +02:00
Marcin Gibula e0b04ad7e0 Remove messageCounter() 2018-05-14 12:55:15 +02:00
Emiel Bruijntjes 5d69cc567c more calls to openssl::err_clear_error() to prevent that the error queue contains errors that are not related to the operations that is being checked 2018-04-27 12:38:06 +02:00
Trevor Perrin 416e244b31 Clear SSL Error Queue
The OpenSSL documentation states that the error queue for the current
thread needs to be emptied prior to the next TLS/SSL I/O operation,
or the call to SSL_get_error() will not be reliable.
2018-04-26 15:50:32 -05:00
Dirkco du Plessis 1479922901 Fix MSVC compile warning C4800 for bitwise operation resulting in int to boolean assignment.
Fix MSVC compile warning C4244 possible loss of data. Possible data loss from uint64_t to uint32_t.
2018-04-22 15:53:52 +01:00
Marcin Gibula bfd91b6ab5 Merge with upstream 2018-04-10 10:30:01 +02:00
Emiel Bruijntjes 69a201e741 optimizid dealing with ssl connections by not going back to the event loop that often, and prevented that object was staying in send state if it was endlessly sending data and not receiving anything, found this out when working on issue #207 2018-04-05 11:10:55 +02:00
Emiel Bruijntjes b26058f3e2 renamed bytesQueued() to queued() 2018-04-01 22:34:15 +02:00
Mike Playle 8800d2917e Add method to return the amount of queued outgoing data 2018-04-01 10:54:05 +01:00
tilsche ec21091080 Make sure ssl files are included in the library and add missing libraries for linking the examples 2018-03-12 10:46:32 +01:00
Emiel Bruijntjes f1c32242f7 Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP 2018-03-10 14:56:18 +01:00
Emiel Bruijntjes d2b2d5af14 shared-ptr has been turned into a unique-ptr for the tcp-state 2018-03-10 14:55:57 +01:00
Emiel Bruijntjes d81565fe6a fixed that stream operator of address wrote the port number when the default amqps port was used 2018-03-10 10:31:40 +01:00
Emiel Bruijntjes 367de51d77 added method to intercept tls handshakes, and to verify certificates 2018-03-10 00:59:14 +01:00
Emiel Bruijntjes 4c2b8ff68e added ability to set the handle to the openssl library (so that programs that load openssl via dlopen() can still use amqp-cpp) 2018-03-09 15:08:52 +01:00
Emiel Bruijntjes 28b6c903e1 finished implementing amqps:// support 2018-03-09 13:55:49 +01:00
Emiel Bruijntjes c26005ddfb work in progress on setting up tls connections to rabbitmq 2018-03-08 14:00:44 +01:00
Emiel Bruijntjes e39ca5b012 ssl connection fixes 2018-03-08 13:36:56 +01:00
Emiel Bruijntjes 872d4e9a11 implemented flushing for ssl connections 2018-03-08 13:09:56 +01:00
Emiel Bruijntjes bc4db8d8fe elegant shutdown for ssl connections 2018-03-08 12:11:45 +01:00
Emiel Bruijntjes 38d504d8a0 reportClosed() is never called when still busy with ssl handshake, so that method has been removed, and better handling of scenarion in which user space destructs connections in onError() implementation 2018-03-08 11:20:07 +01:00
Emiel Bruijntjes 25df834e74 prevent ssl errors or reference count errors when copying around ssl objects 2018-03-08 11:04:39 +01:00
Emiel Bruijntjes cea5a54487 fix bug: error about missing openssl was also reported when not even opening a secure connection 2018-03-08 10:44:42 +01:00
Emiel Bruijntjes 9a08c64ff7 more elegant close procedure for tcp connections 2018-03-08 10:37:49 +01:00
Emiel Bruijntjes f23bcf19f1 improved docblocks in tcpstate.h header file, when an error or closed is reported to user space, the _handler variable is now reset to prevent that it will be used to report more than once (we still need to check if this does not trigger other errors), and the state object is no longer destructed after a reportClosed() call, so that it can clean up nicely (which we need to the tls shutdown anyway) 2018-03-08 10:02:42 +01:00
Emiel Bruijntjes 8065cfe940 update docblock 2018-03-06 22:06:41 +01:00
Emiel Bruijntjes 7aa7794e3e work in progress on ssl implementation 2018-03-06 22:03:53 +01:00
Emiel Bruijntjes 0ca9bc9dad added error in case openssl is missing 2018-03-06 18:07:34 +01:00
Emiel Bruijntjes 25d5410b13 fixed some compile issues 2018-03-06 17:52:44 +01:00
Tamas Elekes 8ba8ed1727 dynamically loading openssl funtions during runtime work in progress 2018-03-06 14:40:46 +01:00
Tamas Elekes 3bb7714f3b dynamically loading openssl funtions during runtime work in progress 2018-03-06 14:39:36 +01:00
Emiel Bruijntjes baa4450aa6 update indentation 2018-03-06 09:44:24 +01:00
Emiel Bruijntjes 69596e49dc removed tabs 2018-03-06 08:40:44 +01:00
Emiel Bruijntjes 69c615d0a4 removed tcp prefix from all ssl related classes 2018-03-06 08:39:42 +01:00
Emiel Bruijntjes 72ffd5eb1a disabled ssl for the time being 2018-03-05 22:25:58 +01:00
Emiel Bruijntjes 463eed89c0 work in progress on closing ssl connections 2018-03-05 22:24:19 +01:00
Emiel Bruijntjes 4a51c5dd60 improve ssl handshake methods 2018-03-05 20:08:09 +01:00
Emiel Bruijntjes fa5ef5318a work in progress on dealing with secure connections 2018-03-05 19:53:53 +01:00
Tamas Elekes e46dfcf3b8 work in progress on ssl support for the AMQP-CPP library 2018-03-05 17:29:37 +01:00
Tamas Elekes 9c1a09a711 ssl connection WIP 2018-03-02 16:56:35 +01:00
Tamas Elekes 342268e50a support for amqps:// addresses in the AMQP::Address class (although it does not yet make a real secure connection) 2018-03-02 13:53:00 +01:00
Emiel Bruijntjes 2a0a6f3fb7 update cmake stuff 2018-03-01 23:13:07 +01:00
Emiel Bruijntjes 41239a1952 fixed to make returning message functional, and added test code 2018-03-01 22:54:50 +01:00
Emiel Bruijntjes 1ccd93cc5e final step (although untested) for handling returned messages 2018-03-01 22:27:27 +01:00
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
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