aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorAva Chow <github@achow101.com>2024-05-02 16:33:18 -0400
committerAva Chow <github@achow101.com>2024-05-02 16:33:18 -0400
commit81174d8a9b8060b35341d88d3b54c08d9f2bb079 (patch)
treedd885f79349068a300c8feca18342621ebded0c7 /src/util
parent3d28725134df09768780249dc1d974b9cdcc83f1 (diff)
parent8b52e7f628304e83b0e36fd97e617de0f71c5a62 (diff)
downloadbitcoin-81174d8a9b8060b35341d88d3b54c08d9f2bb079.tar.xz
Merge bitcoin/bitcoin#29961: refactor: remove remaining unused code from cpp-subprocess
8b52e7f628304e83b0e36fd97e617de0f71c5a62 update comments in cpp-subprocess (check_output references) (Sebastian Falbesoner) 97f159776ec06f767df1d4990aa7d0859140f52f remove unused method `Popen::kill` from cpp-subprocess (Sebastian Falbesoner) 908c51fe4afeba0af500c6275027b1afa1b3bd19 remove commented out code in cpp-subprocess (Sebastian Falbesoner) ff79adbe056220202f7a56d67f788c38fc49ef9f remove unused templates from cpp-subprocess (Sebastian Falbesoner) Pull request description: This PR removes remaining code that is unused within the cpp-subprocess module (templates and commented out code). Happy to add more removals if anyone finds more unused parts. Note that there are some API functions of the `Popen` class that we don't use, e.g. `wait()`, `pid()`, `poll()`, `kill()`, but they sound IMHO common enough to be useful in the future, so not sure how deep we should go there. ACKs for top commit: fjahr: Code review ACK 8b52e7f628304e83b0e36fd97e617de0f71c5a62 achow101: ACK 8b52e7f628304e83b0e36fd97e617de0f71c5a62 hebasto: ACK 8b52e7f628304e83b0e36fd97e617de0f71c5a62. Tree-SHA512: 14c1cd2216185d941923f06fdc7acbeed66cd87e2691d9a352f7309b3e07fe4877b580f598a2e4106f9c48395ed6de00a0bfb5d3c3af9c4624d1956a0f543e99
Diffstat (limited to 'src/util')
-rw-r--r--src/util/subprocess.h114
1 files changed, 18 insertions, 96 deletions
diff --git a/src/util/subprocess.h b/src/util/subprocess.h
index 4acfa8ff83..af408b31d4 100644
--- a/src/util/subprocess.h
+++ b/src/util/subprocess.h
@@ -159,12 +159,6 @@ public:
//--------------------------------------------------------------------
namespace util
{
- template <typename R>
- inline bool is_ready(std::shared_future<R> const &f)
- {
- return f.wait_for(std::chrono::seconds(0)) == std::future_status::ready;
- }
-
inline void quote_argument(const std::wstring &argument, std::wstring &command_line,
bool force)
{
@@ -676,8 +670,8 @@ struct error
* This is basically used to determine the length of the actual
* data stored inside the dynamically resized vector.
*
- * This is what is returned as the output to communicate and check_output
- * functions, so, users must know about this class.
+ * This is what is returned as the output to the communicate
+ * function, so, users must know about this class.
*
* OutBuffer and ErrBuffer are just different typedefs to this class.
*/
@@ -688,22 +682,6 @@ public:
explicit Buffer(size_t cap) { buf.resize(cap); }
void add_cap(size_t cap) { buf.resize(cap); }
-#if 0
- Buffer(const Buffer& other):
- buf(other.buf),
- length(other.length)
- {
- std::cout << "COPY" << std::endl;
- }
-
- Buffer(Buffer&& other):
- buf(std::move(other.buf)),
- length(other.length)
- {
- std::cout << "MOVE" << std::endl;
- }
-#endif
-
public:
std::vector<char> buf;
size_t length = 0;
@@ -724,39 +702,9 @@ class Popen;
*/
namespace detail {
-
-// Metaprogram for searching a type within
-// a variadic parameter pack
-// This is particularly required to do a compile time
-// checking of the arguments provided to 'check_output' function
-// wherein the user is not expected to provide an 'output' option.
-
-template <typename... T> struct param_pack{};
-
-template <typename F, typename T> struct has_type;
-
-template <typename F>
-struct has_type<F, param_pack<>> {
- static constexpr bool value = false;
-};
-
-template <typename F, typename... T>
-struct has_type<F, param_pack<F, T...>> {
- static constexpr bool value = true;
-};
-
-template <typename F, typename H, typename... T>
-struct has_type<F, param_pack<H,T...>> {
- static constexpr bool value =
- std::is_same<F, typename std::decay<H>::type>::value ? true : has_type<F, param_pack<T...>>::value;
-};
-
-//----
-
/*!
* A helper class to Popen class for setting
- * options as provided in the Popen constructor
- * or in check_output arguments.
+ * options as provided in the Popen constructor.
* This design allows us to _not_ have any fixed position
* to any arguments and specify them in a way similar to what
* can be done in python.
@@ -948,24 +896,23 @@ private:
* interface to the client.
*
* API's provided by the class:
- * 1. Popen({"cmd"}, output{..}, error{..}, ....)
+ * Popen({"cmd"}, output{..}, error{..}, ....)
* Command provided as a sequence.
- * 2. Popen("cmd arg1"m output{..}, error{..}, ....)
+ * Popen("cmd arg1", output{..}, error{..}, ....)
* Command provided in a single string.
- * 3. wait() - Wait for the child to exit.
- * 4. retcode() - The return code of the exited child.
- * 5. pid() - PID of the spawned child.
- * 6. poll() - Check the status of the running child.
- * 7. kill(sig_num) - Kill the child. SIGTERM used by default.
- * 8. send(...) - Send input to the input channel of the child.
- * 9. communicate(...) - Get the output/error from the child and close the channels
- * from the parent side.
- *10. input() - Get the input channel/File pointer. Can be used for
- * customizing the way of sending input to child.
- *11. output() - Get the output channel/File pointer. Usually used
- in case of redirection. See piping examples.
- *12. error() - Get the error channel/File pointer. Usually used
- in case of redirection.
+ * wait() - Wait for the child to exit.
+ * retcode() - The return code of the exited child.
+ * pid() - PID of the spawned child.
+ * poll() - Check the status of the running child.
+ * send(...) - Send input to the input channel of the child.
+ * communicate(...) - Get the output/error from the child and close the channels
+ * from the parent side.
+ * input() - Get the input channel/File pointer. Can be used for
+ * customizing the way of sending input to child.
+ * output() - Get the output channel/File pointer. Usually used
+ in case of redirection. See piping examples.
+ * error() - Get the error channel/File pointer. Usually used
+ in case of redirection.
*/
class Popen
{
@@ -1009,15 +956,6 @@ public:
execute_process();
}
-/*
- ~Popen()
- {
-#ifdef __USING_WINDOWS__
- CloseHandle(this->process_handle_);
-#endif
- }
-*/
-
int pid() const noexcept { return child_pid_; }
int retcode() const noexcept { return retcode_; }
@@ -1026,10 +964,6 @@ public:
int poll() noexcept(false);
- // Does not fail, Caller is expected to recheck the
- // status with a call to poll()
- void kill(int sig_num = 9);
-
void set_out_buf_cap(size_t cap) { stream_.set_out_buf_cap(cap); }
void set_err_buf_cap(size_t cap) { stream_.set_err_buf_cap(cap); }
@@ -1197,18 +1131,6 @@ inline int Popen::poll() noexcept(false)
#endif
}
-inline void Popen::kill(int sig_num)
-{
-#ifdef __USING_WINDOWS__
- if (!TerminateProcess(this->process_handle_, (UINT)sig_num)) {
- throw OSError("TerminateProcess", 0);
- }
-#else
- ::kill(child_pid_, sig_num);
-#endif
-}
-
-
inline void Popen::execute_process() noexcept(false)
{
#ifdef __USING_WINDOWS__