From 7d0ab8cae8889d65fc6ca02651bc60fe360f2cf3 Mon Sep 17 00:00:00 2001 From: Xadhoom <> Date: Fri, 1 Feb 2019 23:42:07 +0000 Subject: [PATCH] change implementation of packet classes --- Stub/dvlnet.h | 17 +++++++++++------ Stub/dvlnet_udp.cpp | 1 - Stub/dvlnet_udp_packet.cpp | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Stub/dvlnet.h b/Stub/dvlnet.h index a871954bc..dcb244e94 100644 --- a/Stub/dvlnet.h +++ b/Stub/dvlnet.h @@ -107,22 +107,26 @@ public: plr_t newplr(); plr_t oldplr(); const buffer_t &info(); - - template void process_data(P &self); }; - class packet_in : public packet { + template class packet_proc : public packet { public: using packet::packet; + void process_data(); + }; + + class packet_in : public packet_proc { + public: + using packet_proc::packet_proc; void create(buffer_t buf); void process_element(buffer_t &x); template void process_element(T &x); void decrypt(); }; - class packet_out : public packet { + class packet_out : public packet_proc { public: - using packet::packet; + using packet_proc::packet_proc; void create(packet_type t, plr_t s, plr_t d, buffer_t m); void create(packet_type t, plr_t s, plr_t d, turn_t u); void create(packet_type t, plr_t s, plr_t d, cookie_t c); @@ -186,8 +190,9 @@ private: void run_event_handler(_SNETEVENT &ev); }; -template void dvlnet_udp::packet::process_data(P &self) +template void dvlnet_udp::packet_proc

::process_data() { + P &self = static_cast(*this); self.process_element(m_type); self.process_element(m_src); self.process_element(m_dest); diff --git a/Stub/dvlnet_udp.cpp b/Stub/dvlnet_udp.cpp index 652dc054f..08f600bca 100644 --- a/Stub/dvlnet_udp.cpp +++ b/Stub/dvlnet_udp.cpp @@ -278,7 +278,6 @@ int dvlnet_udp::SNetGetProviderCaps(struct _SNETCAPS *caps) return 1; } - void *dvlnet_udp::SNetUnregisterEventHandler(event_type evtype, void(__stdcall *func)(struct _SNETEVENT *)) { registered_handlers.erase(evtype); diff --git a/Stub/dvlnet_udp_packet.cpp b/Stub/dvlnet_udp_packet.cpp index c09964ea8..942b435d6 100644 --- a/Stub/dvlnet_udp_packet.cpp +++ b/Stub/dvlnet_udp_packet.cpp @@ -116,7 +116,7 @@ void dvlnet_udp::packet_in::decrypt() decrypted_buffer = encrypted_buffer; } - process_data(*this); + process_data(); have_decrypted = true; } @@ -212,7 +212,7 @@ void dvlnet_udp::packet_out::encrypt() if (have_encrypted) return; - process_data(*this); + process_data(); if (!disable_encryption) { auto len_cleartext = encrypted_buffer.size();