diff --git a/pkg/services/control/convert.go b/pkg/services/control/convert.go index b8d7fc295..ea3c9e94b 100644 --- a/pkg/services/control/convert.go +++ b/pkg/services/control/convert.go @@ -92,3 +92,22 @@ func (w *dropObjectsResponseWrapper) FromGRPCMessage(m grpc.Message) error { return nil } + +type listShardsRequestWrapper struct { + m *ListShardsResponse +} + +func (w *listShardsRequestWrapper) ToGRPCMessage() grpc.Message { + return w.m +} + +func (w *listShardsRequestWrapper) FromGRPCMessage(m grpc.Message) error { + var ok bool + + w.m, ok = m.(*ListShardsResponse) + if !ok { + return message.NewUnexpectedMessageType(m, w.m) + } + + return nil +} diff --git a/pkg/services/control/rpc.go b/pkg/services/control/rpc.go index ef3311c0e..1fda70bf0 100644 --- a/pkg/services/control/rpc.go +++ b/pkg/services/control/rpc.go @@ -12,6 +12,7 @@ const ( rpcNetmapSnapshot = "NetmapSnapshot" rpcSetNetmapStatus = "SetNetmapStatus" rpcDropObjects = "DropObjects" + rpcListShards = "ListShards" ) // HealthCheck executes ControlService.HealthCheck RPC. @@ -100,3 +101,24 @@ func DropObjects( return wResp.m, nil } + +// ListShards executes ControlService.ListShards RPC. +func ListShards( + cli *client.Client, + req *ListShardsRequest, + opts ...client.CallOption, +) (*ListShardsResponse, error) { + wResp := &listShardsRequestWrapper{ + m: new(ListShardsResponse), + } + + wReq := &requestWrapper{ + m: req, + } + err := client.SendUnary(cli, common.CallMethodInfoUnary(serviceName, rpcListShards), wReq, wResp, opts...) + if err != nil { + return nil, err + } + + return wResp.m, nil +}