|
|
@@ -17,11 +17,14 @@ public:
|
|
|
loop_ = loop ? loop : std::make_shared<EventLoop>();
|
|
|
port = 0;
|
|
|
#if WITH_KCP
|
|
|
- enable_kcp = false;
|
|
|
+ kcp_setting = NULL;
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
virtual ~UdpServerEventLoopTmpl() {
|
|
|
+#if WITH_KCP
|
|
|
+ HV_FREE(kcp_setting);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
const EventLoopPtr& loop() {
|
|
|
@@ -66,8 +69,8 @@ public:
|
|
|
}
|
|
|
};
|
|
|
#if WITH_KCP
|
|
|
- if (enable_kcp) {
|
|
|
- hio_set_kcp(channel->io(), &kcp_setting);
|
|
|
+ if (kcp_setting) {
|
|
|
+ hio_set_kcp(channel->io(), kcp_setting);
|
|
|
}
|
|
|
#endif
|
|
|
return channel->startRead();
|
|
|
@@ -99,12 +102,14 @@ public:
|
|
|
|
|
|
#if WITH_KCP
|
|
|
void setKcp(kcp_setting_t* setting) {
|
|
|
- if (setting) {
|
|
|
- enable_kcp = true;
|
|
|
- kcp_setting = *setting;
|
|
|
- } else {
|
|
|
- enable_kcp = false;
|
|
|
+ if (setting == NULL) {
|
|
|
+ HV_FREE(kcp_setting);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (kcp_setting == NULL) {
|
|
|
+ HV_ALLOC_SIZEOF(kcp_setting);
|
|
|
}
|
|
|
+ *kcp_setting = *setting;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
@@ -113,8 +118,7 @@ public:
|
|
|
int port;
|
|
|
TSocketChannelPtr channel;
|
|
|
#if WITH_KCP
|
|
|
- bool enable_kcp;
|
|
|
- kcp_setting_t kcp_setting;
|
|
|
+ kcp_setting_t* kcp_setting;
|
|
|
#endif
|
|
|
// Callback
|
|
|
std::function<void(const TSocketChannelPtr&, Buffer*)> onMessage;
|