This commit is contained in:
azw 2023-04-13 22:45:28 +00:00
parent 59b94bced1
commit fb9fefd1aa
2 changed files with 14 additions and 12 deletions

View File

@ -87,7 +87,7 @@ void MasterMgr::RequestTargetServer(f8::MsgHdr& hdr,
int is_reconnect, int is_reconnect,
int proto_version) int proto_version)
{ {
if (GetContextIdBySocket(hdr.socket_handle) != 0) { if (GetRequestBySocket(hdr.socket_handle)) {
return; return;
} }
unsigned int code = 0; unsigned int code = 0;
@ -121,9 +121,9 @@ void MasterMgr::RequestTargetServer(f8::MsgHdr& hdr,
msg.set_proto_version(proto_version); msg.set_proto_version(proto_version);
svr->SendMsg(msg); svr->SendMsg(msg);
pending_socket_hash_[hdr.socket_handle] = curr_context_id_; pending_socket_hash_[hdr.socket_handle] = req;
assert(pending_request_hash_.find(curr_context_id_) == pending_request_hash_.end()); assert(pending_context_hash_.find(curr_context_id_) == pending_context_hash_.end());
pending_request_hash_[curr_context_id_] = req; pending_context_hash_[curr_context_id_] = req;
req->timer_wp = f8::Timer::Instance()->SetTimeoutWp req->timer_wp = f8::Timer::Instance()->SetTimeoutWp
(1000 * 10, (1000 * 10,
[req] (int event, const a8::Args* args) [req] (int event, const a8::Args* args)
@ -148,6 +148,7 @@ void MasterMgr::RequestTargetServer(f8::MsgHdr& hdr,
void MasterMgr::RemoveRequest(int socket_handle, long long context_id, bool auto_free) void MasterMgr::RemoveRequest(int socket_handle, long long context_id, bool auto_free)
{ {
#if 0
if (context_id == GetContextIdBySocket(socket_handle)) { if (context_id == GetContextIdBySocket(socket_handle)) {
auto req = GetRequestByContextId(context_id); auto req = GetRequestByContextId(context_id);
if (req) { if (req) {
@ -158,19 +159,20 @@ void MasterMgr::RemoveRequest(int socket_handle, long long context_id, bool auto
free(req->hdr_copy); free(req->hdr_copy);
} }
} }
pending_request_hash_.erase(context_id); pending_context_hash_.erase(context_id);
pending_socket_hash_.erase(socket_handle); pending_socket_hash_.erase(socket_handle);
} }
#endif
} }
long long MasterMgr::GetContextIdBySocket(int socket_handle) std::shared_ptr<RequestTarget> MasterMgr::GetRequestBySocket(int socket_handle)
{ {
auto itr = pending_socket_hash_.find(socket_handle); auto itr = pending_socket_hash_.find(socket_handle);
return itr != pending_socket_hash_.end() ? itr->second : 0; return itr != pending_socket_hash_.end() ? itr->second : nullptr;
} }
std::shared_ptr<RequestTarget> MasterMgr::GetRequestByContextId(long long context_id) std::shared_ptr<RequestTarget> MasterMgr::GetRequestByContextId(long long context_id)
{ {
auto itr = pending_request_hash_.find(context_id); auto itr = pending_context_hash_.find(context_id);
return itr != pending_request_hash_.end() ? itr->second : nullptr; return itr != pending_context_hash_.end() ? itr->second : nullptr;
} }

View File

@ -36,14 +36,14 @@ class MasterMgr : public a8::Singleton<MasterMgr>
void RemoveRequest(int socket_handle, long long context_id, bool auto_free); void RemoveRequest(int socket_handle, long long context_id, bool auto_free);
private: private:
long long GetContextIdBySocket(int socket_handle); std::shared_ptr<RequestTarget> GetRequestBySocket(int socket_handle);
std::shared_ptr<RequestTarget> GetRequestByContextId(long long context_id); std::shared_ptr<RequestTarget> GetRequestByContextId(long long context_id);
std::shared_ptr<Master> GetConnById(int instance_id); std::shared_ptr<Master> GetConnById(int instance_id);
private: private:
long long curr_context_id_ = 0; long long curr_context_id_ = 0;
std::map<int, std::shared_ptr<Master>> mastersvr_hash_; std::map<int, std::shared_ptr<Master>> mastersvr_hash_;
std::map<int, long long> pending_socket_hash_; std::map<int, std::shared_ptr<RequestTarget>> pending_socket_hash_;
std::map<long long, std::shared_ptr<RequestTarget>> pending_request_hash_; std::map<long long, std::shared_ptr<RequestTarget>> pending_context_hash_;
}; };