From 06cd9f50186ca7a17c40ad6d4efcc90f029aa8f4 Mon Sep 17 00:00:00 2001 From: azw Date: Sun, 9 Apr 2023 09:14:57 +0000 Subject: [PATCH] 1 --- server/wsproxy/app.cc | 6 ----- server/wsproxy/downstreammgr.cc | 42 +++++++++++++++++---------------- server/wsproxy/downstreammgr.h | 2 +- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/server/wsproxy/app.cc b/server/wsproxy/app.cc index 97add9d..61cfef6 100644 --- a/server/wsproxy/app.cc +++ b/server/wsproxy/app.cc @@ -436,12 +436,6 @@ void App::ProcessIMMsg() while (im_work_node_) { IMMsgNode *pdelnode = im_work_node_; switch (im_work_node_->msgid) { - case IM_ClientSocketDisconnect: - { - DownStreamMgr::Instance()->OnClientDisconnect(pdelnode->params); - MasterMgr::Instance()->RemoveRequest(pdelnode->params.param1, pdelnode->params.sender, true); - } - break; case IM_UpStreamConnect: { DownStreamMgr::Instance()->OnTargetServerConnect(pdelnode->params); diff --git a/server/wsproxy/downstreammgr.cc b/server/wsproxy/downstreammgr.cc index dd3d4a7..79bb4c4 100644 --- a/server/wsproxy/downstreammgr.cc +++ b/server/wsproxy/downstreammgr.cc @@ -49,6 +49,9 @@ void DownStreamMgr::OnClientDisconnect(int socket_handle) socket_hash_.erase(socket_handle); } RemovePendingAccount(socket_handle); +#if 0 + MasterMgr::Instance()->RemoveRequest(pdelnode->params.param1, pdelnode->params.sender, true); +#endif } #if 0 @@ -114,28 +117,27 @@ void DownStreamMgr::BindUpStream(int socket_handle, int conn_instance_id) void DownStreamMgr::AddPendingAccount(const std::string& account_id, int socket_handle, long long req_tick) { -#if 0 f8::UdpLog::Instance()->Info("AddPendingAccount %s %d", {account_id, socket_handle}); - auto itr = pending_account_hash_.find(socket_handle); - if (itr == pending_account_hash_.end()){ - timer_list* timer = a8::Timer::Instance()->AddDeadLineTimerAndAttach(1000 * 10, - a8::XParams() - .SetSender(socket_handle), - [] (const a8::XParams& param) - { - DownStreamMgr::Instance()->pending_account_hash_.erase(param.sender); - App::Instance()->perf.max_join_time = std::max((long long)1000 * 10, App::Instance()->perf.max_join_time); - }, - &timer_attacher_.timer_list_ - - ); - pending_account_hash_[socket_handle] = std::make_tuple( - account_id, - req_tick, - timer - ); + if (!GetPendingAccount(socket_handle)){ + auto timer_wp = f8::Timer::Instance()->SetTimeoutWpEx + ( + 1000 * 10, + [this, socket_handle] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + pending_account_hash_.erase(socket_handle); + App::Instance()->perf.max_join_time = std::max((long long)1000 * 10, App::Instance()->perf.max_join_time); + } + }, + &timer_attacher_ + ); + auto p = std::make_shared(); + p->socket_handle = socket_handle; + p->account_id = account_id; + p->add_tick = req_tick; + p->timer_wp = timer_wp; + pending_account_hash_[socket_handle] = p; } -#endif } std::shared_ptr DownStreamMgr::GetPendingAccount(int socket_handle) diff --git a/server/wsproxy/downstreammgr.h b/server/wsproxy/downstreammgr.h index 80110b9..4ef44cb 100644 --- a/server/wsproxy/downstreammgr.h +++ b/server/wsproxy/downstreammgr.h @@ -30,7 +30,7 @@ private: void RemovePendingAccount(int socket_handle); private: - a8::Attacher timer_attacher_; + f8::Attacher timer_attacher_; std::map> socket_hash_; std::map> pending_account_hash_; };