func (s *OortGroupStore) StreamLookupGroup(stream groupproto.GroupStore_StreamLookupGroupServer) error { var resp groupproto.LookupGroupResponse for { req, err := stream.Recv() if err == io.EOF { return nil } if err != nil { return err } resp.Reset() resp.Rpcid = req.Rpcid items, err := s.gs.LookupGroup(stream.Context(), req.KeyA, req.KeyB) if err != nil { resp.Err = proto.TranslateError(err) } else { for _, v := range items { g := groupproto.LookupGroupItem{} g.Length = v.Length g.ChildKeyA = v.ChildKeyA g.ChildKeyB = v.ChildKeyB g.TimestampMicro = v.TimestampMicro resp.Items = append(resp.Items, &g) } } if err := stream.Send(&resp); err != nil { return err } } }
func (s *OortGroupStore) LookupGroup(ctx context.Context, req *groupproto.LookupGroupRequest) (*groupproto.LookupGroupResponse, error) { resp := &groupproto.LookupGroupResponse{Rpcid: req.Rpcid} items, err := s.gs.LookupGroup(ctx, req.KeyA, req.KeyB) if err != nil { resp.Err = proto.TranslateError(err) } else { for _, v := range items { g := groupproto.LookupGroupItem{} g.Length = v.Length g.ChildKeyA = v.ChildKeyA g.ChildKeyB = v.ChildKeyB g.TimestampMicro = v.TimestampMicro resp.Items = append(resp.Items, &g) } } return resp, nil }