mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-04 21:09:19 +08:00
Merge branch 'master' into gitlab-upstream-master
This commit is contained in:
commit
59efcee7d3
@ -12,7 +12,7 @@
|
|||||||
// 201703L (C++17)
|
// 201703L (C++17)
|
||||||
// 202002L (C++20)
|
// 202002L (C++20)
|
||||||
|
|
||||||
#if __cplusplus >= 201103L // Support c++11 ?
|
#if defined(USE_CPP11) || __cplusplus >= 201103L // Support c++11 ?
|
||||||
|
|
||||||
struct ACL_FIBER;
|
struct ACL_FIBER;
|
||||||
|
|
||||||
|
137
lib_fiber/samples-c/test/Makefile_cpp.in
Normal file
137
lib_fiber/samples-c/test/Makefile_cpp.in
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
CC = $(ENV_CC)
|
||||||
|
|
||||||
|
CFLAGS = -c -g -W \
|
||||||
|
-Wall \
|
||||||
|
-Wcast-qual \
|
||||||
|
-Wcast-align \
|
||||||
|
-Wno-long-long \
|
||||||
|
-Wpointer-arith \
|
||||||
|
-Werror \
|
||||||
|
-Wshadow \
|
||||||
|
-D_REENTRANT \
|
||||||
|
-D_POSIX_PTHREAD_SEMANTICS
|
||||||
|
|
||||||
|
###########################################################
|
||||||
|
#Check system:
|
||||||
|
# Linux, SunOS, Solaris, BSD variants, AIX, HP-UX
|
||||||
|
SYSLIB = -lpthread -ldl
|
||||||
|
CHECKSYSRES = @echo "Unknow system type!";exit 1
|
||||||
|
UNIXNAME = $(shell uname -sm)
|
||||||
|
|
||||||
|
ifeq ($(CC),)
|
||||||
|
CC = g++
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(findstring clang++, $(CC)), clang++)
|
||||||
|
CFLAGS += -Wno-invalid-source-encoding \
|
||||||
|
-Wno-invalid-offsetof
|
||||||
|
endif
|
||||||
|
|
||||||
|
# For FreeBSD
|
||||||
|
ifeq ($(findstring FreeBSD, $(UNIXNAME)), FreeBSD)
|
||||||
|
CFLAGS += -DFREEBSD
|
||||||
|
SYSLIB += -lcrypt -rdynamic
|
||||||
|
endif
|
||||||
|
|
||||||
|
# For Darwin
|
||||||
|
ifeq ($(findstring Darwin, $(UNIXNAME)), Darwin)
|
||||||
|
# CC += -arch x86_64 -arch arm64
|
||||||
|
CFLAGS += -DMACOSX -Wno-invalid-source-encoding \
|
||||||
|
-Wno-invalid-offsetof
|
||||||
|
SYSLIB += -rdynamic
|
||||||
|
UNIXTYPE = MACOSX
|
||||||
|
endif
|
||||||
|
|
||||||
|
#Path for Linux
|
||||||
|
ifeq ($(findstring Linux, $(UNIXNAME)), Linux)
|
||||||
|
CFLAGS += -DLINUX2
|
||||||
|
SYSLIB += -lcrypt -rdynamic
|
||||||
|
endif
|
||||||
|
|
||||||
|
# For MINGW
|
||||||
|
ifeq ($(findstring MINGW, $(UNIXNAME)), MINGW)
|
||||||
|
SYSLIB = -lpthread-2 -rdynamic
|
||||||
|
CFLAGS += -DLINUX2 -DMINGW
|
||||||
|
UNIXTYPE = LINUX
|
||||||
|
endif
|
||||||
|
|
||||||
|
#Path for SunOS
|
||||||
|
ifeq ($(findstring SunOS, $(UNIXNAME)), SunOS)
|
||||||
|
ifeq ($(findstring 86, $(UNIXNAME)), 86)
|
||||||
|
SYSLIB += -lsocket -lnsl -lrt
|
||||||
|
endif
|
||||||
|
ifeq ($(findstring sun4u, $(UNIXNAME)), sun4u)
|
||||||
|
SYSLIB += -lsocket -lnsl -lrt
|
||||||
|
endif
|
||||||
|
CFLAGS += -DSUNOS5
|
||||||
|
SYSLIB += -lcrypt -rdynamic
|
||||||
|
endif
|
||||||
|
|
||||||
|
#Path for HP-UX
|
||||||
|
ifeq ($(findstring HP-UX, $(UNIXNAME)), HP-UX)
|
||||||
|
PLAT_NAME=hp-ux
|
||||||
|
CFLAGS += -DHP_UX -DHPUX11
|
||||||
|
SYSLIB += -lcrypt -rdynamic
|
||||||
|
endif
|
||||||
|
|
||||||
|
#Find system type.
|
||||||
|
ifneq ($(SYSPATH),)
|
||||||
|
CHECKSYSRES = @echo "System is $(shell uname -sm)"
|
||||||
|
endif
|
||||||
|
###########################################################
|
||||||
|
|
||||||
|
ACL_PATH = ../../../../lib_acl
|
||||||
|
ACL_INC = $(ACL_PATH)/include
|
||||||
|
ACL_LIB = $(ACL_PATH)/lib
|
||||||
|
ACL_CPP_PATH = ../../../../lib_acl_cpp
|
||||||
|
ACL_CPP_INC = $(ACL_CPP_PATH)/include
|
||||||
|
ACL_CPP_LIB = $(ACL_CPP_PATH)/lib
|
||||||
|
|
||||||
|
PRO_PATH = ../../../../lib_protocol
|
||||||
|
PRO_INC = $(PRO_PATH)/include
|
||||||
|
PRO_LIB = $(PRO_PATH)/lib
|
||||||
|
|
||||||
|
FIBER_PATH = ../../../../lib_fiber
|
||||||
|
FIBER_INC = $(FIBER_PATH)/c/include
|
||||||
|
FIBER_LIB = $(FIBER_PATH)/lib
|
||||||
|
|
||||||
|
EXTLIBS =
|
||||||
|
CFLAGS += -I.. -I$(PRO_INC) -I$(ACL_INC) -I$(FIBER_INC) -I$(FIBER_PATH)/cpp/include -I$(ACL_CPP_INC)
|
||||||
|
LDFLAGS = -L$(FIBER_LIB) -lfiber_cpp \
|
||||||
|
-L$(ACL_CPP_LIB) -lacl_cpp \
|
||||||
|
-L$(PRO_LIB) -l_protocol \
|
||||||
|
-L$(ACL_LIB) -l_acl \
|
||||||
|
-L$(FIBER_LIB) -lfiber \
|
||||||
|
$(EXTLIBS) $(SYSLIB)
|
||||||
|
|
||||||
|
###########################################################
|
||||||
|
|
||||||
|
OUT_PATH = .
|
||||||
|
OBJ_PATH = $(OUT_PATH)
|
||||||
|
|
||||||
|
#Project's objs
|
||||||
|
SRC = $(wildcard *.cpp)
|
||||||
|
OBJ = $(patsubst %.cpp, $(OBJ_PATH)/%.o, $(notdir $(SRC)))
|
||||||
|
###########################################################
|
||||||
|
|
||||||
|
.PHONY = all clean
|
||||||
|
PROG =
|
||||||
|
|
||||||
|
COMPILE = $(CC) $(CFLAGS)
|
||||||
|
|
||||||
|
#-Wl,-rpath,$(ACL_LIB) -Wl,-rpath,$(PROTO_LIB) -o $(OBJ_PATH)/$(PROG)
|
||||||
|
all: RM $(OBJ)
|
||||||
|
$(CC) $(OBJ) $(LDFLAGS) -o $(OBJ_PATH)/$(PROG)
|
||||||
|
@echo ""
|
||||||
|
@echo "All ok! Output:$(PROG)"
|
||||||
|
@echo ""
|
||||||
|
$(OBJ_PATH)/%.o: %.cpp
|
||||||
|
$(COMPILE) $< -o $@
|
||||||
|
RM:
|
||||||
|
rm -f $(PROG)
|
||||||
|
clean cl:
|
||||||
|
rm -f $(PROG)
|
||||||
|
rm -f $(OBJ)
|
||||||
|
|
||||||
|
rebuild rb: clean all
|
||||||
|
###########################################################
|
@ -24,7 +24,7 @@ static void fiber_main(ACL_FIBER *fiber, void *ctx acl_unused)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int ch, i;
|
int i;
|
||||||
|
|
||||||
/* 创建协程 */
|
/* 创建协程 */
|
||||||
for (i = 0; i < __max_fiber; i++)
|
for (i = 0; i < __max_fiber; i++)
|
||||||
|
@ -1,7 +1,2 @@
|
|||||||
fiber: main.o
|
include ../Makefile.in
|
||||||
gcc -o fiber main.o -L../../../lib -l_fiber -L../../../../lib_acl/lib -l_acl -lpthread -ldl
|
PROG = fiber
|
||||||
main.o: main.c
|
|
||||||
gcc -O3 -c main.c -DLINUX2 -I.. -I../../../c/include -I../../../../lib_acl/include
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f fiber main.o
|
|
||||||
|
@ -1,11 +1,2 @@
|
|||||||
fiber: main.o
|
include ../Makefile_cpp.in
|
||||||
g++ -o fiber main.o -L../../../lib -l_fiber_cpp -l_fiber \
|
PROG = fiber
|
||||||
-L../../../../lib_acl_cpp/lib -l_acl_cpp \
|
|
||||||
-L../../../../lib_acl/lib -l_acl \
|
|
||||||
-lpthread -ldl
|
|
||||||
main.o: main.cpp
|
|
||||||
g++ -O3 -Wall -c main.cpp -DLINUX2 -I.. -I../../../cpp/include \
|
|
||||||
-I../../../../lib_acl_cpp/include
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f fiber main.o
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "acl_cpp/lib_acl.hpp"
|
#include "acl_cpp/lib_acl.hpp"
|
||||||
#include "fiber/lib_fiber.hpp"
|
#include "fiber/lib_fiber.hpp"
|
||||||
|
#include "fiber/go_fiber.hpp"
|
||||||
|
|
||||||
static void fiber_main(int max_loop)
|
static void fiber_main(int max_loop)
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,3 @@
|
|||||||
fiber: main.o
|
include ../Makefile_cpp.in
|
||||||
g++ -o fiber main.o -L../../../lib -l_fiber_cpp -l_fiber \
|
CFLAGS += -std=c++11
|
||||||
-L../../../../lib_acl_cpp/lib -l_acl_cpp \
|
PROG = fiber
|
||||||
-L../../../../lib_acl/lib -l_acl \
|
|
||||||
-lpthread -ldl
|
|
||||||
main.o: main.cpp
|
|
||||||
g++ -std=c++11 -O3 -Wall -c main.cpp -DLINUX2 -I.. -I../../../cpp/include \
|
|
||||||
-I../../../../lib_acl_cpp/include
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f fiber main.o
|
|
||||||
|
@ -1,11 +1,2 @@
|
|||||||
fiber: main.o
|
include ../Makefile_cpp.in
|
||||||
g++ -o fiber main.o -L../../../lib -l_fiber_cpp -l_fiber \
|
PROG = fiber
|
||||||
-L../../../../lib_acl_cpp/lib -l_acl_cpp \
|
|
||||||
-L../../../../lib_acl/lib -l_acl \
|
|
||||||
-lpthread -ldl
|
|
||||||
main.o: main.cpp
|
|
||||||
g++ -O3 -Wall -c main.cpp -DLINUX2 -I.. -I../../../cpp/include \
|
|
||||||
-I../../../../lib_acl_cpp/include
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f fiber main.o
|
|
||||||
|
2
lib_fiber/samples-c/test/fiber5/Makefile
Normal file
2
lib_fiber/samples-c/test/fiber5/Makefile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
include ../Makefile.in
|
||||||
|
PROG = fiber
|
23
lib_fiber/samples-c/test/fiber5/main.c
Normal file
23
lib_fiber/samples-c/test/fiber5/main.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include "lib_acl.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "fiber/lib_fiber.h"
|
||||||
|
|
||||||
|
/* 协程处理入口函数 */
|
||||||
|
static void fiber_main(ACL_FIBER *fiber acl_unused, void *ctx acl_unused)
|
||||||
|
{
|
||||||
|
printf("---fiber is running---\r\n");
|
||||||
|
acl_fiber_delay(2000);
|
||||||
|
printf("---fiber is exiting---\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
acl_fiber_schedule_init(1);
|
||||||
|
|
||||||
|
printf("---begin create one fiber----\r\n");
|
||||||
|
acl_fiber_create(fiber_main, NULL, 64000);
|
||||||
|
|
||||||
|
printf("---- all fibers exit ----\r\n");
|
||||||
|
return 0;
|
||||||
|
}
|
4
lib_fiber/samples-c/test/fiber5/valgrind.sh
Normal file
4
lib_fiber/samples-c/test/fiber5/valgrind.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#valgrind --tool=memcheck --leak-check=yes --leak-check=full --show-reachable=yes --max-stackframe=3426305034400000 -v ./fiber -n 10 -m 20
|
||||||
|
valgrind --tool=memcheck --leak-check=yes --leak-check=full --show-reachable=yes -v ./fiber -n 1 -m 2
|
24
lib_fiber/samples-gui/QtFiber/inputdialog.cpp
Normal file
24
lib_fiber/samples-gui/QtFiber/inputdialog.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "inputdialog.h"
|
||||||
|
|
||||||
|
InputDialog::InputDialog(QWidget *parent) : QDialog(parent)
|
||||||
|
{
|
||||||
|
setWindowTitle("input: ");
|
||||||
|
setGeometry(200, 200, 300, 200);
|
||||||
|
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
|
lineEdit = new QLineEdit(this);
|
||||||
|
lineEdit->setPlaceholderText("输入内容...");
|
||||||
|
layout->addWidget(lineEdit);
|
||||||
|
|
||||||
|
button = new QPushButton("确定", this);
|
||||||
|
layout->addWidget(button);
|
||||||
|
|
||||||
|
connect(button, &QPushButton::clicked, this, &InputDialog::onAccept);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputDialog::onAccept()
|
||||||
|
{
|
||||||
|
emit dialogAccepted(lineEdit->text());
|
||||||
|
accept();
|
||||||
|
}
|
27
lib_fiber/samples-gui/QtFiber/inputdialog.h
Normal file
27
lib_fiber/samples-gui/QtFiber/inputdialog.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef INPUTDIALOG_H
|
||||||
|
#define INPUTDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
class InputDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit InputDialog(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dialogAccepted(const QString &text);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onAccept();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QLineEdit *lineEdit;
|
||||||
|
QPushButton *button;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // INPUTDIALOG_H
|
@ -4,23 +4,26 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
class fiber_dummy : public acl::fiber {
|
class fiber_backend : public acl::fiber {
|
||||||
public:
|
public:
|
||||||
fiber_dummy() {}
|
fiber_backend() {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void run() override {
|
void run() override {
|
||||||
qDebug() << "fiber_dummy started!";
|
qDebug() << "fiber_backend started!";
|
||||||
|
while (true) {
|
||||||
|
acl::fiber::delay(1000);
|
||||||
|
}
|
||||||
delete this;
|
delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
~fiber_dummy() = default;
|
~fiber_backend() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void startupCallback()
|
static void startupCallback()
|
||||||
{
|
{
|
||||||
acl::fiber::init(acl::FIBER_EVENT_T_WMSG, true);
|
acl::fiber::init(acl::FIBER_EVENT_T_WMSG, true);
|
||||||
acl::fiber* fb = new fiber_dummy;
|
acl::fiber* fb = new fiber_backend;
|
||||||
fb->start();
|
fb->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "./ui_mainwindow.h"
|
#include "./ui_mainwindow.h"
|
||||||
#include "childwindows.h"
|
#include "childwindows.h"
|
||||||
|
#include "inputdialog.h"
|
||||||
#include "fiber_server.h"
|
#include "fiber_server.h"
|
||||||
#include "fiber_client.h"
|
#include "fiber_client.h"
|
||||||
|
|
||||||
@ -21,20 +22,31 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
connect(button_, &QPushButton::clicked, this, &MainWindow::onButtonClicked);
|
connect(button_, &QPushButton::clicked, this, &MainWindow::onButtonClicked);
|
||||||
|
|
||||||
start_server_ = new QPushButton("Start fiber server", this);
|
start_server_ = new QPushButton("Start fiber server", this);
|
||||||
start_server_->setGeometry(QRect(QPoint(100, 200), QSize(300, 50)));
|
start_server_->setGeometry(QRect(QPoint(100, 150), QSize(300, 50)));
|
||||||
connect(start_server_, &QPushButton::clicked, this, &MainWindow::onStartServer);
|
connect(start_server_, &QPushButton::clicked, this, &MainWindow::onStartServer);
|
||||||
|
|
||||||
start_client_ = new QPushButton("Start fiber client", this);
|
start_client_ = new QPushButton("Start fiber client", this);
|
||||||
start_client_->setGeometry(QRect(QPoint(100, 300), QSize(300, 50)));
|
start_client_->setGeometry(QRect(QPoint(100, 200), QSize(300, 50)));
|
||||||
connect(start_client_, &QPushButton::clicked, this, &MainWindow::onStartClient);
|
connect(start_client_, &QPushButton::clicked, this, &MainWindow::onStartClient);
|
||||||
|
|
||||||
|
url_get_ = new QPushButton("Http download", this);
|
||||||
|
url_get_->setGeometry(QRect(QPoint(100, 250), QSize(300, 50)));
|
||||||
|
connect(url_get_, &QPushButton::clicked, this, &MainWindow::onUrlGet);
|
||||||
|
|
||||||
stop_fiber_ = new QPushButton("Stop fiber schedule", this);
|
stop_fiber_ = new QPushButton("Stop fiber schedule", this);
|
||||||
stop_fiber_->setGeometry(QRect(QPoint(100, 400), QSize(300, 50)));
|
stop_fiber_->setGeometry(QRect(QPoint(100, 300), QSize(300, 50)));
|
||||||
connect(stop_fiber_, &QPushButton::clicked, this, &MainWindow::onStopSchedule);
|
connect(stop_fiber_, &QPushButton::clicked, this, &MainWindow::onStopSchedule);
|
||||||
|
|
||||||
open_child_ = new QPushButton("Open Child Window", this);
|
open_child_ = new QPushButton("Open Child Window", this);
|
||||||
open_child_->setGeometry(QRect(QPoint(100, 500), QSize(300, 50)));
|
open_child_->setGeometry(QRect(QPoint(100, 350), QSize(300, 50)));
|
||||||
connect(open_child_, &QPushButton::clicked, this, &MainWindow::onOpenChildWindow);
|
connect(open_child_, &QPushButton::clicked, this, &MainWindow::onOpenChildWindow);
|
||||||
|
|
||||||
|
input_button_= new QPushButton("Open dialog", this);
|
||||||
|
input_button_->setGeometry(100, 400, 300,50);
|
||||||
|
connect(input_button_, &QPushButton::clicked, this, &MainWindow::onInputClicked);
|
||||||
|
|
||||||
|
input_display_ = new QLabel("输入内容: ", this);
|
||||||
|
input_display_->setGeometry(100, 450, 200, 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
@ -60,9 +72,9 @@ void MainWindow::onStartServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
server_ = new fiber_server("127.0.0.1", 9001, this);
|
server_ = new fiber_server("127.0.0.1", 9001, this);
|
||||||
qDebug() << "Start one fiber";
|
qDebug() << "Start fiber server";
|
||||||
server_->start();
|
server_->start();
|
||||||
qDebug() << "Fiber started\r\n";
|
qDebug() << "Fiber server started";
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::onStartClient()
|
void MainWindow::onStartClient()
|
||||||
@ -73,6 +85,42 @@ void MainWindow::onStartClient()
|
|||||||
qDebug() << "Fiber client started!";
|
qDebug() << "Fiber client started!";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::onUrlGet()
|
||||||
|
{
|
||||||
|
go[this] {
|
||||||
|
const char *addr = "www.baidu.com:80";
|
||||||
|
const char *host = "www.baidu.com";
|
||||||
|
acl::http_request req(addr);
|
||||||
|
req.request_header()
|
||||||
|
.set_url("/")
|
||||||
|
.set_host(host);
|
||||||
|
if (!req.request(nullptr, 0)) {
|
||||||
|
qDebug() << "Send http request to " << addr << " error: " << acl::last_serror();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
acl::string buf;
|
||||||
|
if (req.get_body(buf)) {
|
||||||
|
this->onDownloadFinish(true, req);
|
||||||
|
} else {
|
||||||
|
this->onDownloadFinish(false, req);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onDownloadFinish(bool ok, const acl::http_request& req)
|
||||||
|
{
|
||||||
|
if (ok) {
|
||||||
|
acl::http_client *client = req.get_client();
|
||||||
|
acl::string buf;
|
||||||
|
client->sprint_header(buf);
|
||||||
|
qDebug() << "Got response body ok!";
|
||||||
|
qDebug() << buf.c_str();
|
||||||
|
} else {
|
||||||
|
qDebug() << "Got response body error!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::onStopSchedule()
|
void MainWindow::onStopSchedule()
|
||||||
{
|
{
|
||||||
if (server_) {
|
if (server_) {
|
||||||
@ -109,6 +157,23 @@ void MainWindow::onOpenChildWindow()
|
|||||||
qDebug() << "Second window isActiveWindow:" << child_window_->isActiveWindow();
|
qDebug() << "Second window isActiveWindow:" << child_window_->isActiveWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::onInputClicked()
|
||||||
|
{
|
||||||
|
InputDialog dialog(this);
|
||||||
|
QRect mainWindowGeometry = this->frameGeometry();
|
||||||
|
QPoint mainWindowPos = this->pos();
|
||||||
|
int x = mainWindowPos.x() + (mainWindowGeometry.width() - dialog.width()) / 2;
|
||||||
|
int y = mainWindowPos.y() + (mainWindowGeometry.height() - dialog.height()) / 2;
|
||||||
|
dialog.move(x, y);
|
||||||
|
connect(&dialog, &InputDialog::dialogAccepted, this, &MainWindow::onDialogAccepted);
|
||||||
|
dialog.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onDialogAccepted(const QString &text)
|
||||||
|
{
|
||||||
|
input_display_->setText("输入内容: " + text);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::keyPressEvent(QKeyEvent *event)
|
void MainWindow::keyPressEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
if (event->modifiers() == Qt::ControlModifier) {
|
if (event->modifiers() == Qt::ControlModifier) {
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QProcess.h>
|
#include <QProcess.h>
|
||||||
|
#include <QLabel>
|
||||||
|
|
||||||
|
namespace acl {
|
||||||
|
class http_request;
|
||||||
|
}
|
||||||
|
|
||||||
class fiber_server;
|
class fiber_server;
|
||||||
|
|
||||||
@ -30,10 +35,17 @@ protected:
|
|||||||
void onStartClient();
|
void onStartClient();
|
||||||
void onStopSchedule();
|
void onStopSchedule();
|
||||||
void onOpenChildWindow();
|
void onOpenChildWindow();
|
||||||
|
void onInputClicked();
|
||||||
|
void onUrlGet();
|
||||||
|
|
||||||
|
void onDialogAccepted(const QString &text);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void onAboutToQuit();
|
void onAboutToQuit();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void onDownloadFinish(bool ok, const acl::http_request& req);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui_;
|
Ui::MainWindow *ui_;
|
||||||
QPushButton *button_;
|
QPushButton *button_;
|
||||||
@ -41,6 +53,10 @@ private:
|
|||||||
QPushButton *start_client_;
|
QPushButton *start_client_;
|
||||||
QPushButton *stop_fiber_;
|
QPushButton *stop_fiber_;
|
||||||
QPushButton *open_child_;
|
QPushButton *open_child_;
|
||||||
|
QPushButton *url_get_;
|
||||||
|
std::string url_;
|
||||||
|
QPushButton *input_button_;
|
||||||
|
QLabel *input_display_;
|
||||||
|
|
||||||
fiber_server *server_ = nullptr;
|
fiber_server *server_ = nullptr;
|
||||||
QProcess *process_;
|
QProcess *process_;
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
#include "acl_cpp/lib_acl.hpp"
|
#include "acl_cpp/lib_acl.hpp"
|
||||||
#include "fiber/libfiber.h"
|
#include "fiber/libfiber.h"
|
||||||
#include "fiber/libfiber.hpp"
|
#include "fiber/libfiber.hpp"
|
||||||
#include "fiber/fiber_tbox.hpp"
|
|
||||||
|
#define USE_CPP11
|
||||||
|
#include "fiber/go_fiber.hpp"
|
||||||
#include "patch.h"
|
#include "patch.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
Loading…
Reference in New Issue
Block a user