Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
colorEagleStdio
taskbus
提交
f8b6233e
taskbus
项目概览
colorEagleStdio
/
taskbus
通知
159
Star
11
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
taskbus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f8b6233e
编写于
6月 25, 2023
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
发送缓冲也采取静态设计
上级
68c44851
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
26 deletion
+24
-26
taskbusplatform/core/tasknode.cpp
taskbusplatform/core/tasknode.cpp
+20
-24
taskbusplatform/core/tasknode.h
taskbusplatform/core/tasknode.h
+4
-2
未找到文件。
taskbusplatform/core/tasknode.cpp
浏览文件 @
f8b6233e
...
...
@@ -178,20 +178,20 @@ void taskNode::slot_readyReadStandardOutput()
{
//QByteArray arred = m_process->readAllStandardOutput();
//Size reuse
const
qsizetype
tailsize
=
m_array_stdout
.
size
()
-
m_
currsize
;
const
qsizetype
tailsize
=
m_array_stdout
.
size
()
-
m_
readBufMax
;
if
(
tailsize
<
total_sz
)
{
m_array_stdout
.
resize
(
m_
currsize
+
total_sz
);
m_array_stdout
.
resize
(
m_
readBufMax
+
total_sz
);
}
total_sz
=
m_process
->
read
(
m_array_stdout
.
data
()
+
m_
currsize
,
total_sz
);
m_
currsize
+=
total_sz
;
total_sz
=
m_process
->
read
(
m_array_stdout
.
data
()
+
m_
readBufMax
,
total_sz
);
m_
readBufMax
+=
total_sz
;
extern
QAtomicInt
g_totalrev
;
g_totalrev
+=
total_sz
;
qsizetype
startByte
=
0
;
char
*
pBufStart
=
m_array_stdout
.
data
();
while
(
static_cast
<
int
>
(
sizeof
(
TASKBUS
::
subject_package_header
))
+
startByte
<
m_
currsize
)
while
(
static_cast
<
int
>
(
sizeof
(
TASKBUS
::
subject_package_header
))
+
startByte
<
m_
readBufMax
)
{
auto
*
header
=
reinterpret_cast
<
const
TASKBUS
::
subject_package_header
*>
...
...
@@ -205,7 +205,7 @@ void taskNode::slot_readyReadStandardOutput()
}
else
{
if
(
m_
currsize
>=
if
(
m_
readBufMax
>=
startByte
+
sizeof
(
TASKBUS
::
subject_package_header
)
+
header
->
data_length
)
{
++
m_spackage_sent
;
...
...
@@ -245,10 +245,10 @@ void taskNode::slot_readyReadStandardOutput()
}
}
//Move tail
const
int
taiBytes
=
m_
currsize
-
startByte
;
const
int
taiBytes
=
m_
readBufMax
-
startByte
;
if
(
taiBytes
)
memmove
(
pBufStart
,
pBufStart
+
startByte
,
taiBytes
);
m_
currsize
=
taiBytes
;
m_
readBufMax
=
taiBytes
;
total_sz
=
m_process
->
size
();
}
...
...
@@ -374,9 +374,13 @@ void taskNode::slot_readyReadStandardError()
bool
taskNode
::
enqueue_write
(
const
char
*
pack
,
qsizetype
sz
)
{
m_mtxPackage
.
lock
();
int
z
=
m_queue
.
size
();
m_queue
.
push_back
(
QByteArray
(
pack
,
sz
));
qsizetype
z
=
m_writeBufMax
;
if
(
m_writeBufMax
+
sz
>
m_array_stdin
.
size
())
m_array_stdin
.
resize
(
m_writeBufMax
+
sz
);
memcpy
(
m_array_stdin
.
data
()
+
m_writeBufMax
,
pack
,
sz
);
m_writeBufMax
+=
sz
;
m_mtxPackage
.
unlock
();
++
m_spackage_recieved
;
if
(
!
z
)
emit
sig_new_package
();
return
true
;
...
...
@@ -384,21 +388,13 @@ bool taskNode::enqueue_write(const char * pack, qsizetype sz)
void
taskNode
::
slot_write
()
{
m_mtxPackage
.
lock
();
QByteArrayList
arr_task
=
m_queue
;
m_queue
.
clear
();
if
(
m_bDebug
)
log_package
(
false
,
m_array_stdin
.
data
(),
m_writeBufMax
);
m_sbytes_recieved
+=
m_array_stdin
.
size
();
if
(
m_process
->
state
()
==
QProcess
::
Running
)
m_process
->
write
(
m_array_stdin
.
constData
(),
m_writeBufMax
);
m_writeBufMax
=
0
;
m_mtxPackage
.
unlock
();
for
(
auto
p
=
arr_task
.
begin
();
p
!=
arr_task
.
end
();
++
p
)
{
if
(
m_bDebug
)
log_package
(
false
,
p
->
data
(),
p
->
size
());
++
m_spackage_recieved
;
m_sbytes_recieved
+=
p
->
size
();
if
(
m_process
->
state
()
==
QProcess
::
Running
)
{
m_process
->
write
(
*
p
);
}
}
}
bool
taskNode
::
cmd_sendcmd
(
QMap
<
QString
,
QVariant
>
cmd
,
QSet
<
QString
>
destins
)
{
...
...
taskbusplatform/core/tasknode.h
浏览文件 @
f8b6233e
...
...
@@ -60,7 +60,7 @@ private:
taskProject
*
m_currPrj
=
nullptr
;
//进程缓存
QByteArray
m_array_stdout
;
qsizetype
m_
currsize
=
0
;
qsizetype
m_
readBufMax
=
0
;
QByteArrayList
m_arr_Strerr
;
QByteArrayList
m_packBuf
;
bool
m_bDebug
=
false
;
...
...
@@ -72,8 +72,10 @@ private:
QFile
m_dbgfile_stdout
;
QFile
m_dbgfile_stderr
;
QString
m_uuid
;
//发送队列
QMutex
m_mtxPackage
;
QList
<
QByteArray
>
m_queue
;
QByteArray
m_array_stdin
;
qsizetype
m_writeBufMax
=
0
;
QString
dbgdir
();
//Call these functions to emit message and packs with bufferring approach.
void
emit_message
(
QByteArray
a
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录