|
19 | 19 | import com.google.common.base.Stopwatch; |
20 | 20 | import com.google.common.base.Supplier; |
21 | 21 | import io.grpc.ClientInterceptor; |
| 22 | +import io.grpc.ServerBuilder; |
| 23 | +import io.grpc.ServerStreamTracer; |
22 | 24 | import io.opencensus.stats.StatsRecorder; |
23 | 25 | import io.opencensus.tags.Tagger; |
24 | 26 | import io.opencensus.tags.propagation.TagContextBinarySerializer; |
@@ -84,4 +86,63 @@ public static ClientInterceptor newClientTracingInterceptor() { |
84 | 86 | return censusTracing.getClientInterceptor(); |
85 | 87 | } |
86 | 88 |
|
| 89 | + /** |
| 90 | + * Returns a {@link ServerStreamTracer.Factory} with default stats implementation. |
| 91 | + */ |
| 92 | + public static ServerStreamTracer.Factory getServerStreamTracerFactory( |
| 93 | + boolean recordStartedRpcs, |
| 94 | + boolean recordFinishedRpcs, |
| 95 | + boolean recordRealTimeMetrics) { |
| 96 | + CensusStatsModule censusStats = |
| 97 | + new CensusStatsModule( |
| 98 | + STOPWATCH_SUPPLIER, |
| 99 | + true, /* propagateTags */ |
| 100 | + recordStartedRpcs, |
| 101 | + recordFinishedRpcs, |
| 102 | + recordRealTimeMetrics, |
| 103 | + false); |
| 104 | + return censusStats.getServerTracerFactory(); |
| 105 | + } |
| 106 | + |
| 107 | + /** |
| 108 | + * Returns a {@link ServerStreamTracer.Factory} with custom stats implementation. |
| 109 | + */ |
| 110 | + public static ServerStreamTracer.Factory getServerStreamTracerFactory( |
| 111 | + Tagger tagger, |
| 112 | + TagContextBinarySerializer tagCtxSerializer, |
| 113 | + StatsRecorder statsRecorder, |
| 114 | + Supplier<Stopwatch> stopwatchSupplier, |
| 115 | + boolean propagateTags, |
| 116 | + boolean recordStartedRpcs, |
| 117 | + boolean recordFinishedRpcs, |
| 118 | + boolean recordRealTimeMetrics) { |
| 119 | + CensusStatsModule censusStats = |
| 120 | + new CensusStatsModule( |
| 121 | + tagger, tagCtxSerializer, statsRecorder, stopwatchSupplier, |
| 122 | + propagateTags, recordStartedRpcs, recordFinishedRpcs, recordRealTimeMetrics, false); |
| 123 | + return censusStats.getServerTracerFactory(); |
| 124 | + } |
| 125 | + |
| 126 | + /** |
| 127 | + * Returns a {@link ServerStreamTracer.Factory} with default tracing implementation. |
| 128 | + */ |
| 129 | + public static ServerStreamTracer.Factory getServerStreamTracerFactory() { |
| 130 | + CensusTracingModule censusTracing = |
| 131 | + new CensusTracingModule( |
| 132 | + Tracing.getTracer(), |
| 133 | + Tracing.getPropagationComponent().getBinaryFormat()); |
| 134 | + return censusTracing.getServerTracerFactory(); |
| 135 | + } |
| 136 | + |
| 137 | + /** |
| 138 | + * Configures the given {@link ServerBuilder} with the provided serverStreamTracerFactory. |
| 139 | + * |
| 140 | + * @param serverBuilder the server builder to configure |
| 141 | + * @param serverStreamTracerFactory the server stream tracer factory to configure |
| 142 | + */ |
| 143 | + public static void configureServerBuilder(ServerBuilder<?> serverBuilder, |
| 144 | + ServerStreamTracer.Factory serverStreamTracerFactory) { |
| 145 | + serverBuilder.addStreamTracerFactory(serverStreamTracerFactory); |
| 146 | + } |
| 147 | + |
87 | 148 | } |
0 commit comments