Add definitino for a custom out of range gRPC error.
This commit is contained in:
parent
69e783c76c
commit
4ec590a7cf
1 changed files with 38 additions and 0 deletions
38
api/v1/error.go
Normal file
38
api/v1/error.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
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()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue