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