37 lines
691 B
Go
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()
|
|
}
|