This commit is contained in:
aozhiwei 2024-03-24 13:52:22 +08:00
parent b3f165760b
commit c68e482dd8
2 changed files with 23 additions and 5 deletions

View File

@ -18,6 +18,14 @@
#include "downstreammgr.h"
#include "GCListener.h"
struct HttpTunnelRequest
{
int socket_handle = 0;
long long context_id = 0;
std::shared_ptr<f8::JsonHttpRequest> request;
};
class RequestTarget
{
public:
@ -234,18 +242,26 @@ std::shared_ptr<RequestTarget> MasterMgr::GetRequestByContextId(long long contex
void MasterMgr::AddHttpTunnelRequest(int socket_handle, std::shared_ptr<f8::JsonHttpRequest> request)
{
pending_http_tunnel_socket_hash_[socket_handle] = request;
++curr_context_id_;
auto req = std::make_shared<HttpTunnelRequest>();
req->socket_handle = socket_handle;
req->context_id = curr_context_id_;
req->request = request;
pending_http_tunnel_socket_hash_[socket_handle] = req;
pending_http_tunnel_context_hash_[curr_context_id_] = req;
}
void MasterMgr::RemoveHttpTunnelRequest(int socket_handle)
{
auto req = GetHttpTunnelRequest(socket_handle);
if (req) {
pending_http_tunnel_socket_hash_.end();
pending_http_tunnel_socket_hash_.erase(req->socket_handle);
pending_http_tunnel_context_hash_.erase(req->context_id);
}
}
std::shared_ptr<f8::JsonHttpRequest> MasterMgr::GetHttpTunnelRequest(int socket_handle)
std::shared_ptr<HttpTunnelRequest> MasterMgr::GetHttpTunnelRequest(int socket_handle)
{
auto itr = pending_http_tunnel_socket_hash_.find(socket_handle);
return itr != pending_http_tunnel_socket_hash_.end() ? itr->second : nullptr;

View File

@ -11,6 +11,7 @@ namespace ss
class SS_MS_HttpTunnelResponse;
}
struct HttpTunnelRequest;
class RequestTarget;
class Master;
class MasterMgr : public a8::Singleton<MasterMgr>
@ -40,7 +41,7 @@ class MasterMgr : public a8::Singleton<MasterMgr>
void AddHttpTunnelRequest(int socket_handle, std::shared_ptr<f8::JsonHttpRequest> request);
private:
std::shared_ptr<f8::JsonHttpRequest> GetHttpTunnelRequest(int socket_handle);
std::shared_ptr<HttpTunnelRequest> GetHttpTunnelRequest(int socket_handle);
std::shared_ptr<RequestTarget> GetRequestBySocket(int socket_handle);
std::shared_ptr<RequestTarget> GetRequestByContextId(long long context_id);
std::shared_ptr<Master> GetConnById(int instance_id);
@ -53,5 +54,6 @@ class MasterMgr : public a8::Singleton<MasterMgr>
std::map<int, std::shared_ptr<RequestTarget>> pending_socket_hash_;
std::map<long long, std::shared_ptr<RequestTarget>> pending_context_hash_;
std::map<int, std::shared_ptr<f8::JsonHttpRequest>> pending_http_tunnel_socket_hash_;
std::map<int, std::shared_ptr<HttpTunnelRequest>> pending_http_tunnel_socket_hash_;
std::map<long long, std::shared_ptr<HttpTunnelRequest>> pending_http_tunnel_context_hash_;
};