Raoul Wols
3649f41219
Fix: cannot call size() on a moved-from Field
...
Solution is to swap the statements.
This was regressed in 7532f5769d .
2021-07-01 13:48:10 +02:00
Emiel Bruijntjes
134ed73498
Merge pull request #401 from CopernicaMarketingSoftware/40169
...
Improve Table copy assignment operator
2021-07-01 12:54:20 +02:00
Raoul Wols
0f17bd0687
Improve Table copy assignment operator
2021-07-01 12:41:18 +02:00
Raoul Wols
3965739ccb
Don't rely on argument dependent lookup
2021-07-01 12:07:43 +02:00
Raoul Wols
ac91e954c2
Prefer make_shared over calling std::shared_ptr constructor
2021-07-01 11:54:43 +02:00
Emiel Bruijntjes
45775fefe8
avoid that multiple frames are sent by the channel-on-ready handler
2021-06-15 11:56:56 +02:00
aljar
c2e0cc57eb
Make sure the deffered objects stay in scope when we call into callback in tagger.
2021-05-12 15:09:25 +02:00
Emiel Bruijntjes
6d0ad0fe0d
Merge pull request #387 from CopernicaMarketingSoftware/fixTaggerClose
...
Fix Tagger::close
2021-01-14 10:05:02 +01:00
aljar
3b7ebb1077
The defered parameter indicatates if it failed, while the call in Tagger:close asumed that the parameter indicated usable. This is now fixed.
2021-01-14 09:16:35 +01:00
Emiel Bruijntjes
3dbd045d06
allow user space programs to initialize the SSL structure before a connection is set up
2021-01-01 18:52:54 +01:00
Bas van Berckel
77d74bff93
SslHandshake set default verify path ( #385 )
...
Set default verify paths for SSLHandshake to prevent secure connections from being marked as unverified.
Co-authored-by: Bas van Berckel <bas.vanberckel@copernica.com>
2020-12-07 16:36:32 +01:00
Michael van der Werve
e4ec629d62
signals can interrupt poll, which is now taken as a failure but should be retried
2020-11-23 09:57:35 +01:00
Mikhail Basanets
ced0de4eda
Added check if the connectionOrder receives nullptr and not a valid string. This can be a case if address.option(connectionOrder) returns nullptr.
2020-11-16 19:56:28 +02:00
Emiel Bruijntjes
bca39d8f29
simplified code, split up long methods in separate methods
2020-11-16 18:22:00 +01:00
aljar
f9d85f5d01
Use address to pass the option and add some extra options for sorting ips.
2020-11-16 16:30:29 +01:00
aljar
fe1538e8ae
Set option via address.
2020-11-13 18:05:07 +01:00
aljar
11f1eaf2c3
Don't use the old random_shuffle and don't set a global seed.
2020-11-13 17:49:14 +01:00
aljar
4570496547
Add option to select an IP randomly instead of using the order provided by getaddrinfo, which is proximity based.
2020-11-13 17:10:30 +01:00
Emiel Bruijntjes
7c07ab12e2
Merge pull request #378 from CopernicaMarketingSoftware/poll-replace-select
...
select only supports upto fd 1024, which can cause stack smashing if using higher ones
2020-10-30 12:45:40 +01:00
Michael van der Werve
537ee3f440
select only supports upto fd 1024, and we need to support any possible fd
2020-10-30 11:51:29 +01:00
Bas van Berckel
110706771a
Add missing recall implementation ( #375 )
...
* Add missing recall implementation
* create DeferredRecall if it doesn't exist
Co-authored-by: Bas van Berckel <bas.vanberckel@copernica.com>
2020-10-21 15:21:28 +02:00
Michael van der Werve
295642cfcd
{auto} renamed confirmed to tagger and added unacknowledged counter'
2020-10-21 11:50:34 +02:00
Michael van der Werve
2262d92938
{auto} disconnected explicit requirement of reliable and throttle
2020-10-21 10:36:39 +02:00
Emiel Bruijntjes
b7e9827e0c
Renamed DeferredConfirmedPublish to DeferredPublish
2020-10-19 08:59:13 +02:00
Emiel Bruijntjes
31f2d78778
Breaking change: the channel.publish() method no longer returns a DeferredPublisher-object, because it was not logical that you had to reinstall the callbacks for bounce-methods after each individual publish() call, not was it logical that the callbacks were not always logically linked to the publish() operation that failed (they were always sent to the handler of the most recent publish() instead of to the handler of the failed publish()). At the same time we added a channel.recall() method that can be used to notify the library that user-space is prepared to recall/take-back/accept bounced messages
2020-10-19 08:52:50 +02:00
Michael van der Werve
ad428fa629
fix the remnant 'waiting' on the channel after error
2020-10-15 10:07:24 +02:00
Michael van der Werve
5af76d874e
empty queue on error
2020-10-15 09:35:27 +02:00
Emiel Bruijntjes
2e49fd1220
Merge pull request #345 from tarhan/master
...
Added Void field type
2020-10-14 21:02:12 +02:00
Michael van der Werve
b368f9e635
bugfix; base handler was no longer (always) properly called
2020-10-14 11:21:02 +02:00
Michael van der Werve
c58cb6748d
onError handler can be set on throttle, and onError & onLost can also be set on messages sent via confirmed.
2020-10-12 12:02:04 +02:00
Michael van der Werve
0dc624a3e6
{auto} if there are no open messages, close channel directly
2020-10-07 16:12:15 +02:00
Michael van der Werve
e227d1ed3a
{auto} confirmed channel can now be closed correctly
2020-10-07 16:08:26 +02:00
Michael van der Werve
0b9f4e4af5
{auto} initial implementation of the confirmed wrapper
2020-10-07 11:49:38 +02:00
Michael van der Werve
f10e861532
{auto} renamed the throttledchannel to AMQP::Throttle, since it is only a wrapper and not strictly a channel ( #366 )
2020-10-07 10:04:05 +02:00
Michael van der Werve
94bf5fe74b
initial implementation
2020-10-06 15:14:42 +02:00
RafalGoslawski
42aec54333
Change windows line endings to unix ones and fix whitespace (spaces not tabs).
2020-10-05 15:44:33 +02:00
Michael van der Werve
103fa130f7
{auto} implement timeout on initial connection instead of being subjected to kernel
2020-09-29 13:51:54 +02:00
Michael van der Werve
2496dbbd4e
make sure onLost and onDetached are always called
2020-09-28 16:37:12 +02:00
Bas van Berckel
0d42234a3d
convert dos line endings
2020-09-24 12:30:04 +02:00
Emiel Bruijntjes
69026c31a3
fixed crash because the wrong size was passed
2020-08-18 12:33:38 +02:00
Emiel Bruijntjes
5d95ba824f
moved the ReceivedFrame class to the src-directory, as it is of no use for userspace applications
2020-08-14 12:24:40 +02:00
Emiel Bruijntjes
92d21c5ddd
the ReceivedFrame class has been split into a InBuffer base class to make it easier to store messages without having to construct a full frame, this commit adds the newly introduced classes
2020-08-14 12:20:58 +02:00
Emiel Bruijntjes
b03cc6ff1c
the ReceivedFrame class has been split into a InBuffer base class to make it easier to store messages without having to construct a full frame
2020-08-14 12:20:22 +02:00
Dmitriy Lekomtsev
bc4b9aa163
Added setting nullptr for Table's key
2020-07-29 18:35:11 +03:00
Dmitriy Lekomtsev
1c4917bead
Added Void field type
2020-07-29 16:21:28 +03:00
Michael van der Werve
1c08399ab0
valid file descriptors that can be closed are >= 0
2020-05-08 13:30:08 +02:00
Michael van der Werve
ab0a292a0e
file descriptor should not be monitored any more when the tcp connection is destructed.
2020-05-08 13:20:10 +02:00
Emiel Bruijntjes
e7f76bc75d
the TcpConnection class no longer calls back to userspace / to the user-supplied handler if user-space explicitly destructs the object
2020-04-30 21:41:41 +02:00
Emiel Bruijntjes
a75b3d5d18
fix compiling on freebsd ( fixes #300 )
2020-04-20 17:34:41 +02:00
Emiel Bruijntjes
da26b1112e
prevent crash when channelimpl unregistered from the connectionimpl, (hopefully) fixes #299 and fixes #326
2020-03-13 09:44:29 +01:00
Emiel Bruijntjes
f3ba779e67
deferred-chain was in kept in scope by a consumer-operation, this fixes #323
2020-02-28 12:45:45 +01:00
LAD Martin
022bd87ac1
Adds channel callbacks checking
2019-11-05 13:39:45 +00:00
Emiel Bruijntjes
5a648fe2d8
Merge pull request #298 from CopernicaMarketingSoftware/synchronous-fix
...
fix for incorrect handling of synchronous flag
2019-06-19 10:56:52 +02:00
Michael van der Werve
7b79b7c6e2
now we always flush when a success is reported, and the funcction is renamed to flush
2019-06-19 10:54:50 +02:00
Emiel Bruijntjes
f107b4aa3e
Merge pull request #288 from metricq/master
...
fix access to free'd memory in case of errors
2019-06-19 10:49:43 +02:00
Michael van der Werve
c82fce8ec9
fix for incorrect handling of synchronous flag
2019-06-19 09:38:56 +02:00
Peter A. Bigot
a6930f5c36
linux_tcp/poll: fix undefined behavior in select
...
The select(2) system call on Linux now includes the restrict qualifier
on the fd_set pointers passed in, causing a diagnostic in gcc9 for the
call blocking for both read and write. Pass a pointer to a temporary
copy of the set when two references are required.
Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2019-05-30 10:53:09 -05:00
tilsche
d3f35fb524
fix duplicate _connection->remove call on ConnectionImpl objects that were already destroyed, but didn't detach in case of errors
2019-03-04 16:53:31 +01:00
weili-jiang
fc22637578
Check pipe writes in linux_tcp to suppress Wunused-result in GCC
2019-02-05 08:33:28 +13:00
Emiel Bruijntjes
e10fd61ac8
slightly prettified the code
2019-01-10 08:25:31 +01:00
Michael van der Werve
a774e6c10c
on ssl error, make sure that it is found out
2019-01-08 13:14:42 +01:00
Michael van der Werve
63d4acdce3
should be in working order now
2019-01-08 12:58:38 +01:00
Emiel Bruijntjes
20d4104d18
Merge pull request #271 from CopernicaMarketingSoftware/heartbeats
...
Implemented custom heartbeats in Livev
2018-12-13 23:41:20 +01:00
Youri Moll
a92dc27653
Implemented custom heartbeats in Livev
2018-12-13 13:01:38 +01:00
Emiel Bruijntjes
03ca83cb50
handle case when tcp connection is lost during reading, that should report an error back to user-space too ( fixes #266 )
2018-12-03 08:29:17 +01:00
Emiel Bruijntjes
d2e3792abc
fixed issue when end-of-file was encountered, this fixes #266
2018-11-30 06:42:54 +01:00
Emiel Bruijntjes
53f994d61d
when user calls connection.heartbeat() we now always send out the heartbeat (AMQP-CPP no longer tries to be smart about skipping heartbeats, because that could lead to timeouts if the user is a little late with its call, or when there is network congestion)
2018-11-28 13:52:00 +01:00
Emiel Bruijntjes
ec31f5ad11
added Channel implementation file ( fixes #267 )
2018-11-25 12:46:12 +01:00
Emiel Bruijntjes
91a23d5737
Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP
2018-11-23 11:16:03 +01:00
Emiel Bruijntjes
ee60aeb025
The Channel constructor now throws an exception if the max number of channels has been reached
2018-11-23 11:15:51 +01:00
Emiel Bruijntjes
799583ea39
Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP
2018-11-21 13:56:53 +01:00
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
888dc8c40b
added channel::usable() to replace channel::connected()
2018-11-12 15:24:25 +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
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
34f84e1ab7
handle unlikely error when ssl-handshake could not be started
2018-11-07 23:44:24 +01:00
Emiel Bruijntjes
06dc23190d
added ConnectionHandler::onProperties and TcpConnectionHandler::onProperties
2018-11-07 23:22:25 +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
6ea2d8dffd
removed unneeded comment
2018-11-05 17:18:24 +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
e617161c8c
the state::abort() method is no longer needed
2018-11-05 15:49:22 +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
3f32e8773d
fixed typo and possible (but unlikely) crash in the tcp-resolver
2018-10-28 18:52:41 +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
11af8a7f6b
Merge pull request #218 from RZRCDR/fix_msvc_compiler_warnings
...
Fix msvc compiler warnings
2018-10-27 12:52:07 +02:00
Peter A. Bigot
adf4fb3bc1
TcpResolver: reduce risk of accessing destructed TcpConnection
...
Invoking TcpHandler::onError might result in the connection being
destroyed. Though the reference to it in TcpClosed() is likely benign,
it's safer to follow the standard practice of returning a nullptr to
indicate that the connection is known to be destroyed.
2018-06-24 10:31:21 -05:00
Emiel Bruijntjes
e665916b85
Merge branch 'master' of github.com:CopernicaMarketingSoftware/AMQP-CPP
2018-06-15 09:19:37 +02:00
Emiel Bruijntjes
80ce6327bb
fixed ssl handling: the sslconnected class incorrectly cached the readability/writability state of a socket, even after it already did a read- or write-operation, which could lead to the system getting to read mode when no data was expected
2018-06-15 09:19:27 +02:00
Emiel Bruijntjes
2430da76c3
refactored code
2018-06-10 20:46:11 +02:00
xqing2003
e40006058e
fix memory leak
...
fix memory leak when channel error
2018-06-06 22:11:55 +08:00
xqing2003
7737917886
solve memory leak
2018-06-01 23:30:30 +08:00