package tcp import ( "errors" "spark-server/internal/pkg/errs" "spark-server/internal/transport/tcp/protocol" ) func errorCode(err error) protocol.ErrorBody { switch { case err == nil: return protocol.ErrorBody{Code: protocol.CodeOK} case errors.Is(err, errs.ErrUnauthorized): return protocol.ErrorBody{Code: protocol.CodeUnauthorized, Message: err.Error()} case errors.Is(err, errs.ErrNotAuthenticated): return protocol.ErrorBody{Code: protocol.CodeNotAuth, Message: err.Error()} case errors.Is(err, errs.ErrForbidden): return protocol.ErrorBody{Code: protocol.CodeForbidden, Message: err.Error()} case errors.Is(err, errs.ErrNotFound): return protocol.ErrorBody{Code: protocol.CodeNotFound, Message: err.Error()} case errors.Is(err, errs.ErrInvalidArgument), errors.Is(err, errs.ErrInvalidFrame), errors.Is(err, errs.ErrFrameTooLarge): return protocol.ErrorBody{Code: protocol.CodeInvalid, Message: err.Error()} case errors.Is(err, errs.ErrBusy), errors.Is(err, errs.ErrOutboundDropped): return protocol.ErrorBody{Code: protocol.CodeBusy, Message: err.Error()} case errors.Is(err, errs.ErrRateLimited): return protocol.ErrorBody{Code: protocol.CodeRateLimited, Message: err.Error()} default: return protocol.ErrorBody{Code: protocol.CodeInternal, Message: "internal"} } } func replyFrame(cmd uint16, seq uint32, req uint64, body []byte, flags uint16) protocol.Frame { return protocol.Frame{Magic: protocol.Magic, Version: protocol.CurrentVersion, Command: cmd, Flags: flags, RequestID: req, SequenceID: seq, Body: body} }