Aart Stuurman
cf7261add5
Reordered public include files so they are now in include/amqpcpp/.
2018-01-24 01:58:18 +01:00
Aart Stuurman
4c7a71e3a6
Fixed compile error on g++ caused by fixing warning.
2018-01-24 00:59:46 +01:00
Aart Stuurman
b211fc7779
fixed 32 bit warnings.
2018-01-24 00:38:07 +01:00
Aart Stuurman
4072430fb3
Attempt to fix warning C4267
2018-01-24 00:19:55 +01:00
Steven Geddis
d71040b2e5
fix bad opening comment block
2018-01-23 19:16:44 +01:00
Aart Stuurman
27f765b5f7
linux tcp is now opt-out instead of opt-in(to keep compatibility with the original lib).
2018-01-23 19:15:10 +01:00
Steven Geddis
4652a9cbdf
libboostasio.h does not compile with clang-3.9 due to following error when compile if cpp17 preprocessor check: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]. Fix this by moving the bind away from preprocessor macro. Replace the STRAND_SOCKET_HANDLER, STRAND_TIMER_HANDLER macros with template functions.
2018-01-23 18:55:46 +01:00
Aart Stuurman
5701d28b2b
added BUILD_TCP option to build the linux sockets implementation.
2018-01-23 18:49:59 +01:00
Aart Stuurman
001dfaa7e0
- Moved linux specific TCP implementation to a seperate folder and removed it from default build. Does not yet build correctly if you want that.
...
- Fixed conversion warnings from <some integer> type to uint32_t, which happens a lot around here. This is no functional change, just making it explicit so the compiler doesn't warn.
2018-01-23 16:47:53 +01:00
Alessandro Pischedda
fd14790166
fix boost::placeholders undefined error and remain well explicited than use just '_1' or '_2'
2018-01-18 10:08:56 +01:00
Alessandro Pischedda
97124dc604
Fix compile
...
remove ?boost::placeholders::' .
2018-01-17 15:20:04 +01:00
Emiel Bruijntjes
b25bd583a3
added operator< to AMQP::Address
2017-12-29 19:27:40 +01:00
Emiel Bruijntjes
f05aba0782
added TcpConnection::fileno() to expose the internal filedescriptor / socket
2017-12-12 17:10:51 +01:00
Emiel Bruijntjes
c63f62189e
better docblocks so that future users will understand the difference between the callbacks for a consumer (mentioned in issue #156 )
2017-11-21 16:45:05 +01:00
Emiel Bruijntjes
60466cc6bf
Updated comment for Channel and TcpChannel constructors (to prevent issues like #154 )
2017-11-17 11:38:54 +01:00
Emiel Bruijntjes
d75ae2ebe1
fix compile issue because comma was missing
2017-10-24 12:54:29 +02:00
zerodefect
034e72bbc2
Added example/test application to demonstrate boost asio io_service handler.
2017-10-23 11:40:49 +01:00
zerodefect
5410f1abdd
Replaced tabs with spaces in LibBoostAsioHandler
2017-10-19 16:14:21 +01:00
zerodefect
cdd9918e6a
Cleaned up docs/comments in LibBoostAsioHandler
2017-10-19 16:06:41 +01:00
zerodefect
a9daf7e769
Added strand to LibBoostAsioHandler.h to ensure that 1 thread goes through the 'gate' (from the io_service set of threads) at any one time.
2017-10-19 15:59:40 +01:00
zerodefect
12ffe885c1
Cleaned up existing boost handler. There were a few bits that needed tidying up.
2017-10-19 14:44:29 +01:00
zerodefect
e3e0c6da19
Added timer boost asio event handler to perform health checks.
2017-10-13 09:26:32 +01:00
zerodefect
d1b2139af0
Cleaned up the handler upon conducting some additional testing.
2017-10-12 17:11:38 +01:00
zerodefect
e9cb9fbe92
Renamed libboostasio.hpp to libboostasio.h. Added header to copied files as part of install.
2017-10-12 11:41:41 +01:00
zerodefect
204b68401e
Added boost asio TCP handler for use on POSIX-based systems
2017-10-12 11:22:47 +01:00
Emiel Bruijntjes
27ac6aeea5
added operator<< to write a amqp address to a stream
2017-06-21 09:44:52 +02:00
Emiel Bruijntjes
acd6698db3
the libev timer no longer takes ownership over the event loop
2017-06-21 09:35:48 +02:00
Emiel Bruijntjes
49337d078d
heartbeats will now only be sent if the connection is idle
2017-06-19 10:24:03 +02:00
Emiel Bruijntjes
fda26f20f4
update the readme, heartbeats are now disabled by default, only the libev implementation has enabled them, resolves #137
2017-06-16 11:17:13 +01:00
Emiel Bruijntjes
90d9946474
implemented heartbeats for libev
2017-06-16 10:36:34 +01:00
Emiel Bruijntjes
a091921e88
added connection::heartbeat() method, userspace programs are responsible for calling this method once every 60 seconds
2017-06-16 10:14:42 +01:00
Marcin Gibula
3ab9eed268
Simplify message counter logic
2017-06-08 23:41:55 +02:00
Marcin Gibula
f0712cfdc2
Add ACK and NACK callbacks to Channel
2017-06-08 22:50:45 +02:00
Marcin Gibula
30e652c669
Add Channel::setConfirmMode() and Channel::messageCounter() methods
2017-06-08 22:19:55 +02:00
Marcin Gibula
c7a12d22c1
Add confirm.select and confirm.select-ok frames
2017-06-08 22:00:28 +02:00
Daan Mulder
b2877434cf
fix new bug in parsing amqp:// address where the default vhost was incorrectly overwritten
2017-05-11 13:59:07 +02:00
Emiel Bruijntjes
8501f19c0b
fixed parsing amqp:// address
2017-05-04 15:51:23 +02:00
RafalGoslawski
5e895f3b9f
Update CMakeLists.txt. fixes #123
2017-05-04 11:34:17 +02:00
Emiel Bruijntjes
d7214d1373
added Addresses class to parse a comma separated list of addresses
2017-05-01 22:06:28 +02:00
Emiel Bruijntjes
2a249ae7ea
fixed issue with parsing the password in a amqp:// string
2017-05-01 21:59:45 +02:00
Emiel Bruijntjes
af6886be92
added comparison operators to Address and Login classes
2017-04-26 09:00:01 +02:00
Emiel Bruijntjes
6f6c98f453
fixed compile issue
2017-03-16 11:36:35 +01:00
Emiel Bruijntjes
0d9b4c8bba
reinstalled channel methods that were removed to stay compatible with previous amqp-cpp release
2017-03-13 14:02:33 +01:00
Okke
bdae991324
Moved header files to include/ because of broken header dependencies
2017-03-09 11:53:13 +01:00
Emiel Bruijntjes
71eba4c5d3
prevent copying of buffers
2017-03-09 09:25:26 +01:00
Emiel Bruijntjes
1f5f641d8b
we now use passthrough buffers, so we no longer have to dynamically allocate a buffer for each and every outgoing message
2017-03-09 00:18:53 +01:00
Emiel Bruijntjes
e59d0ff387
removed envelope::message() method because it is expensive
2017-03-08 14:23:05 +01:00
Emiel Bruijntjes
00b81949d3
the AMQP::Message and AMQP::Envelope objects can now longer be copied or moved, and the signatures for creating an envelope and publishing a message have been made much more strict. This could be a API breaking change, to the version number should be upped
2017-03-08 13:32:51 +01:00
Okke
c6608cee0a
Added even more debug code for the channelimpl class
2017-03-07 10:10:11 +01:00
Okke
055431de6e
Fixed compilation issue due to recent changes in ChannelImpl
2017-03-03 12:56:54 +01:00
Emiel Bruijntjes
d3c0ea293b
better error message if channel is in an error state
2017-03-02 12:09:08 +01:00
Emiel Bruijntjes
ed2ffd3f03
added method tcpconnection::flush()
2016-09-19 10:19:06 +02:00
Emiel Bruijntjes
5bb7b1a36f
added const char * constructors to AMQP::Login class
2016-09-15 12:53:55 +02:00
Emiel Bruijntjes
173225071e
we no longer use "emit" for method names, because it seems to conflict with the Qt library that uses emit as some sort of macro
2016-09-10 20:36:06 +02:00
Martijn Otto
afb04a8f30
Re-introduced the casting operators with a note explaining why we need this.
2016-09-05 10:11:31 +02:00
theirix
c6643062b6
Removed unneeded self-cast operators
...
They are not used and caused a lot of warnings
while compiling and using AMQP-CPP
2016-09-02 22:33:12 +03:00
Emiel Bruijntjes
383914c0c7
Merge pull request #80 from theirix/sigpipe-osx
...
Avoid SIGPIPE on OS X without MSG_NOSIGNAL
2016-07-27 05:09:44 -04:00
Martijn Otto
53dd7c74c5
Merge pull request #86 from ogapo/master
...
libuv drop in implementation for TcpHandler
2016-07-18 15:12:24 +02:00
David Nikdel
fd69a4c01d
map closed sockets to both read and write
...
- this is more consistent with libev so probably will match what existing code expects
2016-07-16 20:43:19 -04:00
David Nikdel
584d92e751
can't use struct elaboration with typedef
2016-07-16 20:30:03 -04:00
David Nikdel
1e1ec0c133
Update libuv.h
...
- if status is not ok, report that as readable
- no need to stop uv_poll_t before changing events according to the docs
2016-07-16 20:27:00 -04:00
javeme
4b7874c5b6
Implement copy constructor for class Monitor
...
To support the instance copy of Monitor like the following:
AMQP::Monitor monitor(consumer);
consumer->bindExchange(exchange, AMQP::direct).onSuccess([&, monitor](){
// do something when the consumer is ready!
if(monitor.valid())
consumer->doSomething();
});
2016-07-17 00:54:42 +08:00
David Nikdel
b8d2c0c600
fix casting
2016-07-14 23:49:31 -04:00
David Nikdel
5042b699bd
create libuv.h based on libev.h
2016-07-14 23:30:43 -04:00
theirix
66f2001c7b
Avoid SIGPIPE on OS X without MSG_NOSIGNAL
...
OS X does not have Linux-specific option MSG_NOSIGNAL.
SIGPIPE can be avoided on OS X by using sockopt SO_NOSIGPIPE.
Credits: https://noahdesu.github.io/2014/01/16/port-sendmsg.html
2016-07-10 21:44:14 +03:00
David van Erkelens
dddd16b74d
Make sure single gets are processed correctly as well
2016-07-05 16:39:12 +02:00
Martijn Otto
5d741bfd2d
Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP
2016-07-04 10:14:00 +02:00
Martijn Otto
5b40c04f2a
Added documentation about missing RabbitMQ functionality
2016-07-04 10:13:50 +02:00
Martijn Otto
c055b1a439
Merge pull request #77 from javeme/return-type-of-waiting
...
Correct the returning type of Connection::waiting()
2016-07-04 09:41:54 +02:00
javeme
5cff314d88
Correct the returning type of Connection::waiting()
...
The returning type of Connection::waiting() should be bool,
but currently it's size_t type.
2016-07-03 21:35:44 +08:00
Maksim Kuzevanov
1dcbc33b53
make it compile with cmake 2.8/gcc 4.7.3
2016-07-01 17:29:35 +03:00
Martijn Otto
b91e0589f6
Updated cmake lists and added include, closes issue #75
2016-06-28 14:14:07 +02:00
Martijn Otto
2f1851728c
Merge pull request #72 from XeCycle/fionread-solaris
...
Some portability fixes for Solaris-like systems
2016-06-27 10:57:24 +02:00
Martijn Otto
d911d71dfa
Removed the ugly typedef
2016-06-27 10:52:58 +02:00
javeme
5c3ba7b00a
Program crashes when receiving a message due to memory corruption
...
crashes due to the wrong way using aligned_storage.
Steps to reproduce:
1. Start a consumer
channel.consume(queue, tag).onMessage(msgCallback)
2. Send a message to the consumer
3. The program crashes
Environment:
Windows 7 / VS2010
The reason:
The Windows prompted to memory corruption, I found some strange phenomenon
about stack_ptr<Message>, such as:
1.sizeof(stack_ptr<Message>) is equal to 2
2.stack_ptr._initialized becomes true after construct() called (actually,
it never has been assigned true, please see [1])
Finally I found that the root cause was stack_ptr._data, we directly used
aligned_storage rather than aligned_storage::type[2] as the type of _data.
so the _data was just an empty struct, and subsequent operations were
performed in illegal memory. It eventually led to the crash.
This patch we fixed the bug and add "_initialized = true" at the end of the
method stack_ptr::construct().
[1] https://github.com/CopernicaMarketingSoftware/AMQP-CPP/blob/master/include/stack_ptr.h#L83
[2] http://www.cplusplus.com/reference/type_traits/aligned_storage/
2016-06-27 02:03:15 +08:00
Carl Lei
55aba43078
portability fix for pow overload resolution
...
On Solaris the compiler is missing the template overload.
2016-06-25 20:15:44 +08:00
Martijn Otto
ba6b3e2923
Copied the methods to both implementations so they can return their concrete type
2016-06-23 16:02:04 +02:00
Martijn Otto
2c60151d31
Only allocate a message and its data when a consumer wants to and allow consumers to receive the individual parts
2016-06-23 14:42:50 +02:00
Emiel Bruijntjes
24c8527b5d
added tcpinbuffer with much less allocation
2016-06-15 13:32:30 -04:00
Emiel Bruijntjes
6320e2ae0e
added consistent-hash exchange (same as pull request #68 )
2016-06-15 11:20:31 -04:00
Emiel Bruijntjes
59830c659c
added connection::maxFrame() and connection::expected() methods to give hints about the amount of data that the connection::parse() method ideally expects
2016-06-15 04:57:46 -04:00
Jan Westerdiep
7384b521ac
small legibility fixes
2016-06-10 15:21:10 +02:00
hoxnox
15fa529bfd
Bugfix: add missing include guards
2016-04-06 17:49:39 +03:00
Aljar Meesters
70a7565c4e
fixed bug when connection goes out of scope
2016-03-04 17:34:28 +01:00
Martijn Otto
89c2075a5f
Fix segfault when the handler is destructed from within a callback
2016-01-15 14:19:09 +01:00
Brent Dimmig
bbfcf76f39
add TcpHandler implementation for libevent
2016-01-09 16:03:42 -05:00
Martijn Otto
18bf111eec
fixed changing io events for libev
2016-01-04 16:53:22 +01:00
Toon Schoenmakers
09ad7b6cf4
How about we include libev before using the structs from libev?
2015-12-30 16:04:34 +01:00
Toon Schoenmakers
93a0b60b6e
clients can now intercept the heartbeat negotiation, and install a shorter of longer heartbeat interval, and clients can be notified for received heartbeat frames
2015-12-02 10:46:55 +01:00
Emiel Bruijntjes
57c1109115
added extra Table::set() methods
2015-11-28 17:30:02 +01:00
Emiel Bruijntjes
155c989db5
added "override" keywords to overridden methods, fixed buffer overflow in setting up a connection
2015-11-28 11:38:15 +01:00
Emiel Bruijntjes
16a5104cd1
added include guard
2015-11-17 11:17:21 +01:00
Emiel Bruijntjes
3c6f909871
on second thought, should not be protected
2015-11-17 10:07:33 +01:00
Emiel Bruijntjes
1fc239f9fe
loop member is now protected (could be useful)
2015-11-17 10:06:26 +01:00
Emiel Bruijntjes
66d2173f86
added libev implementation for the Tcp handler, added libev example program
2015-11-17 09:33:28 +01:00
Toon Schoenmakers
c783ec7618
When building the address url, username and password should be split with a colon
2015-11-02 17:53:43 +01:00
Toon Schoenmakers
875300dbce
Exposed the channels method in the TcpConnection class and added a more specialized constructor to the Address class
2015-11-02 17:47:21 +01:00
Emiel Bruijntjes
b610ac5183
added TcpConnection::close() method
2015-11-01 12:20:12 +01:00
Emiel Bruijntjes
9e08c6932f
extra Address constructor added
2015-11-01 12:17:33 +01:00
Emiel Bruijntjes
6061d853c7
Merge pull request #44 from Kojoley/envelope-copyctor-fix
...
AMQP::Envelope copy constructor missing base class constructor call
2015-11-01 05:14:27 -05:00