spark-server/internal/transport/tcp/errors.go
2026-09-16 19:08:06 +08:00

36 lines
1.5 KiB
Go

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}
}