netease-kit / NIM_PC_Demo

云信Windows(PC) C/C++ Demo源码仓库
Other
275 stars 174 forks source link

HttpTransThread::AddRequestToCatchList,请求id和请求的内存堆,好像都有问题 #106

Open Janeny2013 opened 1 year ago

Janeny2013 commented 1 year ago

HttpRequestID HttpTransThread::AddRequestToCatchList(const HttpRequestSharedPtr &request) { nbase::NAutoLock autolock(&message_loop_flaglock); request_currentsn -= 1; if (request_currentsn == INVALID_HTTPREQUESTID) request_currentsn = kREQUEST_ID_BASE; requestlist.insert(std::make_pair(request_currentsn, std::make_pair(request.get(), request))); request->attach_release(ToWeakCallback(std::bind(&HttpTransThread::OnRequestRelease, this, request.get()))); return request_currentsn; }

Janeny2013 commented 1 year ago

requestlist.insert(std::make_pair(request_currentsn, std::make_pair(request.get(), request))); map本身不管理内存,pair的second是监控生命期。这个不是问题了,在回话管理中管理生命期 但request_current_sn_还是没理解,这个id哪里变更

nmgwddj commented 1 month ago
HttpRequestID HttpTransThread::AddRequestToCatchList(const HttpRequestSharedPtr &request)
{
    nbase::NAutoLock autolock(&message_loop_flag_lock_);
+   request_current_sn_ -= 1;
    if (request_current_sn_ == INVALID_HTTPREQUESTID)
    request_current_sn_ = kREQUEST_ID_BASE;
    request_list_.insert(std::make_pair(request_current_sn_, std::make_pair(request.get(), request)));
    request->attach_release(ToWeakCallback(std::bind(&HttpTransThread::OnRequestRelease, this, request.get())));
    return request_current_sn_;
}

高亮处的 -= 就是变更。