From 6eef946305274eac296a40baba0c62e520b27edb Mon Sep 17 00:00:00 2001 From: wangxinyuan <wangxinyuan@zhihu.com> Date: Mon, 15 Jun 2020 16:31:03 +0800 Subject: [PATCH] fix_pubsub_bug --- src/ConnectConnection.h | 15 ++++++++++++--- src/ConnectConnectionPool.h | 2 +- src/Handler.h | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ConnectConnection.h b/src/ConnectConnection.h index 315acd1..fabe118 100644 --- a/src/ConnectConnection.h +++ b/src/ConnectConnection.h @@ -13,15 +13,23 @@ #include "Request.h" #include "ResponseParser.h" +enum ConnectConnectionListIndex +{ + PostConn = 0, + PrivateConn, + + ConnListSize +}; + class ConnectConnection : public ConnectSocket, public Connection, - public ListNode<ConnectConnection>, + public ListNode<ConnectConnection, ConnectConnection*, ConnectConnectionListIndex::ConnListSize>, public DequeNode<ConnectConnection> { public: typedef ConnectConnection Value; - typedef ListNode<ConnectConnection> ListNodeType; + typedef ListNode<ConnectConnection, ConnectConnection*, ConnectConnectionListIndex::ConnListSize> ListNodeType; typedef DequeNode<ConnectConnection> DequeNodeType; typedef Alloc<ConnectConnection, Const::ConnectConnectionAllocCacheSize> Allocator; public: @@ -96,7 +104,8 @@ class ConnectConnection : bool mReadonly; }; -typedef List<ConnectConnection> ConnectConnectionList; +typedef List<ConnectConnection, ConnectConnectionListIndex::PostConn> PostConnectConnectionList; +typedef List<ConnectConnection, ConnectConnectionListIndex::PrivateConn> PrivateConnectConnectionList; typedef Deque<ConnectConnection> ConnectConnectionDeque; typedef ConnectConnection::Allocator ConnectConnectionAlloc; diff --git a/src/ConnectConnectionPool.h b/src/ConnectConnectionPool.h index 022fe28..71ee1ed 100644 --- a/src/ConnectConnectionPool.h +++ b/src/ConnectConnectionPool.h @@ -71,7 +71,7 @@ class ConnectConnectionPool Server* mServ; int mPendRequests; std::vector<ConnectConnection*> mShareConns; - std::vector<ConnectConnectionList> mPrivateConns; + std::vector<PrivateConnectConnectionList> mPrivateConns; ServerStats mStats; std::vector<LatencyMonitor> mLatencyMonitors; }; diff --git a/src/Handler.h b/src/Handler.h index a2fc55f..1a248e2 100644 --- a/src/Handler.h +++ b/src/Handler.h @@ -120,7 +120,7 @@ class Handler : public ID<Handler> std::vector<ConnectConnectionPool*> mConnPool; AcceptConnectionDeque mAcceptConns; AcceptConnectionList mPostAcceptConns; - ConnectConnectionList mPostConnectConns; + PostConnectConnectionList mPostConnectConns; ConnectConnectionDeque mWaitConnectConns; long mStatsVer; HandlerStats mStats;