// MarshalBinary encodes r to a binary format. func (r *FieldDimensionsResponse) MarshalBinary() ([]byte, error) { var pb internal.FieldDimensionsResponse pb.Fields = make([]string, 0, len(r.Fields)) for k := range r.Fields { pb.Fields = append(pb.Fields, k) } pb.Dimensions = make([]string, 0, len(r.Dimensions)) for k := range r.Dimensions { pb.Dimensions = append(pb.Dimensions, k) } if r.Err != nil { pb.Err = proto.String(r.Err.Error()) } return proto.Marshal(&pb) }
// UnmarshalBinary decodes data into r. func (r *FieldDimensionsResponse) UnmarshalBinary(data []byte) error { var pb internal.FieldDimensionsResponse if err := proto.Unmarshal(data, &pb); err != nil { return err } r.Fields = make(map[string]struct{}, len(pb.GetFields())) for _, s := range pb.GetFields() { r.Fields[s] = struct{}{} } r.Dimensions = make(map[string]struct{}, len(pb.GetDimensions())) for _, s := range pb.GetDimensions() { r.Dimensions[s] = struct{}{} } if pb.Err != nil { r.Err = errors.New(pb.GetErr()) } return nil }