WebpagePrinterTool
2.0
Print a web page skip the browser's print preview
载入中...
搜索中...
未找到
WorkFlow.h
浏览该文件的文档.
1
#pragma once
2
3
#include "
DataPack.h
"
4
#include <functional>
5
#include <mutex>
6
#include <optional>
7
#include <queue>
8
enum
State
{
IsWorking
,
IsWaiting
};
9
template
<
typename
T>
10
struct
PrinterWorkFlow
{
11
State
state
=
State::IsWaiting
;
12
T
first_step
;
13
PrinterDataPack
data_pack
;
14
std::mutex
mutex
;
15
explicit
PrinterWorkFlow
()
16
:
data_pack
([this]() { this->
startWork
(); }) {}
17
18
void
addWorkQueue
(QJsonObject source, std::move_only_function<
void
(QJsonObject)>&& resp,
19
std::optional<int> uid) {
20
{
21
std::lock_guard<std::mutex> lock(
mutex
);
22
print_page_list
.push(std::make_tuple(source, std::move(resp), uid));
23
}
24
if
(
state
==
State::IsWaiting
) {
25
startWork
();
26
}
27
}
28
void
startWork
() {
29
std::lock_guard<std::mutex> lock(
mutex
);
30
if
(!
print_page_list
.empty()) {
31
32
state
=
State::IsWorking
;
33
data_pack
.setData(
print_page_list
.front());
34
print_page_list
.pop();
35
36
first_step
.work(
data_pack
);
37
38
}
else
{
39
state
=
State::IsWaiting
;
40
}
41
}
42
43
private
:
44
std::queue<std::tuple<QJsonObject, std::move_only_function<void(QJsonObject)>, std::optional<int>>>
45
print_page_list
;
46
};
DataPack.h
State
State
定义
WorkFlow.h:8
IsWorking
@ IsWorking
定义
WorkFlow.h:8
IsWaiting
@ IsWaiting
定义
WorkFlow.h:8
PrinterDataPack
定义
DataPack.h:18
PrinterWorkFlow::state
State state
定义
WorkFlow.h:11
PrinterWorkFlow::print_page_list
std::queue< std::tuple< QJsonObject, std::move_only_function< void(QJsonObject)>, std::optional< int > > > print_page_list
定义
WorkFlow.h:45
PrinterWorkFlow::data_pack
PrinterDataPack data_pack
定义
WorkFlow.h:13
PrinterWorkFlow::PrinterWorkFlow
PrinterWorkFlow()
定义
WorkFlow.h:15
PrinterWorkFlow::first_step
T first_step
定义
WorkFlow.h:12
PrinterWorkFlow::mutex
std::mutex mutex
定义
WorkFlow.h:14
PrinterWorkFlow::startWork
void startWork()
定义
WorkFlow.h:28
PrinterWorkFlow::addWorkQueue
void addWorkQueue(QJsonObject source, std::move_only_function< void(QJsonObject)> &&resp, std::optional< int > uid)
定义
WorkFlow.h:18
src
printer
WorkFlow.h
制作者
1.13.2