9a893c4

Bowmap · bowmap.git · Tickets

Branches > main > 9a893c4 > files

Spec readers, writers, and codecs

Grahp, 2026-09-15

Commit: 9a893c43a38f78a3dea7d8632c448f5cf59d6d59
Parent: 23ec393

3 changed files:

src/net/bowmap/server/protocol/codec.clj modified (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 modified (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 modified (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)