From 529dad17cf3d7d19105c87e54c932e0f106b24d2 Mon Sep 17 00:00:00 2001 From: LandaMm Date: Sun, 27 Apr 2025 15:37:04 +0200 Subject: [PATCH] feat: support custom connection struct --- hsp/request.go | 7 +++---- hsp/server/router.go | 18 +++++++----------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/hsp/request.go b/hsp/request.go index 7e71359..78dfd6b 100644 --- a/hsp/request.go +++ b/hsp/request.go @@ -4,22 +4,21 @@ import ( "encoding/json" "errors" "fmt" - "net" "slices" ) type Request struct { - conn net.Conn + conn *Connection packet *Packet } -func NewRequest(conn net.Conn, packet *Packet) *Request { +func NewRequest(conn *Connection, packet *Packet) *Request { return &Request{ conn, packet, } } -func (req *Request) Conn() net.Conn { +func (req *Request) Conn() *Connection { return req.conn } diff --git a/hsp/server/router.go b/hsp/server/router.go index c7c5fa2..ff07849 100644 --- a/hsp/server/router.go +++ b/hsp/server/router.go @@ -2,7 +2,6 @@ package server import ( "log" - "net" "github.com/LandaMm/hsp-go/hsp" ) @@ -10,7 +9,7 @@ import ( type RouteHandler func(req *hsp.Request) *hsp.Response type Router struct { - routes map[string]RouteHandler + routes map[string]RouteHandler } func NewRouter() *Router { @@ -26,15 +25,12 @@ func (r *Router) AddRoute(pathname string, handler RouteHandler) { r.routes[pathname] = handler } -func (r *Router) Handle(conn net.Conn) error { +func (r *Router) Handle(conn *hsp.Connection) error { defer conn.Close() - dupl := hsp.NewPacketDuplex(conn) - - // TODO: Ability to keep connection alive - packet, err := dupl.ReadPacket() + packet, err := conn.Read() if err != nil { - _, _ = dupl.WritePacket(hsp.NewErrorResponse(err).ToPacket()) + _, _ = conn.Write(hsp.NewErrorResponse(err).ToPacket()) return err } @@ -43,15 +39,15 @@ func (r *Router) Handle(conn net.Conn) error { if handler, ok := r.routes[route]; ok { res := handler(req) - _, err := dupl.WritePacket(res.ToPacket()) + _, err := conn.Write(res.ToPacket()) return err } else if fallback, ok := r.routes["*"]; ok { res := fallback(req) - _, err := dupl.WritePacket(res.ToPacket()) + _, err := conn.Write(res.ToPacket()) return err } } - _, err = dupl.WritePacket(hsp.NewStatusResponse(hsp.STATUS_NOTFOUND).ToPacket()) + _, err = conn.Write(hsp.NewStatusResponse(hsp.STATUS_NOTFOUND).ToPacket()) return err }