开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from OpenHarmony/developtools_hdc
关闭
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (138)
标签 (38)
master
weekly_20240422
revert-merge-1025-master
weekly_20240415
weekly_20240408
revert-merge-1004-master
weekly_20240401
weekly_20240325
revert-merge-971-master
weekly_20240318
weekly_20240311
revert-merge-921-master
weekly_20240304
revert-merge-937-master
weekly_20240226
OpenHarmony-4.1-Release
weekly_20240219
weekly_20240212
weekly_20240205
weekly_20240129
OpenHarmony-v4.1-Release
weekly_20240115-v
master-v
OpenHarmony-v4.1-Beta1
OpenHarmony-v4.0-Release
OpenHarmony-v4.0.1-Release
OpenHarmony-v4.0-Beta2
OpenHarmony-v3.2.3-Release
OpenHarmony-v3.2.4-Release
OpenHarmony-v4.0-Beta1
OpenHarmony-v3.2-Release
OpenHarmony-v3.2.1-Release
OpenHarmony-v3.2.2-Release
OpenHarmony-v3.2-Beta5
OpenHarmony-v3.1.5-Release
OpenHarmony-v3.1.6-Release
OpenHarmony-v3.1.7-Release
OpenHarmony-v3.2-Beta4
OpenHarmony-v3.1.4-Release
OpenHarmony-v3.2-Beta3
master
分支 (138)
标签 (38)
master
weekly_20240422
revert-merge-1025-master
weekly_20240415
weekly_20240408
revert-merge-1004-master
weekly_20240401
weekly_20240325
revert-merge-971-master
weekly_20240318
weekly_20240311
revert-merge-921-master
weekly_20240304
revert-merge-937-master
weekly_20240226
OpenHarmony-4.1-Release
weekly_20240219
weekly_20240212
weekly_20240205
weekly_20240129
OpenHarmony-v4.1-Release
weekly_20240115-v
master-v
OpenHarmony-v4.1-Beta1
OpenHarmony-v4.0-Release
OpenHarmony-v4.0.1-Release
OpenHarmony-v4.0-Beta2
OpenHarmony-v3.2.3-Release
OpenHarmony-v3.2.4-Release
OpenHarmony-v4.0-Beta1
OpenHarmony-v3.2-Release
OpenHarmony-v3.2.1-Release
OpenHarmony-v3.2.2-Release
OpenHarmony-v3.2-Beta5
OpenHarmony-v3.1.5-Release
OpenHarmony-v3.1.6-Release
OpenHarmony-v3.1.7-Release
OpenHarmony-v3.2-Beta4
OpenHarmony-v3.1.4-Release
OpenHarmony-v3.2-Beta3
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (138)
标签 (38)
master
weekly_20240422
revert-merge-1025-master
weekly_20240415
weekly_20240408
revert-merge-1004-master
weekly_20240401
weekly_20240325
revert-merge-971-master
weekly_20240318
weekly_20240311
revert-merge-921-master
weekly_20240304
revert-merge-937-master
weekly_20240226
OpenHarmony-4.1-Release
weekly_20240219
weekly_20240212
weekly_20240205
weekly_20240129
OpenHarmony-v4.1-Release
weekly_20240115-v
master-v
OpenHarmony-v4.1-Beta1
OpenHarmony-v4.0-Release
OpenHarmony-v4.0.1-Release
OpenHarmony-v4.0-Beta2
OpenHarmony-v3.2.3-Release
OpenHarmony-v3.2.4-Release
OpenHarmony-v4.0-Beta1
OpenHarmony-v3.2-Release
OpenHarmony-v3.2.1-Release
OpenHarmony-v3.2.2-Release
OpenHarmony-v3.2-Beta5
OpenHarmony-v3.1.5-Release
OpenHarmony-v3.1.6-Release
OpenHarmony-v3.1.7-Release
OpenHarmony-v3.2-Beta4
OpenHarmony-v3.1.4-Release
OpenHarmony-v3.2-Beta3
developtools_hdc
/
src
/
host
/
host_unity.cpp
developtools_hdc
/
src
/
host
/
host_unity.cpp
host_unity.cpp 5.18 KB
一键复制 编辑 原始数据 按行查看 历史
zhaolihui 提交于 2024年01月24日 17:28 +08:00 . Modify key log
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "host_unity.h"
namespace Hdc {
HdcHostUnity::HdcHostUnity(HTaskInfo hTaskInfo)
: HdcTaskBase(hTaskInfo)
{
opContext.thisClass = this;
}
HdcHostUnity::~HdcHostUnity()
{
WRITE_LOG(LOG_DEBUG, "~HdcHostUnity channelId:%u", taskInfo->channelId);
}
bool HdcHostUnity::ReadyForRelease()
{
if (!HdcTaskBase::ReadyForRelease()) {
WRITE_LOG(LOG_WARN, "not ready for release channelId:%u", taskInfo->channelId);
return false;
}
if (opContext.enableLog && !opContext.hasFilelogClosed) {
WRITE_LOG(LOG_WARN, "enableLog true hasFilelogClosed false channelId:%u", taskInfo->channelId);
return false;
}
return true;
}
void HdcHostUnity::StopTask()
{
// Do not detect RunningProtect, force to close
if (opContext.hasFilelogClosed) {
WRITE_LOG(LOG_WARN, "StopTask hasFilelogClosed true channelId:%u", taskInfo->channelId);
return;
}
if (opContext.enableLog) {
++refCount;
opContext.fsClose.data = &opContext;
WRITE_LOG(LOG_DEBUG, "taskInfo->channelId:%u fileLog:%d", taskInfo->channelId, opContext.fileLog);
uv_fs_close(loopTask, &opContext.fsClose, opContext.fileLog, OnFileClose);
}
};
void HdcHostUnity::OnFileClose(uv_fs_t *req)
{
uv_fs_req_cleanup(req);
ContextUnity *context = reinterpret_cast<ContextUnity *>(req->data);
HdcHostUnity *thisClass = reinterpret_cast<HdcHostUnity *>(context->thisClass);
context->hasFilelogClosed = true;
--thisClass->refCount;
return;
}
bool HdcHostUnity::InitLocalLog(const char *path)
{
uv_fs_t reqFs;
// block open
if (uv_fs_open(nullptr, &reqFs, path, UV_FS_O_TRUNC | UV_FS_O_CREAT | UV_FS_O_WRONLY, S_IWUSR | S_IRUSR, nullptr)
< 0) {
WRITE_LOG(LOG_FATAL, "InitLocalLog uv_fs_open failed taskInfo->channelId:%u", taskInfo->channelId);
return false;
}
uv_fs_req_cleanup(&reqFs);
opContext.fileLog = reqFs.result;
return true;
}
void HdcHostUnity::OnFileIO(uv_fs_t *req)
{
CtxUnityIO *contextIO = reinterpret_cast<CtxUnityIO *>(req->data);
ContextUnity *context = reinterpret_cast<ContextUnity *>(contextIO->context);
HdcHostUnity *thisClass = reinterpret_cast<HdcHostUnity *>(context->thisClass);
uint8_t *bufIO = contextIO->bufIO;
uv_fs_req_cleanup(req);
--thisClass->refCount;
while (true) {
if (req->result <= 0) {
if (req->result < 0) {
constexpr int bufSize = 1024;
char buf[bufSize] = { 0 };
uv_strerror_r((int)req->result, buf, bufSize);
WRITE_LOG(LOG_DEBUG, "Error OnFileIO: %s", buf);
}
break;
}
context->fileIOIndex += req->result;
break;
}
delete[] bufIO;
delete contextIO; // req is part of contextIO, no need to release
}
bool HdcHostUnity::AppendLocalLog(const char *bufLog, const int sizeLog)
{
auto buf = new uint8_t[sizeLog];
auto contextIO = new CtxUnityIO();
if (!buf || !contextIO) {
if (buf) {
delete[] buf;
}
if (contextIO) {
delete contextIO;
}
return false;
}
uv_fs_t *req = &contextIO->fs;
contextIO->bufIO = buf;
contextIO->context = &opContext;
req->data = contextIO;
++refCount;
if (memcpy_s(buf, sizeLog, bufLog, sizeLog)) {
}
uv_buf_t iov = uv_buf_init(reinterpret_cast<char *>(buf), sizeLog);
uv_fs_write(loopTask, req, opContext.fileLog, &iov, 1, opContext.fileBufIndex, OnFileIO);
opContext.fileBufIndex += sizeLog;
return true;
}
bool HdcHostUnity::CommandDispatch(const uint16_t command, uint8_t *payload, const int payloadSize)
{
bool ret = true;
// Both are executed, do not need to detect ChildReady
switch (command) {
case CMD_UNITY_BUGREPORT_INIT: {
if (strlen(reinterpret_cast<char *>(payload))) { // enable local log
if (!InitLocalLog(reinterpret_cast<const char *>(payload))) {
LogMsg(MSG_FAIL, "Cannot set locallog");
ret = false;
break;
};
opContext.enableLog = true;
}
SendToAnother(CMD_UNITY_BUGREPORT_INIT, nullptr, 0);
break;
}
case CMD_UNITY_BUGREPORT_DATA: {
if (opContext.enableLog) {
AppendLocalLog(reinterpret_cast<const char *>(payload), payloadSize);
} else {
ServerCommand(CMD_KERNEL_ECHO_RAW, payload, payloadSize);
}
break;
}
default:
break;
}
return ret;
};
} // namespace Hdc
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

Device debug connector that provides the device connection capability and a command line tool | 设备调试连接器,提供了连接设备的能力,并提供了对外的命令行工具
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/prife/developtools_hdc.git
git@gitee.com:prife/developtools_hdc.git
prife
developtools_hdc
developtools_hdc
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /