io.grpc.Metadata#keys ( )源码实例Demo

下面列出了io.grpc.Metadata#keys ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: grpc-nebula-java   文件: CensusModulesTest.java
@Test
public void traceHeaders_clientMissingCensusImpl_preservingHeaders() throws Exception {
  reset(spyClientSpanBuilder);
  when(spyClientSpanBuilder.startSpan()).thenReturn(BlankSpan.INSTANCE);
  Metadata headers = new Metadata();
  headers.put(
      Metadata.Key.of("never-used-key-bin", Metadata.BINARY_BYTE_MARSHALLER),
      new byte[] {});
  Set<String> originalHeaderKeys = new HashSet<String>(headers.keys());

  CensusTracingModule.ClientCallTracer callTracer =
      censusTracing.newClientCallTracer(BlankSpan.INSTANCE, method);
  callTracer.newClientStreamTracer(CallOptions.DEFAULT, headers);

  assertThat(headers.keys()).containsExactlyElementsIn(originalHeaderKeys);
}
 
源代码2 项目: grpc-java   文件: XdsRoutingLoadBalancer.java
@Override
public PickResult pickSubchannel(PickSubchannelArgs args) {
  // Index ASCII headers by keys.
  Map<String, Set<String>> asciiHeaders = new HashMap<>();
  Metadata headers = args.getHeaders();
  for (String headerName : headers.keys()) {
    if (headerName.endsWith(Metadata.BINARY_HEADER_SUFFIX)) {
      continue;
    }
    Set<String> headerValues = new HashSet<>();
    Metadata.Key<String> key = Metadata.Key.of(headerName, Metadata.ASCII_STRING_MARSHALLER);
    for (String value : headers.getAll(key)) {
      headerValues.add(value);
    }
    asciiHeaders.put(headerName, headerValues);
  }
  for (Map.Entry<RouteMatch, SubchannelPicker> entry : routePickers.entrySet()) {
    RouteMatch routeMatch = entry.getKey();
    if (routeMatch.matches(
        "/" + args.getMethodDescriptor().getFullMethodName(), asciiHeaders)) {
      return entry.getValue().pickSubchannel(args);
    }
  }
  return PickResult.withError(Status.UNAVAILABLE.withDescription("no matching route found"));
}
 
源代码3 项目: grpc-java   文件: CensusModulesTest.java
@Test
public void traceHeaders_clientMissingCensusImpl_preservingHeaders() throws Exception {
  reset(spyClientSpanBuilder);
  when(spyClientSpanBuilder.startSpan()).thenReturn(BlankSpan.INSTANCE);
  Metadata headers = new Metadata();
  headers.put(
      Metadata.Key.of("never-used-key-bin", Metadata.BINARY_BYTE_MARSHALLER),
      new byte[] {});
  Set<String> originalHeaderKeys = new HashSet<>(headers.keys());

  CensusTracingModule.ClientCallTracer callTracer =
      censusTracing.newClientCallTracer(BlankSpan.INSTANCE, method);
  callTracer.newClientStreamTracer(STREAM_INFO, headers);

  assertThat(headers.keys()).containsExactlyElementsIn(originalHeaderKeys);
}
 
@Override
public void onHeaders(Metadata metadata) {
  super.onHeaders(metadata);
  ImmutableMap.Builder<String, String> headerBuilder = ImmutableMap.builder();
  for (String key : metadata.keys()) {
    // Ignore binary headers
    if (!key.endsWith(Metadata.BINARY_HEADER_SUFFIX)) {
      Key<String> stringKey = Key.of(key, Metadata.ASCII_STRING_MARSHALLER);
      if (metadata.containsKey(stringKey)) {
        headerBuilder.put(key, metadata.get(stringKey));
      }
    }
  }
  headerMap = headerBuilder.build();
}
 
源代码5 项目: skywalking   文件: ConsumerInterceptor.java
@Override
public void onHeaders(Metadata headers) {
    logger.info("on Headers");
    for (String key : headers.keys()) {
        logger.info("Receive key: {}", key);
    }
    delegate().onHeaders(headers);
}