summaryrefslogtreecommitdiff
path: root/src/common/packets.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2018-11-05 23:37:03 +0300
committerAndrei Karas <akaras@inbox.ru>2018-11-14 06:00:50 +0300
commit94366099f9019643c9e431a35af064283fab5a0c (patch)
tree809e747ca8bf89cf63ed4643ee348f7a40e74d6c /src/common/packets.c
parent77841351959658c576d1087dfdcc6ea0886ade20 (diff)
downloadhercules-94366099f9019643c9e431a35af064283fab5a0c.tar.gz
hercules-94366099f9019643c9e431a35af064283fab5a0c.tar.bz2
hercules-94366099f9019643c9e431a35af064283fab5a0c.tar.xz
hercules-94366099f9019643c9e431a35af064283fab5a0c.zip
Add interface for packets in common.
For now supported only packet length fields.
Diffstat (limited to 'src/common/packets.c')
-rw-r--r--src/common/packets.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/common/packets.c b/src/common/packets.c
new file mode 100644
index 000000000..429418e0a
--- /dev/null
+++ b/src/common/packets.c
@@ -0,0 +1,64 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2012-2018 Hercules Dev Team
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#define HERCULES_CORE
+
+#include "config/core.h" // CONSOLE_INPUT, MAX_CONSOLE_INPUT
+#include "common/packets.h"
+
+#include "common/cbasetypes.h"
+#include "common/mmo.h"
+#include "common/nullpo.h"
+
+#include <string.h>
+
+static struct packets_interface packets_s;
+struct packets_interface *packets;
+
+static void packets_init(void)
+{
+ packets->addLens();
+}
+
+static void packets_addLens(void)
+{
+#define packetLen(id, len) packets->addLen(id, len);
+#include "common/packets_len.h"
+}
+
+static void packets_addLen(int id, int len)
+{
+ Assert_retv(id <= MAX_PACKET_DB && id >= MIN_PACKET_DB);
+ packets->db[id] = len;
+}
+
+static void packets_final(void)
+{
+}
+
+void packets_defaults(void)
+{
+ packets = &packets_s;
+ packets->init = packets_init;
+ packets->final = packets_final;
+ packets->addLens = packets_addLens;
+ packets->addLen = packets_addLen;
+
+ memset(&packets->db, 0, sizeof(packets->db));
+}