From 2764aac6c14a78994cf00c656a9afb1dee0032a8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 8 Dec 2023 10:45:32 +0800 Subject: [PATCH] 1 --- server/robotserver/android_agent.cc | 43 +++++++++++++++++++++++------ server/robotserver/iomgr.cc | 2 +- server/robotserver/player.cc | 2 +- server/robotserver/player.h | 1 + server/robotserver/playermgr.cc | 7 ++++- third_party/a8 | 2 +- 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 2cfd8509..103e366f 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -126,31 +126,33 @@ behaviac::EBTStatus AndroidAgent::CoConnectBattleServer() ( std::function old_on_error; std::function old_on_connect; - std::function old_on_disconnect; + std::function old_on_disconnect; bool pending = true; bool connect_ok = false; + int socket_id = 0; ); context->old_on_error = owner_->GetWebSocket()->on_error; context->old_on_connect = owner_->GetWebSocket()->on_connect; context->old_on_disconnect = owner_->GetWebSocket()->on_disconnect; + context->socket_id = owner_->GetSocketId(); owner_->GetWebSocket()->on_error = [this, context] (a8::WebSocketClient*, int err_code) { - a8::XPrintf("WebSocketClient on_error:%d\n", {err_code}); + a8::XPrintf("id:%d WebSocketClient on_error:%d\n", {context->socket_id, err_code}); context->pending = false; context->connect_ok = false; }; owner_->GetWebSocket()->on_connect = [this, context] (a8::WebSocketClient* ) { - a8::XPrintf("WebSocketClient on_connect\n", {}); + a8::XPrintf("id:%d WebSocketClient on_connect\n", {context->socket_id}); context->pending = false; context->connect_ok = true; }; owner_->GetWebSocket()->on_disconnect = - [this, context] (a8::WebSocketClient* ) + [this, context] (a8::WebSocketClient*, int err_code) { - a8::XPrintf("WebSocketClient on_disconnect\n", {}); + a8::XPrintf("id:%d WebSocketClient on_disconnect:%d\n", {context->socket_id, err_code}); context->pending = false; context->connect_ok = false; }; @@ -172,6 +174,7 @@ behaviac::EBTStatus AndroidAgent::CoConnectBattleServer() behaviac::EBTStatus AndroidAgent::CoJoin() { + PRE_ENTER_COROUTINE(); cs::CMJoin msg; msg.set_server_id(6); msg.set_team_uuid(""); @@ -187,14 +190,36 @@ behaviac::EBTStatus AndroidAgent::CoJoin() msg.set_session_id(owner_->GetSessionId()); owner_->SendMsg(msg); - a8::XPrintf("CoJoin\n", {}); - return behaviac::BT_SUCCESS; + a8::XPrintf("CoJoin %d\n", {owner_->GetSocketId()}); + auto context = MAKE_BTCONTEXT + ( + ); + auto co = std::make_shared(context, co_id, "CoJoin"); + co->runing_cb = + [this, context] (BtCoroutine* co) + { + if (!owner_->IsJoinOk()) { + return behaviac::BT_RUNNING; + } + return behaviac::BT_SUCCESS; + }; + return StartCoroutine(co); } behaviac::EBTStatus AndroidAgent::CoUpdateGame() { - cs::CMMove msg; - owner_->SendMsg(msg); + #if 1 + if (owner_->GetWebSocket()->Connected()) { + { + cs::CMMove msg; + owner_->SendMsg(msg); + } + { + cs::CMPing msg; + owner_->SendMsg(msg); + } + } + #endif return behaviac::BT_SUCCESS; } diff --git a/server/robotserver/iomgr.cc b/server/robotserver/iomgr.cc index 4d7d01f0..50ee3274 100644 --- a/server/robotserver/iomgr.cc +++ b/server/robotserver/iomgr.cc @@ -15,7 +15,7 @@ void IoMgr::Init() auto w = std::make_shared(*c); works.push_back(w); contexts.push_back(c); - new std::thread(&IoMgr::WorkerThreadProc, this, contexts.at(0)); + //new std::thread(&IoMgr::WorkerThreadProc, this, contexts.at(0)); } } diff --git a/server/robotserver/player.cc b/server/robotserver/player.cc index b9474b3f..48f85b05 100644 --- a/server/robotserver/player.cc +++ b/server/robotserver/player.cc @@ -105,7 +105,7 @@ void Player::_SMKcpHandshake(f8::MsgHdr* hdr, const cs::SMKcpHandshake& msg) void Player::_SMPing(f8::MsgHdr* hdr, const cs::SMPing& msg) { - f8::UdpLog::Instance()->Info("%s %s", {msg.GetTypeName(), f8::PbToJson(&msg)}); + //f8::UdpLog::Instance()->Info("%s %s", {msg.GetTypeName(), f8::PbToJson(&msg)}); } void Player::_SMRpcError(f8::MsgHdr* hdr, const cs::SMRpcError& msg) diff --git a/server/robotserver/player.h b/server/robotserver/player.h index 2192f2dc..f42e42df 100644 --- a/server/robotserver/player.h +++ b/server/robotserver/player.h @@ -37,6 +37,7 @@ public: void SetLoginSucess(); void SetLoginFail(); bool IsLoginSucess() { return is_login_success_; }; + bool IsJoinOk() { return join_ok_; } void _SMKcpHandshake(f8::MsgHdr* hdr, const cs::SMKcpHandshake& msg); void _SMPing(f8::MsgHdr* hdr, const cs::SMPing& msg); diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index 1c895dbf..2d199d22 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -28,10 +28,11 @@ void PlayerMgr::Init() socket_id_hash_[hum->GetSocketId()] = hum; } #endif + int count = 0; f8::Timer::Instance()->SetInterval ( 3000, - [this] (int et, const a8::Args* args) + [this, count] (int et, const a8::Args* args) mutable { if (et == a8::TIMER_EXEC_EVENT) { int idx = account_id_hash_.size() + 1; @@ -40,6 +41,10 @@ void PlayerMgr::Init() hum->Init(idx, account_id); account_id_hash_[hum->GetAccountId()] = hum; socket_id_hash_[hum->GetSocketId()] = hum; + ++count; + if (count >= 200) { + f8::Timer::Instance()->DeleteCurrentTimer(); + } } }); } diff --git a/third_party/a8 b/third_party/a8 index 380074e2..af7a9093 160000 --- a/third_party/a8 +++ b/third_party/a8 @@ -1 +1 @@ -Subproject commit 380074e2f78043a71b134c420af20b00127b1967 +Subproject commit af7a9093a0d6a9c7427e08c5ee042d692c94c70b