@@ -796,7 +796,7 @@ class tls::reloadable_credentials_base {
796
796
public:
797
797
using time_point = std::chrono::system_clock::time_point;
798
798
799
- reloading_builder (credentials_builder b, reload_callback cb, reloadable_credentials_base* creds, delay_type delay)
799
+ reloading_builder (credentials_builder b, reload_callback_ex cb, reloadable_credentials_base* creds, delay_type delay)
800
800
: credentials_builder(std::move(b))
801
801
, _cb(std::move(cb))
802
802
, _creds(creds)
@@ -955,7 +955,7 @@ class tls::reloadable_credentials_base {
955
955
}
956
956
void do_callback (std::exception_ptr ep = {}) {
957
957
if (_cb && !_files.empty ()) {
958
- _cb (boost::copy_range<std::unordered_set<sstring>>(_files | boost::adaptors::map_keys), std::move (ep));
958
+ _cb (* this , boost::copy_range<std::unordered_set<sstring>>(_files | boost::adaptors::map_keys), std::move (ep)). get ( );
959
959
}
960
960
}
961
961
// called from seastar::thread
@@ -988,7 +988,7 @@ class tls::reloadable_credentials_base {
988
988
});
989
989
}
990
990
991
- reload_callback _cb;
991
+ reload_callback_ex _cb;
992
992
reloadable_credentials_base* _creds;
993
993
fsnotifier _fsn;
994
994
std::unordered_map<fsnotifier::watch_token, std::pair<fsnotifier::watch, sstring>> _watches;
@@ -997,7 +997,7 @@ class tls::reloadable_credentials_base {
997
997
timer<> _timer;
998
998
delay_type _delay;
999
999
};
1000
- reloadable_credentials_base (credentials_builder builder, reload_callback cb, delay_type delay = default_tolerance)
1000
+ reloadable_credentials_base (credentials_builder builder, reload_callback_ex cb, delay_type delay = default_tolerance)
1001
1001
: _builder(seastar::make_shared<reloading_builder>(std::move(builder), std::move(cb), this , delay))
1002
1002
{
1003
1003
_builder->start ();
@@ -1016,7 +1016,7 @@ class tls::reloadable_credentials_base {
1016
1016
template <typename Base>
1017
1017
class tls ::reloadable_credentials : public Base, public tls::reloadable_credentials_base {
1018
1018
public:
1019
- reloadable_credentials (credentials_builder builder, reload_callback cb, Base b, delay_type delay = default_tolerance)
1019
+ reloadable_credentials (credentials_builder builder, reload_callback_ex cb, Base b, delay_type delay = default_tolerance)
1020
1020
: Base(std::move(b))
1021
1021
, tls::reloadable_credentials_base(std::move(builder), std::move(cb), delay)
1022
1022
{}
@@ -1025,30 +1025,52 @@ class tls::reloadable_credentials : public Base, public tls::reloadable_credenti
1025
1025
1026
1026
template <>
1027
1027
void tls::reloadable_credentials<tls::certificate_credentials>::rebuild(const credentials_builder& builder) {
1028
- auto tmp = builder.build_certificate_credentials ();
1029
- this ->_impl = std::move (tmp->_impl );
1028
+ builder.rebuild (*this );
1030
1029
}
1031
1030
1032
1031
template <>
1033
1032
void tls::reloadable_credentials<tls::server_credentials>::rebuild(const credentials_builder& builder) {
1034
- auto tmp = builder.build_server_credentials ();
1035
- this ->_impl = std::move (tmp->_impl );
1033
+ builder.rebuild (*this );
1036
1034
}
1037
1035
1038
- future<shared_ptr<tls::certificate_credentials>> tls::credentials_builder::build_reloadable_certificate_credentials (reload_callback cb, std::optional<std::chrono::milliseconds> tolerance) const {
1036
+ void tls::credentials_builder::rebuild (certificate_credentials& creds) const {
1037
+ auto tmp = build_certificate_credentials ();
1038
+ creds._impl = std::move (tmp->_impl );
1039
+ }
1040
+
1041
+ void tls::credentials_builder::rebuild (server_credentials& creds) const {
1042
+ auto tmp = build_server_credentials ();
1043
+ creds._impl = std::move (tmp->_impl );
1044
+ }
1045
+
1046
+ future<shared_ptr<tls::certificate_credentials>> tls::credentials_builder::build_reloadable_certificate_credentials (reload_callback_ex cb, std::optional<std::chrono::milliseconds> tolerance) const {
1039
1047
auto creds = seastar::make_shared<reloadable_credentials<tls::certificate_credentials>>(*this , std::move (cb), std::move (*build_certificate_credentials ()), tolerance.value_or (reloadable_credentials_base::default_tolerance));
1040
1048
return creds->init ().then ([creds] {
1041
1049
return make_ready_future<shared_ptr<tls::certificate_credentials>>(creds);
1042
1050
});
1043
1051
}
1044
1052
1045
- future<shared_ptr<tls::server_credentials>> tls::credentials_builder::build_reloadable_server_credentials (reload_callback cb, std::optional<std::chrono::milliseconds> tolerance) const {
1053
+ future<shared_ptr<tls::server_credentials>> tls::credentials_builder::build_reloadable_server_credentials (reload_callback_ex cb, std::optional<std::chrono::milliseconds> tolerance) const {
1046
1054
auto creds = seastar::make_shared<reloadable_credentials<tls::server_credentials>>(*this , std::move (cb), std::move (*build_server_credentials ()), tolerance.value_or (reloadable_credentials_base::default_tolerance));
1047
1055
return creds->init ().then ([creds] {
1048
1056
return make_ready_future<shared_ptr<tls::server_credentials>>(creds);
1049
1057
});
1050
1058
}
1051
1059
1060
+ future<shared_ptr<tls::certificate_credentials>> tls::credentials_builder::build_reloadable_certificate_credentials (reload_callback cb, std::optional<std::chrono::milliseconds> tolerance) const {
1061
+ return build_reloadable_certificate_credentials ([cb = std::move (cb)](const credentials_builder&, const std::unordered_set<sstring>& files, std::exception_ptr p) {
1062
+ cb (files, p);
1063
+ return make_ready_future<>();
1064
+ }, tolerance);
1065
+ }
1066
+
1067
+ future<shared_ptr<tls::server_credentials>> tls::credentials_builder::build_reloadable_server_credentials (reload_callback cb, std::optional<std::chrono::milliseconds> tolerance) const {
1068
+ return build_reloadable_server_credentials ([cb = std::move (cb)](const credentials_builder&, const std::unordered_set<sstring>& files, std::exception_ptr p) {
1069
+ cb (files, p);
1070
+ return make_ready_future<>();
1071
+ }, tolerance);
1072
+ }
1073
+
1052
1074
namespace tls {
1053
1075
1054
1076
/* *
0 commit comments