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>
9template <typename T>
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
33 data_pack.setData(print_page_list.front());
34 print_page_list.pop();
35
37
38 } else {
40 }
41 }
42
43 private:
44 std::queue<std::tuple<QJsonObject, std::move_only_function<void(QJsonObject)>, std::optional<int>>>
46};
State
定义 WorkFlow.h:8
@ IsWorking
定义 WorkFlow.h:8
@ IsWaiting
定义 WorkFlow.h:8
定义 DataPack.h:18
State state
定义 WorkFlow.h:11
std::queue< std::tuple< QJsonObject, std::move_only_function< void(QJsonObject)>, std::optional< int > > > print_page_list
定义 WorkFlow.h:45
PrinterDataPack data_pack
定义 WorkFlow.h:13
PrinterWorkFlow()
定义 WorkFlow.h:15
T first_step
定义 WorkFlow.h:12
std::mutex mutex
定义 WorkFlow.h:14
void startWork()
定义 WorkFlow.h:28
void addWorkQueue(QJsonObject source, std::move_only_function< void(QJsonObject)> &&resp, std::optional< int > uid)
定义 WorkFlow.h:18