| 
					
				 | 
			
			
				@@ -0,0 +1,491 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright 2018 gRPC authors. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Licensed under the Apache License, Version 2.0 (the "License"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * you may not use this file except in compliance with the License. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * You may obtain a copy of the License at 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     http://www.apache.org/licenses/LICENSE-2.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Unless required by applicable law or agreed to in writing, software 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * distributed under the License is distributed on an "AS IS" BASIS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * See the License for the specific language governing permissions and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * limitations under the License. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <grpc/support/port_platform.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "src/cpp/ext/filters/census/grpc_plugin.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "absl/time/time.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "opencensus/stats/internal/aggregation_window.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "opencensus/stats/internal/set_aggregation_window.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "opencensus/stats/stats.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace grpc { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using ::opencensus::stats::Aggregation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using ::opencensus::stats::AggregationWindow; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using ::opencensus::stats::BucketBoundaries; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using ::opencensus::stats::ViewDescriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// These measure definitions should be kept in sync across opencensus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// implementations. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Aggregation BytesDistributionAggregation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return Aggregation::Distribution(BucketBoundaries::Explicit( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      {0, 1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       67108864, 268435456, 1073741824, 4294967296})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Aggregation MillisDistributionAggregation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return Aggregation::Distribution(BucketBoundaries::Explicit( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      {0,   0.01, 0.05, 0.1,  0.3,   0.6,   0.8,   1,     2,   3,   4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       5,   6,    8,    10,   13,    16,    20,    25,    30,  40,  50, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       65,  80,   100,  130,  160,   200,   250,   300,   400, 500, 650, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       800, 1000, 2000, 5000, 10000, 20000, 50000, 100000})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Aggregation CountDistributionAggregation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return Aggregation::Distribution(BucketBoundaries::Exponential(17, 1.0, 2.0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ViewDescriptor MinuteDescriptor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  auto descriptor = ViewDescriptor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SetAggregationWindow(AggregationWindow::Interval(absl::Minutes(1)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       &descriptor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ViewDescriptor HourDescriptor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  auto descriptor = ViewDescriptor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SetAggregationWindow(AggregationWindow::Interval(absl::Hours(1)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                       &descriptor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}  // namespace 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void RegisterOpenCensusViewsForExport() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientSentMessagesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientSentBytesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientReceivedMessagesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientReceivedBytesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientRoundtripLatencyCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientServerLatencyCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerSentMessagesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerSentBytesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerReceivedMessagesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerReceivedBytesPerRpcCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerServerLatencyCumulative().RegisterForExport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// client cumulative 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentBytesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_bytes_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedBytesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_bytes_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientRoundtripLatencyCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/roundtrip_latency/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientServerLatencyCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/server_latency/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientCompletedRpcsCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/completed_rpcs/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentMessagesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_messages_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedMessagesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_messages_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// server cumulative 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentBytesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_bytes_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedBytesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_bytes_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerServerLatencyCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/elapsed_time/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerCompletedRpcsCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/completed_rpcs/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentMessagesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_messages_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedMessagesPerRpcCumulative() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ViewDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_messages_per_rpc/cumulative") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// client minute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentBytesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_bytes_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedBytesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_bytes_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientRoundtripLatencyMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/roundtrip_latency/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientServerLatencyMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/server_latency/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientCompletedRpcsMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/completed_rpcs/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentMessagesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_messages_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedMessagesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_messages_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// server minute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentBytesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_bytes_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedBytesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_bytes_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerServerLatencyMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/server_latency/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerCompletedRpcsMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/completed_rpcs/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentMessagesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_messages_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedMessagesPerRpcMinute() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MinuteDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_messages_per_rpc/minute") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// client hour 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentBytesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_bytes_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedBytesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_bytes_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientRoundtripLatencyHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/roundtrip_latency/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientServerLatencyHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/server_latency/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientCompletedRpcsHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/completed_rpcs/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientRoundtripLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientSentMessagesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/sent_messages_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ClientReceivedMessagesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/client/received_messages_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ClientMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// server hour 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentBytesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_bytes_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedBytesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_bytes_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(BytesDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerServerLatencyHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/server_latency/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(MillisDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerCompletedRpcsHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/completed_rpcs/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerServerLatencyMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(Aggregation::Count()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerStatusTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerSentMessagesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/sent_messages_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerSentMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ViewDescriptor& ServerReceivedMessagesPerRpcHour() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const static ViewDescriptor descriptor = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      HourDescriptor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_name("grpc.io/server/received_messages_per_rpc/hour") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .set_aggregation(CountDistributionAggregation()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .add_column(ServerMethodTagKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return descriptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}  // namespace grpc 
			 |