@@ -8,6 +8,13 @@ import (
88 "log/slog"
99)
1010
11+ var errNilHandler = errors .New ("nil handler provided" )
12+ var errCouldNotHandleMsg = errors .New ("could not handle message" )
13+ var errCouldNotSendResp = errors .New ("could not send response" )
14+ var errCouldNotMarshalResp = errors .New ("could not marshal response" )
15+ var errCouldNotMarshalError = errors .New ("could not marshal error" )
16+ var errCouldNotMarshalErrorResp = errors .New ("could not marshal error response" )
17+
1118// Server represents the JSON-RPC server.
1219type Server struct {
1320 stream * Stream
@@ -21,7 +28,7 @@ func NewServer(
2128 writer io.Writer ,
2229) (* Server , error ) {
2330 if handler == nil {
24- return nil , errors . New ( "nil handler provided" )
31+ return nil , errNilHandler
2532 }
2633
2734 stream := NewStream (reader , writer )
@@ -61,7 +68,7 @@ func (s *Server) handleMessage(msg []byte) error {
6168 if err != nil {
6269 _ = s .sendError (req .ID , ErrorCodeParseError , err .Error (), nil )
6370
64- return fmt .Errorf ("could not unmarshal message: %s " , err )
71+ return fmt .Errorf ("could not unmarshal message: %w " , err )
6572 }
6673
6774 result , handleErr := s .handler .Handle (req .Method , req .Params )
@@ -70,10 +77,10 @@ func (s *Server) handleMessage(msg []byte) error {
7077 err = s .sendError (req .ID , handleErr .Code , handleErr .Message , handleErr .Data )
7178
7279 if err != nil {
73- return fmt .Errorf ("could not send error: %s " , err )
80+ return fmt .Errorf ("could not send error: %w " , err )
7481 }
7582
76- return fmt .Errorf ("could not handle message : %s" , handleErr .Message )
83+ return fmt .Errorf ("%w : %s" , errCouldNotHandleMsg , handleErr .Message )
7784 }
7885
7986 if req .ID .IsNull () || result == nil {
@@ -83,7 +90,7 @@ func (s *Server) handleMessage(msg []byte) error {
8390 err = s .sendResponse (req .ID , result )
8491
8592 if err != nil {
86- return fmt .Errorf ("could not send response : %s" , err )
93+ return fmt .Errorf ("%w : %w" , errCouldNotSendResp , err )
8794 }
8895
8996 return nil
@@ -94,7 +101,7 @@ func (s *Server) sendResponse(id RequestID, result json.RawMessage) error {
94101 data , err := json .Marshal (res )
95102
96103 if err != nil {
97- return fmt .Errorf ("could not marshal response : %w" , err )
104+ return fmt .Errorf ("%w : %w" , errCouldNotMarshalResp , err )
98105 }
99106
100107 return s .stream .WriteMessage (data )
@@ -110,14 +117,14 @@ func (s *Server) sendError(
110117 errData , err := json .Marshal (errObj )
111118
112119 if err != nil {
113- return fmt .Errorf ("could not marshal error : %w" , err )
120+ return fmt .Errorf ("%w : %w" , errCouldNotMarshalError , err )
114121 }
115122
116123 resp := NewErrorResponse (errData , id )
117124 respData , err := json .Marshal (resp )
118125
119126 if err != nil {
120- return fmt .Errorf ("could not marshal error response : %w" , err )
127+ return fmt .Errorf ("%w : %w" , errCouldNotMarshalErrorResp , err )
121128 }
122129
123130 return s .stream .WriteMessage (respData )
0 commit comments