9a893c4
Branches > main > 9a893c4 > files
Spec readers, writers, and codecs
Commit: 9a893c43a38f78a3dea7d8632c448f5cf59d6d59
Parent: 23ec393
3 changed files:
src/net/bowmap/server/protocol/codec.clj view file
@@ -1,5 +1,6 @@ (ns net.bowmap.server.protocol.codec (:require+ [clojure.spec.alpha :as s] [net.bowmap.server.protocol.clientbound-packets :as clientbound] [net.bowmap.server.protocol.frame :refer [frame]] [net.bowmap.server.protocol.packet :as packet]@@ -8,6 +9,9 @@ [net.bowmap.server.protocol.serverbound-packets :as serverbound] [net.bowmap.server.protocol.writers :as writers])) +(s/def ::codec (s/or :reader ::readers/reader+ :writer ::writers/writer))+ (defn encode-packet "Encodes a packet into a frame. Throws when the packet cannot be encoded."src/net/bowmap/server/protocol/readers.clj view file
@@ -4,12 +4,17 @@ Functions look like type<, where 'type' is a Minecraft protocol type. See https://minecraft.wiki/w/Java_Edition_protocol/Packets#Data_types" (:require+ [clojure.spec.alpha :as s] [medley.core :refer [assoc-some]] [net.bowmap.server.protocol.types :refer [max-varint-size]]) (:import [io.netty.buffer ByteBuf] [java.nio.charset Charset])) +(s/def ::reader (s/fspec+ :args (s/cat :frame ::frame)+ :ret any?))+ (def byte< ByteBuf/.readByte) (def ubyte< ByteBuf/.readUnsignedByte) (def short< ByteBuf/.readShort)src/net/bowmap/server/protocol/writers.clj view file
@@ -4,11 +4,17 @@ See https://minecraft.wiki/w/Java_Edition_protocol/Packets#Data_types" (:require [clojure.data.json :as json]+ [clojure.spec.alpha :as s] [net.bowmap.server.protocol.schema :as p]) (:import [io.netty.buffer ByteBuf] [java.nio.charset Charset])) +(s/def ::writer (s/fspec+ :args (s/cat :frame ::frame :value any?)+ :fn #(= (-> % :args :frame)+ (:ret %))))+ (def byte> ByteBuf/.writeByte) (def ubyte> ByteBuf/.writeByte) (def short> ByteBuf/.writeShort)