fix:修正Unix编译,检测update busy。

This commit is contained in:
taynpg 2025-01-21 22:10:15 +08:00
parent b8b8803052
commit f0778e045b
2 changed files with 20 additions and 7 deletions

View File

@ -448,7 +448,11 @@ bool CClient::check_update_list(const std::string& content, std::map<std::string
mperror("Not exist {}", vi[1]);
break;
}
#ifdef _WIN32
files[CCodec::ansi_to_u8(vi[0])] = CCodec::ansi_to_u8(vi[1]);
#else
files[vi[0]] = vi[1];
#endif
}
return valid;
}
@ -619,19 +623,23 @@ void CClient::handle_frame(CFrameBuffer* buf)
break;
}
case TYPE_REQUEST_UPDATE_LIST: {
std::string content(buf->data_, buf->len_);
std::map<std::string, std::string> files;
if (check_update_list(content, files)) {
buf->type_ = TYPE_CONFIRM_UPDATE_LIST;
if (down_ && down_->trans_state_ == TRANS_REDAY) {
buf->type_ = TYPE_BUSY_UPDATE_LIST;
} else {
buf->type_ = TYPE_UNCONFIRM_UPDATE_LIST;
std::string content(buf->data_, buf->len_);
if (check_update_list(content, files)) {
buf->type_ = TYPE_CONFIRM_UPDATE_LIST;
} else {
buf->type_ = TYPE_UNCONFIRM_UPDATE_LIST;
}
}
std::swap(buf->tid_, buf->fid_);
if (!send_frame(buf)) {
mperror("Send Failed {}.", __LINE__);
break;
}
if (buf->type_ == TYPE_UNCONFIRM_UPDATE_LIST) {
if (buf->type_ != TYPE_CONFIRM_UPDATE_LIST) {
break;
}
list_serve_id_ = buf->tid_;
@ -658,6 +666,10 @@ void CClient::handle_frame(CFrameBuffer* buf)
mpinfo("remote {} do task {} failed!", buf->fid_, list_file_);
break;
}
case TYPE_BUSY_UPDATE_LIST: {
mpinfo("remote {} are busy, will not exec task {}", buf->fid_, list_file_);
break;
}
case TYPE_FILE_SIZE: {
std::string str_size(buf->data_, buf->len_);
long long size = std::stoll(str_size);

View File

@ -17,6 +17,7 @@ enum FrameType : int16_t {
TYPE_UP_LIST,
TYPE_CANCEL_LIST,
TYPE_OPEN_FILE,
TYPE_OPEN_FAILED,
TYPE_TRANS_FILE,
TYPE_TRANS_DONE,
TYPE_INTERRUPT,
@ -29,10 +30,10 @@ enum FrameType : int16_t {
TYPE_CONFIRM_UPDATE_LIST,
TYPE_UNCONFIRM_UPDATE_LIST,
TYPE_DONE_UPDATE_LIST,
TYPE_BUSY_UPDATE_LIST,
TYPE_FAILED_UPDATE_LIST,
TYPE_GET_ID,
TYPE_FILE_SIZE,
TYPE_OPEN_FAILED,
TYPE_FILE_SIZE
};
using namespace ofen;