LeechCraft
0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
process.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <coroutine>
12
#include <variant>
13
#include <QObject>
14
#include <QString>
15
#include <
util/sll/raiisignalconnection.h
>
16
#include "
../threadsconfig.h
"
17
#include "
taskfwd.h
"
18
19
class
QDebug;
20
class
QProcess;
21
22
namespace
LC::Util
23
{
24
struct
ProcessFailedToStart
25
{
26
QString
Error_
;
27
28
auto
operator<=>
(
const
ProcessFailedToStart
&)
const
=
default
;
29
};
30
31
struct
ProcessCrashed
32
{
33
int
Code_
;
34
35
auto
operator<=>
(
const
ProcessCrashed
&)
const
=
default
;
36
};
37
38
struct
ProcessExited
39
{
40
int
Code_
;
41
42
auto
operator<=>
(
const
ProcessExited
&)
const
=
default
;
43
};
44
45
using
ProcessOutcome
= std::variant<ProcessFailedToStart, ProcessCrashed, ProcessExited>;
46
47
UTIL_THREADS_API
QDebug
operator<<
(QDebug,
const
ProcessFailedToStart
&);
48
UTIL_THREADS_API
QDebug
operator<<
(QDebug,
const
ProcessCrashed
&);
49
UTIL_THREADS_API
QDebug
operator<<
(QDebug,
const
ProcessExited
&);
50
UTIL_THREADS_API
QDebug
operator<<
(QDebug,
const
ProcessOutcome
&);
51
52
namespace
detail
53
{
54
struct
UTIL_THREADS_API
ProcessAwaiter
55
{
56
QProcess&
Process_
;
57
58
QObject
CoroResumeGuard_
{};
59
60
RaiiSignalConnection
FinishedConn_
{};
61
RaiiSignalConnection
ErrorConn_
{};
62
63
bool
await_ready () const noexcept;
64
void
await_suspend (std::coroutine_handle<> handle);
65
ProcessOutcome
await_resume () const;
66
};
67
}
68
69
inline
detail
::ProcessAwaiter
GetAwaiter
(QProcess& process,
AwaiterCPO
)
70
{
71
return
detail::ProcessAwaiter
{ process };
72
}
73
}
74
75
namespace
LC
76
{
77
inline
auto
operator
co_await
(QProcess& process)
78
{
79
return
Util::GetAwaiter
(process, {});
80
}
81
}
LC::Util::RaiiSignalConnection
Definition
raiisignalconnection.h:17
LC::Util::detail
Definition
fancytrayiconfreedesktop.cpp:24
LC::Util
Definition
icoreproxy.h:34
LC::Util::ProcessOutcome
std::variant< ProcessFailedToStart, ProcessCrashed, ProcessExited > ProcessOutcome
Definition
process.h:45
LC::Util::GetAwaiter
detail::EitherAwaiter< L, R, std::identity > GetAwaiter(const Either< L, R > &either, AwaiterCPO)
Definition
either.h:119
LC::Util::operator<<
QDebug operator<<(QDebug dbg, const CtString< N, Char > &str)
Definition
ctstringutils.h:113
LC
Definition
constants.h:15
raiisignalconnection.h
LC::Util::AwaiterCPO
Definition
taskfwd.h:22
LC::Util::ProcessCrashed
Definition
process.h:32
LC::Util::ProcessCrashed::operator<=>
auto operator<=>(const ProcessCrashed &) const =default
LC::Util::ProcessCrashed::Code_
int Code_
Definition
process.h:33
LC::Util::ProcessExited
Definition
process.h:39
LC::Util::ProcessExited::operator<=>
auto operator<=>(const ProcessExited &) const =default
LC::Util::ProcessExited::Code_
int Code_
Definition
process.h:40
LC::Util::ProcessFailedToStart
Definition
process.h:25
LC::Util::ProcessFailedToStart::Error_
QString Error_
Definition
process.h:26
LC::Util::ProcessFailedToStart::operator<=>
auto operator<=>(const ProcessFailedToStart &) const =default
LC::Util::detail::ProcessAwaiter
Definition
process.h:55
LC::Util::detail::ProcessAwaiter::CoroResumeGuard_
QObject CoroResumeGuard_
Definition
process.h:58
LC::Util::detail::ProcessAwaiter::FinishedConn_
RaiiSignalConnection FinishedConn_
Definition
process.h:60
LC::Util::detail::ProcessAwaiter::Process_
QProcess & Process_
Definition
process.h:56
LC::Util::detail::ProcessAwaiter::ErrorConn_
RaiiSignalConnection ErrorConn_
Definition
process.h:61
taskfwd.h
threadsconfig.h
UTIL_THREADS_API
#define UTIL_THREADS_API
Definition
threadsconfig.h:16
src
util
threads
coro
process.h
Generated by
1.18.0