xref: /aosp_15_r20/external/grpc-grpc/include/grpc/support/metrics.h (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2024 The gRPC Authors.
2*cc02d7e2SAndroid Build Coastguard Worker //
3*cc02d7e2SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker //
7*cc02d7e2SAndroid Build Coastguard Worker //     http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker //
9*cc02d7e2SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker // limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker 
15*cc02d7e2SAndroid Build Coastguard Worker #ifndef GRPC_SUPPORT_METRICS_H
16*cc02d7e2SAndroid Build Coastguard Worker #define GRPC_SUPPORT_METRICS_H
17*cc02d7e2SAndroid Build Coastguard Worker 
18*cc02d7e2SAndroid Build Coastguard Worker #include "absl/strings/string_view.h"
19*cc02d7e2SAndroid Build Coastguard Worker 
20*cc02d7e2SAndroid Build Coastguard Worker #include <grpc/support/port_platform.h>
21*cc02d7e2SAndroid Build Coastguard Worker 
22*cc02d7e2SAndroid Build Coastguard Worker namespace grpc_core {
23*cc02d7e2SAndroid Build Coastguard Worker namespace experimental {
24*cc02d7e2SAndroid Build Coastguard Worker 
25*cc02d7e2SAndroid Build Coastguard Worker // Configuration (scope) for a specific client channel to be used for stats
26*cc02d7e2SAndroid Build Coastguard Worker // plugins.
27*cc02d7e2SAndroid Build Coastguard Worker class StatsPluginChannelScope {
28*cc02d7e2SAndroid Build Coastguard Worker  public:
StatsPluginChannelScope(absl::string_view target,absl::string_view default_authority)29*cc02d7e2SAndroid Build Coastguard Worker   StatsPluginChannelScope(absl::string_view target,
30*cc02d7e2SAndroid Build Coastguard Worker                           absl::string_view default_authority)
31*cc02d7e2SAndroid Build Coastguard Worker       : target_(target), default_authority_(default_authority) {}
32*cc02d7e2SAndroid Build Coastguard Worker 
33*cc02d7e2SAndroid Build Coastguard Worker   /// Returns the target used for creating the channel in the canonical form.
34*cc02d7e2SAndroid Build Coastguard Worker   /// (Canonicalized target definition -
35*cc02d7e2SAndroid Build Coastguard Worker   /// https://github.com/grpc/proposal/blob/master/A66-otel-stats.md)
target()36*cc02d7e2SAndroid Build Coastguard Worker   absl::string_view target() const { return target_; }
37*cc02d7e2SAndroid Build Coastguard Worker   /// Returns the default authority for the channel.
default_authority()38*cc02d7e2SAndroid Build Coastguard Worker   absl::string_view default_authority() const { return default_authority_; }
39*cc02d7e2SAndroid Build Coastguard Worker 
40*cc02d7e2SAndroid Build Coastguard Worker  private:
41*cc02d7e2SAndroid Build Coastguard Worker   // Disable copy constructor and copy-assignment operator.
42*cc02d7e2SAndroid Build Coastguard Worker   StatsPluginChannelScope(const StatsPluginChannelScope&) = delete;
43*cc02d7e2SAndroid Build Coastguard Worker   StatsPluginChannelScope& operator=(const StatsPluginChannelScope&) = delete;
44*cc02d7e2SAndroid Build Coastguard Worker   absl::string_view target_;
45*cc02d7e2SAndroid Build Coastguard Worker   absl::string_view default_authority_;
46*cc02d7e2SAndroid Build Coastguard Worker };
47*cc02d7e2SAndroid Build Coastguard Worker 
48*cc02d7e2SAndroid Build Coastguard Worker }  // namespace experimental
49*cc02d7e2SAndroid Build Coastguard Worker }  // namespace grpc_core
50*cc02d7e2SAndroid Build Coastguard Worker 
51*cc02d7e2SAndroid Build Coastguard Worker #endif /* GRPC_SUPPORT_METRICS_H */
52