36 lines
1.5 KiB
Go
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}
|
|
}
|