diff --git a/include/wsrep/provider.hpp b/include/wsrep/provider.hpp index 933c31a..68392c6 100644 --- a/include/wsrep/provider.hpp +++ b/include/wsrep/provider.hpp @@ -314,7 +314,7 @@ namespace wsrep virtual void reset_status() = 0; virtual std::string options() const = 0; - virtual void options(const std::string&) = 0; + virtual enum status options(const std::string&) = 0; /** * Return pointer to native provider handle. diff --git a/src/wsrep_provider_v26.cpp b/src/wsrep_provider_v26.cpp index ba7b31b..e8e637d 100644 --- a/src/wsrep_provider_v26.cpp +++ b/src/wsrep_provider_v26.cpp @@ -825,12 +825,10 @@ std::string wsrep::wsrep_provider_v26::options() const return ret; } -void wsrep::wsrep_provider_v26::options(const std::string& opts) +enum wsrep::provider::status +wsrep::wsrep_provider_v26::options(const std::string& opts) { - if (wsrep_->options_set(wsrep_, opts.c_str()) != WSREP_OK) - { - throw wsrep::runtime_error("Failed to set provider options"); - } + return map_return_value(wsrep_->options_set(wsrep_, opts.c_str())); } void* wsrep::wsrep_provider_v26::native() const diff --git a/src/wsrep_provider_v26.hpp b/src/wsrep_provider_v26.hpp index d5f241a..6794c55 100644 --- a/src/wsrep_provider_v26.hpp +++ b/src/wsrep_provider_v26.hpp @@ -67,7 +67,7 @@ namespace wsrep std::vector status() const; void reset_status(); std::string options() const; - void options(const std::string&); + enum wsrep::provider::status options(const std::string&); void* native() const; private: wsrep_provider_v26(const wsrep_provider_v26&); diff --git a/test/mock_provider.hpp b/test/mock_provider.hpp index 5698c30..576d0c2 100644 --- a/test/mock_provider.hpp +++ b/test/mock_provider.hpp @@ -231,7 +231,8 @@ namespace wsrep } void reset_status() { } std::string options() const { return ""; } - void options(const std::string&) { } + enum wsrep::provider::status options(const std::string&) + { return wsrep::provider::success; } void* native() const { return 0; } //