Emiel Bruijntjes
8eed709988
Connection::fail() will now also call the channel::onError method
2018-11-21 13:56:44 +01:00
Emiel Bruijntjes
45ca61cc43
added TcpConnection::closed()
2018-11-14 14:15:52 +01:00
Emiel Bruijntjes
549fec5cb1
libevhandler only checks for heartbeats if not overridden by user
2018-11-12 22:07:48 +01:00
Emiel Bruijntjes
888dc8c40b
added channel::usable() to replace channel::connected()
2018-11-12 15:24:25 +01:00
Emiel Bruijntjes
6432ce2ec1
added connection::usable()
2018-11-12 15:19:31 +01:00
Emiel Bruijntjes
a80847dc5e
fixed a couple of todos, make sure that onError() is always called
2018-11-12 12:12:04 +01:00
Emiel Bruijntjes
6f81b0a097
when tcp connection is lost, the pending operations are now reported with an error
2018-11-11 23:46:58 +01:00
Emiel Bruijntjes
8d08916b8c
fixed libev compiler errors
2018-11-11 22:58:13 +01:00
Emiel Bruijntjes
d83e88b95d
fixed the libev handler to be compatible with amqp-cpp 4.0, and we now also close the connection if the server stops sending heartbeats
2018-11-11 22:54:42 +01:00
Emiel Bruijntjes
fc21b62852
disable timer in libboostasio because it cannot handle multiple connections, fixes #251
2018-11-11 22:51:41 +01:00
Emiel Bruijntjes
e83a07f871
renamed onClosed to onLost to prevent confusion between TcpHandler::onClosed() and ConnectionHandler::onClosed()
2018-11-08 09:58:36 +01:00
Emiel Bruijntjes
da6744bf4d
renamed ConnectionHandler::onConnectedO() to ConnectionHandler::onReady()
2018-11-08 08:34:58 +01:00
Emiel Bruijntjes
06dc23190d
added ConnectionHandler::onProperties and TcpConnectionHandler::onProperties
2018-11-07 23:22:25 +01:00
Emiel Bruijntjes
f0ad90dd65
fixed compiler warning
2018-11-07 17:34:35 +01:00
Emiel Bruijntjes
428219ad83
simplified and improved the close procedure
2018-11-07 15:04:08 +01:00
Emiel Bruijntjes
64c876e65a
removed support for TcpConnection::flush() and removed internal TcpShutdown state
2018-11-06 18:11:27 +01:00
Emiel Bruijntjes
9330231a69
fixed assigning the new state
2018-11-05 17:11:21 +01:00
Emiel Bruijntjes
54049f9e8e
improved the tcp handler, added more methods to monitor whether a connection is connected, logged on and in an error state
2018-11-05 16:49:55 +01:00
Emiel Bruijntjes
bb417e89c2
add support for ConnectionHandler::onAttached() and ConnectionHandler::onDetached()
2018-11-05 16:19:48 +01:00
Emiel Bruijntjes
359eec189f
work in progress, simplified the tcp and ssl states
2018-11-05 16:18:20 +01:00
Emiel Bruijntjes
b81bc340b5
work in progress on refactored tcp handling, to solve various issues, like the one that lost connections do not trigger operations to fail
2018-11-04 23:34:31 +01:00
Emiel Bruijntjes
62a4262a58
the TcpConnection::close() method now supports an "immediate" parameter to skip the official amqp handshake for closing down
2018-10-28 18:13:13 +01:00
Emiel Bruijntjes
8546f52cd0
added onAttached() and onDetached() to the TcpHandler interface
2018-10-28 10:22:01 +01:00
Emiel Bruijntjes
c52e8ff0b2
added ConnectionHandler::onAttached() and ConnectionHandler::onDetached() methods
2018-10-28 10:04:34 +01:00
Emiel Bruijntjes
c0241cac67
Merge pull request #195 from Aleksandrius/master
...
Fixed MinGW compilation on Windows
2018-10-27 12:52:52 +02:00
Emiel Bruijntjes
11af8a7f6b
Merge pull request #218 from RZRCDR/fix_msvc_compiler_warnings
...
Fix msvc compiler warnings
2018-10-27 12:52:07 +02:00
Youri Moll
ba532e0434
onError should be overloaded by subclass, otherwise callback installers are no longer available for that class.
2018-09-21 12:26:23 +02:00
Michael van der Werve
757feb10c6
tcpchannel should also be movable
2018-08-31 15:01:10 +02:00
Michael van der Werve
31f6a18f37
channel should be movable
2018-08-31 14:44:19 +02:00
Peter A. Bigot
94bff62986
Monitor: avoid null pointer dereference when copying instances
...
When the copy constructor was added to allow passing a monitor by value
into a lambda the implementation did not account for the possibility of
the watchable having already been destroyed.
Also provide the companion copy assignment to complete the triad.
2018-06-24 10:31:21 -05:00
Emiel Bruijntjes
025fdb5530
Merge pull request #134 from mgibula/master
...
Add Publisher Confirms support
2018-05-14 22:42:56 +02:00
Marcin Gibula
ddee073278
Add onAck and onNack methods
2018-05-14 21:40:30 +02:00
Marcin Gibula
1a955b39af
Add deferredconfirm.h to amqpcpp.h
2018-05-14 21:35:08 +02:00
Marcin Gibula
76cf06d0ba
Comment fix
2018-05-14 21:34:43 +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
a90c620709
Add BasicAckFrame and BasicNackFrame to class list
2018-05-14 21:05:07 +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
976e948cb0
added comments
2018-05-11 11:58:55 +02:00
Mathias Devos
9bb20437d0
Fixed unused parameter warnings in header files
2018-05-11 08:52:43 +08:00
Dirkco du Plessis
5ec49d5b8a
Added CountCallback to support 32bit unsigned int passed in defferedget.
2018-04-23 08:30:37 +01:00
Peter A. Bigot
4d34c582d0
numericfield: cleanup for floating point types
...
Rework so floating point values are supported to the same degree as
integer values.
Closes #214
2018-04-22 16:30:37 -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
Peter A. Bigot
d0b5189d1e
Envelope: ensure const objects cannot be changed through _body
...
In commit 00b81949d3 where Message and
Envelope objects were made uncopiable the Envelope _body member was
changed from const char * to char * and a const_cast introduced to
remove the qualifier from the pointer passed to the constructor.
This technically produces undefined behavior when constructing an
Envelope() to publish data from a const buffer. It also risks future
bugs if a new subclass of Envelope mutates const objects through the
_body pointer.
Envelope does not need to support mutable or owned content. Move this
capability down to Message which is used in restricted situations where
the body size is set once and its content built up piecewise.
2018-04-20 18:27:53 -05:00
Emiel Bruijntjes
d857fbafde
better comment for the channel::consume() call, the comment about the consumer tag was wrong ( fixes #211 )
2018-04-19 09:56:35 +02:00
theirix
a624bc872c
Added virtual dtor to OutBuffer
2018-04-18 15:46:46 +03:00
theirix
539128e559
Replaced C-casts with const_cast for Envelope::body_
2018-04-18 14:59:35 +03:00
Aljar Meesters
1db6ed13a6
libev implementation was incorrect when one single handler was used to manage multiple connections
2018-04-12 12:05:22 +02: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
cf7d2e49ff
allow for a clean shutdown of asio connections
...
remove heartbeat timer on close
make sure only weak references are stored in bindings even below C++17
2018-03-12 12:07:09 +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
11786ff10b
update docblock in boostasio class to warn users about the possible low quality of the code
2018-03-10 14:55:23 +01:00
Emiel Bruijntjes
23cae9de84
fixed Address constructor
2018-03-10 10:32:48 +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
1ee18911ce
fixed writing address to std::stream
2018-03-10 10:20:52 +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
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
Aleksandr Serbin
b0adbb1878
Fixed MinGW compilation on Windows
2018-03-06 18:58:02 +02:00
Emiel Bruijntjes
a025e6c1c9
breaking change: the linux-tcp module is no longer included by default, applications that rely on this now have to explicitly include amcpcpp/linux_tcp
2018-03-06 08:46:17 +01:00
Emiel Bruijntjes
5b8841c937
removed more tabs
2018-03-06 08:45:12 +01:00
Emiel Bruijntjes
69c615d0a4
removed tcp prefix from all ssl related classes
2018-03-06 08:39:42 +01:00
Emiel Bruijntjes
463eed89c0
work in progress on closing ssl connections
2018-03-05 22:24:19 +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
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
Tamas Elekes
ab817384b1
fixed auth method prefix extra / char
2018-03-02 12:54:09 +01:00
Tamas Elekes
b9047f5ea7
added ampqs:// parsing to address
2018-03-02 12:14:43 +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
Steven Geddis
accc1810a0
remove timer interval from ctor init list
2018-02-01 15:31:19 +01:00
Steven Geddis
5a853134aa
remove second ctor with heartbeat interval (extend class instead). Change private to protected to allow LibBoostAsioHandler to be extended.
2018-02-01 15:27:59 +01:00
Steven Geddis
33c8e76a7e
correct comment
2018-02-01 13:11:23 +01:00
Steven Geddis
ae3b94fe92
use custom heartbeat interval outright, if set.
2018-02-01 13:05:41 +01:00
Steven Geddis
b713d48bb9
add second constructor with heartbeat interval; apply modern cpp typedefs; Add comments;
2018-02-01 12:44:48 +01:00
zerodefect
af1b54e268
Removed double inclusion of boost/function.hpp
2018-01-30 11:45:40 +00:00
zerodefect
1e9d1360f7
Fixed build error.
2018-01-30 10:43:08 +00: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
Aljar Meesters
c287382770
fix includes because existing code was no longer compiling after the latest changes
2018-01-30 10:45:16 +01:00
Emiel Bruijntjes
3d823adb51
add include for boost/function.hpp
2018-01-30 09:27:43 +01:00
Aart Stuurman
99974d36d3
fixed strcasecmp error on windows platforms.
2018-01-29 17:29:27 +01:00
Aart Stuurman
0995b3e0ec
fixed htonll compile error on windows.
2018-01-29 17:12:06 +01: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
62065431b3
forgot file
2018-01-26 22:42:56 +01:00
Aart Stuurman
99cc34d922
Added linux_tcp.h so we can now once again use the tcp implementation of the handler.
2018-01-26 22:42:28 +01:00
Aart Stuurman
f25efd2235
Merge https://github.com/CopernicaMarketingSoftware/AMQP-CPP into travis
2018-01-25 18:17:43 +01:00
Steven Geddis
959e6238ae
code formatting; capture strand by copy in timer handler
2018-01-24 15:06:35 +01:00
Steven Geddis
8477fbb272
add PTR_FROM_THIS define; remove io_handler code duplication via read/write/dispatch wrapper functions.
2018-01-24 13:24:43 +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
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