Skip to content

Commit 56e6632

Browse files
committed
优化掉频繁的findChannel消耗。
1 parent 07c98ef commit 56e6632

File tree

4 files changed

+32
-4
lines changed

4 files changed

+32
-4
lines changed

kbe/src/lib/network/packet_receiver.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ namespace Network
3838
//-------------------------------------------------------------------------------------
3939
PacketReceiver::PacketReceiver() :
4040
pEndpoint_(NULL),
41+
pChannel_(NULL),
4142
pNetworkInterface_(NULL)
4243
{
4344
}
@@ -46,6 +47,7 @@ PacketReceiver::PacketReceiver() :
4647
PacketReceiver::PacketReceiver(EndPoint & endpoint,
4748
NetworkInterface & networkInterface ) :
4849
pEndpoint_(&endpoint),
50+
pChannel_(NULL),
4951
pNetworkInterface_(&networkInterface)
5052
{
5153
}
@@ -94,7 +96,16 @@ EventDispatcher & PacketReceiver::dispatcher()
9496
//-------------------------------------------------------------------------------------
9597
Channel* PacketReceiver::getChannel()
9698
{
97-
return pNetworkInterface_->findChannel(pEndpoint_->addr());
99+
if (pChannel_)
100+
{
101+
if (pChannel_->isDestroyed())
102+
return NULL;
103+
104+
return pChannel_;
105+
}
106+
107+
pChannel_ = pNetworkInterface_->findChannel(pEndpoint_->addr());
108+
return pChannel_;
98109
}
99110

100111
//-------------------------------------------------------------------------------------

kbe/src/lib/network/packet_receiver.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class PacketReceiver : public InputNotificationHandler, public PoolObject
6666
void onReclaimObject()
6767
{
6868
pEndpoint_ = NULL;
69+
pChannel_ = NULL;
6970
pNetworkInterface_ = NULL;
7071
}
7172

@@ -74,8 +75,9 @@ class PacketReceiver : public InputNotificationHandler, public PoolObject
7475
return TCP_PACKET_RECEIVER;
7576
}
7677

77-
void pEndPoint(EndPoint* pEndpoint){
78+
void pEndPoint(EndPoint* pEndpoint) {
7879
pEndpoint_ = pEndpoint;
80+
pChannel_ = NULL;
7981
}
8082

8183
EndPoint* pEndPoint() const {
@@ -92,6 +94,7 @@ class PacketReceiver : public InputNotificationHandler, public PoolObject
9294

9395
protected:
9496
EndPoint* pEndpoint_;
97+
Channel* pChannel_;
9598
NetworkInterface* pNetworkInterface_;
9699
};
97100

kbe/src/lib/network/packet_sender.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ namespace Network
3838
//-------------------------------------------------------------------------------------
3939
PacketSender::PacketSender() :
4040
pEndpoint_(NULL),
41+
pChannel_(NULL),
4142
pNetworkInterface_(NULL)
4243
{
4344
}
@@ -46,6 +47,7 @@ PacketSender::PacketSender() :
4647
PacketSender::PacketSender(EndPoint & endpoint,
4748
NetworkInterface & networkInterface):
4849
pEndpoint_(&endpoint),
50+
pChannel_(NULL),
4951
pNetworkInterface_(&networkInterface)
5052
{
5153
}
@@ -58,7 +60,16 @@ PacketSender::~PacketSender()
5860
//-------------------------------------------------------------------------------------
5961
Channel* PacketSender::getChannel()
6062
{
61-
return pNetworkInterface_->findChannel(pEndpoint_->addr());
63+
if (pChannel_)
64+
{
65+
if (pChannel_->isDestroyed())
66+
return NULL;
67+
68+
return pChannel_;
69+
}
70+
71+
pChannel_ = pNetworkInterface_->findChannel(pEndpoint_->addr());
72+
return pChannel_;
6273
}
6374

6475
//-------------------------------------------------------------------------------------

kbe/src/lib/network/packet_sender.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,12 @@ class PacketSender : public OutputNotificationHandler, public PoolObject
4949
void onReclaimObject()
5050
{
5151
pEndpoint_ = NULL;
52+
pChannel_ = NULL;
5253
pNetworkInterface_ = NULL;
5354
}
5455

55-
void pEndPoint(EndPoint* pEndpoint){
56+
void pEndPoint(EndPoint* pEndpoint) {
57+
pChannel_ = NULL;
5658
pEndpoint_ = pEndpoint;
5759
}
5860

@@ -73,6 +75,7 @@ class PacketSender : public OutputNotificationHandler, public PoolObject
7375

7476
protected:
7577
EndPoint* pEndpoint_;
78+
Channel* pChannel_;
7679
NetworkInterface* pNetworkInterface_;
7780
};
7881

0 commit comments

Comments
 (0)