diff --git a/include/dpp/cluster.h b/include/dpp/cluster.h index 0c3a887f1e..731f63d2df 100644 --- a/include/dpp/cluster.h +++ b/include/dpp/cluster.h @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include diff --git a/include/dpp/dpp.h b/include/dpp/dpp.h index bbafecf9dd..2d44ee9040 100644 --- a/include/dpp/dpp.h +++ b/include/dpp/dpp.h @@ -70,7 +70,6 @@ #include #include #include -#include #include #include #include diff --git a/include/dpp/restresults.h b/include/dpp/restresults.h index 05a227d47f..902a72ada4 100644 --- a/include/dpp/restresults.h +++ b/include/dpp/restresults.h @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include diff --git a/include/dpp/sync.h b/include/dpp/sync.h deleted file mode 100644 index fdce669b2d..0000000000 --- a/include/dpp/sync.h +++ /dev/null @@ -1,81 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Call a D++ REST function synchronously. - * - * Synchronously calling a REST function means *IT WILL BLOCK* - This is a Bad Thing™ and strongly discouraged. - * There are very few circumstances you actually need this. If you do need to use this, you'll know it. - * - * Example: - * - * ```cpp - * dpp::message m = dpp::sync(&bot, &dpp::cluster::message_create, dpp::message(channel_id, "moo.")); - * ``` - * - * @warning As previously mentioned, this template will block. It is ill-advised to call this outside of - * a separate thread and this should never be directly used in any event such as dpp::cluster::on_interaction_create! - * @tparam T type of expected return value, should match up with the method called - * @tparam F Type of class method in dpp::cluster to call. - * @tparam Ts Function parameters in method call - * @param c A pointer to dpp::cluster object - * @param func pointer to class method in dpp::cluster to call. This can call any - * dpp::cluster member function who's last parameter is a dpp::command_completion_event_t callback type. - * @param args Zero or more arguments for the method call - * @return An instantiated object of type T - * @throw dpp::rest_exception On failure of the method call, an exception is thrown - */ -template T sync(class cluster* c, F func, Ts&&... args) { - std::promise _p; - std::future _f = _p.get_future(); - /* (obj ->* func) is the obscure syntax for calling a method pointer on an object instance */ - (c ->* func)(std::forward(args)..., [&_p](const auto& cc) { - try { - if (cc.is_error()) { - const auto& error = cc.get_error(); - throw dpp::rest_exception((exception_error_code)error.code, error.message); - } else { - try { - _p.set_value(std::get(cc.value)); - } catch (const std::exception& e) { - throw dpp::rest_exception(err_unknown, e.what()); - } - } - } catch (const dpp::rest_exception&) { - _p.set_exception(std::current_exception()); - } - }); - - /* Blocking calling thread until rest request is completed. - * Exceptions encountered on the other thread are re-thrown. - */ - return _f.get(); -} - -}