An experimental pub/sub client and server project.

small tweaks

Changed files
+5 -15
server
+2 -12
server/peer.go
··· 1 1 package server 2 2 3 3 import ( 4 - "log/slog" 5 4 "net" 6 5 "sync" 7 - 8 - "github.com/google/uuid" 9 6 ) 10 7 11 8 // Status represents the status of a request ··· 33 30 type peer struct { 34 31 conn net.Conn 35 32 connMu sync.Mutex 36 - name string 37 33 } 38 34 39 35 func newPeer(conn net.Conn) peer { 40 36 return peer{ 41 37 conn: conn, 42 - name: uuid.New().String(), 43 38 } 44 39 } 45 40 ··· 50 45 type connOpp func(conn net.Conn) error 51 46 52 47 func (p *peer) connOperation(op connOpp, from string) error { 53 - slog.Info("operation running", "from", from, "peer", p.conn.RemoteAddr(), "name", p.name, "mu addr", &p.connMu) 54 - 55 48 p.connMu.Lock() 56 - err := op(p.conn) 57 - p.connMu.Unlock() 49 + defer p.connMu.Unlock() 58 50 59 - slog.Info("operation finished", "from", from, "peer", p.conn.RemoteAddr(), "name", p.name, "mu addr", &p.connMu) 60 - 61 - return err 51 + return op(p.conn) 62 52 }
+1 -1
server/server.go
··· 214 214 op := func(conn net.Conn) error { 215 215 dataLen, err := dataLength(conn) 216 216 if err != nil { 217 - slog.Error(err.Error(), "peer", peer.addr()) 217 + slog.Error("failed to read data length", "error", err, "peer", peer.addr()) 218 218 writeStatus(Error, "invalid data length of data provided", conn) 219 219 return nil 220 220 }
+2 -2
server/server_test.go
··· 215 215 func TestSendsDataToTopicSubscribers(t *testing.T) { 216 216 _ = createServer(t) 217 217 218 - subscribers := make([]net.Conn, 0, 1) 219 - for i := 0; i < 1; i++ { 218 + subscribers := make([]net.Conn, 0, 10) 219 + for i := 0; i < 10; i++ { 220 220 subscriberConn := createConnectionAndSubscribe(t, []string{topicA, topicB}) 221 221 222 222 subscribers = append(subscribers, subscriberConn)