proglog/api/v1/error.go
2022-02-07 23:19:02 -08:00

37 lines
691 B
Go

package log_v1
import (
"fmt"
"google.golang.org/genproto/googleapis/rpc/errdetails"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type ErrOffsetOutOfRange struct {
Offset uint64
}
func (e ErrOffsetOutOfRange) GRPCStatus() *status.Status {
st := status.New(
codes.NotFound,
fmt.Sprintf("offset out of range: %d", e.Offset),
)
msg := fmt.Sprintf(
"The requested offset is outside the log's range: %d",
e.Offset,
)
d := &errdetails.LocalizedMessage{
Locale: "en-US",
Message: msg,
}
std, err := st.WithDetails(d)
if err != nil {
return st
}
return std
}
func (e ErrOffsetOutOfRange) Error() string {
return e.GRPCStatus().Err().Error()
}