forked from TrueCloudLab/frostfs-node
[#241] object/search: Refactor service processing
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
3bfb18386b
commit
611a29f682
23 changed files with 1020 additions and 657 deletions
28
pkg/network/transport/object/grpc/search.go
Normal file
28
pkg/network/transport/object/grpc/search.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package object
|
||||
|
||||
import (
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||
objectGRPC "github.com/nspcc-dev/neofs-api-go/v2/object/grpc"
|
||||
)
|
||||
|
||||
type searchStreamerV2 struct {
|
||||
objectGRPC.ObjectService_SearchServer
|
||||
}
|
||||
|
||||
func (s *searchStreamerV2) Send(resp *object.SearchResponse) error {
|
||||
return s.ObjectService_SearchServer.Send(
|
||||
object.SearchResponseToGRPCMessage(resp),
|
||||
)
|
||||
}
|
||||
|
||||
// Search converts gRPC SearchRequest message and server-side stream and overtakes its data
|
||||
// to gRPC stream.
|
||||
func (s *Server) Search(req *objectGRPC.SearchRequest, gStream objectGRPC.ObjectService_SearchServer) error {
|
||||
// TODO: think about how we transport errors through gRPC
|
||||
return s.srv.Search(
|
||||
object.SearchRequestFromGRPCMessage(req),
|
||||
&searchStreamerV2{
|
||||
ObjectService_SearchServer: gStream,
|
||||
},
|
||||
)
|
||||
}
|
|
@ -74,31 +74,6 @@ func (s *Server) Head(ctx context.Context, req *objectGRPC.HeadRequest) (*object
|
|||
return object.HeadResponseToGRPCMessage(resp), nil
|
||||
}
|
||||
|
||||
// Search converts gRPC SearchRequest message, opens internal Object service Search stream and overtakes its data
|
||||
// to gRPC stream.
|
||||
func (s *Server) Search(req *objectGRPC.SearchRequest, gStream objectGRPC.ObjectService_SearchServer) error {
|
||||
stream, err := s.srv.Search(gStream.Context(), object.SearchRequestFromGRPCMessage(req))
|
||||
if err != nil {
|
||||
// TODO: think about how we transport errors through gRPC
|
||||
return err
|
||||
}
|
||||
|
||||
for {
|
||||
r, err := stream.Recv()
|
||||
if err != nil {
|
||||
if errors.Is(errors.Cause(err), io.EOF) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
if err := gStream.Send(object.SearchResponseToGRPCMessage(r)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetRangeHash converts gRPC GetRangeHashRequest message and passes it to internal Object service.
|
||||
func (s *Server) GetRangeHash(ctx context.Context, req *objectGRPC.GetRangeHashRequest) (*objectGRPC.GetRangeHashResponse, error) {
|
||||
resp, err := s.srv.GetRangeHash(ctx, object.GetRangeHashRequestFromGRPCMessage(req))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue