github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/querier/queryrange/extensions.go (about)

     1  // This file includes manual changes done on top of autogenerated queryrange.pb.go from .proto file.
     2  
     3  package queryrange
     4  
     5  import "github.com/grafana/loki/pkg/querier/queryrange/queryrangebase"
     6  
     7  // To satisfy queryrange.Response interface(https://github.com/cortexproject/cortex/blob/21bad57b346c730d684d6d0205efef133422ab28/pkg/querier/queryrange/query_range.go#L88)
     8  // we need to have following method as well on response types:
     9  // GetHeaders() []*queryrange.PrometheusResponseHeader.
    10  // This could have been done by adding "Headers" field with custom type in proto definition for various Response types which doesn't work because
    11  // gogoproto doesn't generate getters for custom types so adding them here.
    12  // See issue https://github.com/gogo/protobuf/issues/477 for more details.
    13  // It also has issue of generating slices without pointer to the custom type for Repeated customtype fields, see https://github.com/gogo/protobuf/issues/478
    14  // which is why we also have to do conversion from non-pointer to pointer type.
    15  
    16  func (m *LokiLabelNamesResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader {
    17  	if m != nil {
    18  		return convertPrometheusResponseHeadersToPointers(m.Headers)
    19  	}
    20  	return nil
    21  }
    22  
    23  func (m *LokiSeriesResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader {
    24  	if m != nil {
    25  		return convertPrometheusResponseHeadersToPointers(m.Headers)
    26  	}
    27  	return nil
    28  }
    29  
    30  func (m *LokiPromResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader {
    31  	if m != nil {
    32  		return m.Response.GetHeaders()
    33  	}
    34  	return nil
    35  }
    36  
    37  func (m *LokiResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader {
    38  	if m != nil {
    39  		return convertPrometheusResponseHeadersToPointers(m.Headers)
    40  	}
    41  	return nil
    42  }
    43  
    44  func convertPrometheusResponseHeadersToPointers(h []queryrangebase.PrometheusResponseHeader) []*queryrangebase.PrometheusResponseHeader {
    45  	if h == nil {
    46  		return nil
    47  	}
    48  
    49  	resp := make([]*queryrangebase.PrometheusResponseHeader, len(h))
    50  	for i := range h {
    51  		resp[i] = &h[i]
    52  	}
    53  
    54  	return resp
    55  }
    56  
    57  // GetHeaders returns the HTTP headers in the response.
    58  func (m *IndexStatsResponse) GetHeaders() []*queryrangebase.PrometheusResponseHeader {
    59  	if m != nil {
    60  		return convertPrometheusResponseHeadersToPointers(m.Headers)
    61  	}
    62  	return nil
    63  }