io.grpc.Metadata.get()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(10.0k)|赞(0)|评价(0)|浏览(106)

本文整理了Java中io.grpc.Metadata.get()方法的一些代码示例,展示了Metadata.get()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Metadata.get()方法的具体详情如下:
包路径:io.grpc.Metadata
类名称:Metadata
方法名:get

Metadata.get介绍

[英]Returns the last metadata entry added with the name 'name' parsed as T.
[中]返回最后添加的元数据项,其名称“name”被解析为T。

代码示例

代码示例来源:origin: Netflix/concurrency-limits

/**
 * Partition the limit by a request header.
 * @return Chainable builder
 */
public GrpcServerLimiterBuilder partitionByHeader(Metadata.Key<String> header) {
  return partitionResolver(context -> context.getHeaders().get(header));
}

代码示例来源:origin: AxonFramework/AxonFramework

public static RuntimeException parse(Throwable ex) {
  String code = "AXONIQ-0001";
  if( ex instanceof StatusRuntimeException) {
    if(ex.getCause() instanceof EventStoreClientException) {
      return (EventStoreClientException)ex.getCause();
    }
    StatusRuntimeException statusRuntimeException = (StatusRuntimeException)ex;
    if(Status.Code.UNIMPLEMENTED.equals(statusRuntimeException.getStatus().getCode()) ) {
      return new UnsupportedOperationException(ex.getMessage(), ex);
    }
    Metadata trailer = statusRuntimeException.getTrailers();
    String errorCode = trailer.get(ERROR_CODE_KEY);
    if (errorCode != null) {
      code = errorCode;
    }
  }
  return ErrorCode.getFromCode(code).convert(ex);
}

代码示例来源:origin: weibocom/motan

private DefaultRequest getBaseMotanRequest(Metadata headers) {
  DefaultRequest request = new DefaultRequest();
  request.setMethodName(methodName);
  request.setParamtersDesc(paramsDesc);
  request.setInterfaceName(provider.getInterface().getName());
  String rid = headers.get(REQUEST_ID);
  if (rid == null) {
    rid = headers.get(Metadata.Key.of(URLParamType.requestIdFromClient.getName().toLowerCase(), Metadata.ASCII_STRING_MARSHALLER));
  }
  if (rid != null) {
    request.setAttachment(URLParamType.requestIdFromClient.getName(), rid);
  }
  // fill attachment info from headers
  Set<String> keys = headers.keys();
  for (String key : keys) {
    String value = headers.get(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER));
    if (value != null) {
      request.setAttachment(key, value);
    }
  }
  return request;
}

代码示例来源:origin: openzipkin/brave

@Override public TraceContextOrSamplingFlags extract(C carrier) {
  Tags tags = null;
  if (carrier instanceof Metadata) {
   tags = extractTags(((Metadata) carrier).get(GRPC_TAGS_BIN));
   byte[] bytes = ((Metadata) carrier).get(GRPC_TRACE_BIN);
   if (bytes != null) {
    TraceContext maybeContext = TraceContextBinaryFormat.parseBytes(bytes, tags);
    if (maybeContext != null) return TraceContextOrSamplingFlags.create(maybeContext);
   }
  }
  TraceContextOrSamplingFlags result = delegate.extract(carrier);
  if (tags == null) return result;
  return result.toBuilder().addExtra(tags).build();
 }
}

代码示例来源:origin: Alluxio/alluxio

private <ReqT, RespT> boolean authenticateCall(ServerCall<ReqT, RespT> call, Metadata headers) {
  // Try to fetch channel Id from the metadata.
  UUID channelId = headers.get(ChannelIdInjector.S_CLIENT_ID_KEY);
  boolean callAuthenticated = false;
  if (channelId != null) {
   try {
    // Fetch authenticated username for this channel and set it.
    String userName = mAuthenticationServer.getUserNameForChannel(channelId);
    if (userName != null) {
     AuthenticatedClientUser.set(userName);
    } else {
     AuthenticatedClientUser.remove();
    }
    callAuthenticated = true;
   } catch (UnauthenticatedException e) {
    LOG.debug("Channel:{} is not authenticated for call:{}", channelId.toString(),
      call.getMethodDescriptor().getFullMethodName());
    call.close(Status.UNAUTHENTICATED, headers);
   }
  } else {
   LOG.debug("Channel Id is missing for call:{}.",
     call.getMethodDescriptor().getFullMethodName());
   call.close(Status.UNAUTHENTICATED, headers);
  }
  return callAuthenticated;
 }
}

代码示例来源:origin: googleapis/google-cloud-java

static long extractRetryDelay(Throwable cause) {
  if (cause != null) {
   Metadata trailers = Status.trailersFromThrowable(cause);
   if (trailers != null && trailers.containsKey(KEY_RETRY_INFO)) {
    RetryInfo retryInfo = trailers.get(KEY_RETRY_INFO);
    if (retryInfo.hasRetryDelay()) {
     return Durations.toMillis(retryInfo.getRetryDelay());
    }
   }
  }
  return -1L;
 }
}

代码示例来源:origin: googleapis/google-cloud-java

@Test
public void testGetHeadersAsMetadata() {
 Map<String, String> headers = ImmutableMap.of("header1", "value1", "header2", "value2");
 SpannerMetadataProvider metadataProvider = SpannerMetadataProvider.create(headers, "header3");
 Metadata metadata = metadataProvider.newMetadata(null, "stuff");
 assertEquals(headers.size() + 1, metadata.keys().size());
 assertEquals(
   headers.get("header1"), metadata.get(Key.of("header1", Metadata.ASCII_STRING_MARSHALLER)));
 assertEquals(
   headers.get("header2"), metadata.get(Key.of("header2", Metadata.ASCII_STRING_MARSHALLER)));
 assertEquals("stuff", metadata.get(Key.of("header3", Metadata.ASCII_STRING_MARSHALLER)));
}

代码示例来源:origin: googleapis/google-cloud-java

private String getResourceHeaderValue(
   SpannerMetadataProvider headerProvider, String resourceTokenTemplate) {
  Metadata metadata = headerProvider.newMetadata(resourceTokenTemplate, "projects/p");
  assertEquals(1, metadata.keys().size());
  return metadata.get(Key.of("header3", Metadata.ASCII_STRING_MARSHALLER));
 }
}

代码示例来源:origin: Alluxio/alluxio

if (e.getTrailers() != null && e.getTrailers().containsKey(sInnerCauseKey)) {
 try {
  cause = (Throwable) SerializationUtils.deserialize(e.getTrailers().get(sInnerCauseKey));
 } catch (Exception exc) {
  LOG.warn("Failed to deserialize the cause: {}", exc);

代码示例来源:origin: yidongnan/grpc-spring-boot-starter

@Override
  public Authentication readAuthentication(final ServerCall<?, ?> call, final Metadata headers) {
    final String header = headers.get(AUTHORIZATION_HEADER);

    if (header == null || !header.toLowerCase().startsWith(PREFIX)) {
      log.debug("No bearer auth header found");
      return null;
    }

    // Cut away the "bearer " prefix
    final String accessToken = header.substring(PREFIX_LENGTH);

    // Not authenticated yet, token needs to be processed
    return tokenWrapper.apply(accessToken);
  }
}

代码示例来源:origin: yidongnan/grpc-spring-boot-starter

@Override
public Authentication readAuthentication(final ServerCall<?, ?> call, final Metadata headers)
    throws AuthenticationException {
  final String header = headers.get(AUTHORIZATION_HEADER);
  if (header == null || !header.toLowerCase().startsWith(PREFIX)) {
    log.debug("No basic auth header found");
    return null;
  }
  final String[] decoded = extractAndDecodeHeader(header);
  return new UsernamePasswordAuthenticationToken(decoded[0], decoded[1]);
}

代码示例来源:origin: mrdear/JavaWEB

@Override
  public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call,
                                 Metadata headers, ServerCallHandler<ReqT, RespT> next) {
    System.out.println("执行server拦截器1,获取token");
    //获取客户端参数
    Metadata.Key<String> token = Metadata.Key.of("token", Metadata.ASCII_STRING_MARSHALLER);
    String tokenStr = headers.get(token);
    if (StringUtil.isNullOrEmpty(tokenStr)){
      System.out.println("未收到客户端token,关闭此连接");
      call.close(Status.DATA_LOSS,headers);
    }
    //服务端写回参数
    ServerCall<ReqT, RespT> serverCall = new ForwardingServerCall.SimpleForwardingServerCall<ReqT, RespT>(call) {
      @Override
      public void sendHeaders(Metadata headers) {
        System.out.println("执行server拦截器2,写入token");
        headers.put(token,tokenStr);
        super.sendHeaders(headers);
      }
    };
    return next.startCall(serverCall,headers);
  }
}

代码示例来源:origin: yidongnan/grpc-spring-boot-starter

@Override
public <ReqT, RespT> Listener<ReqT> interceptCall(final ServerCall<ReqT, RespT> call, final Metadata headers,
    final ServerCallHandler<ReqT, RespT> next) {
  assertEquals(this.compressor, Objects.toString(headers.get(ENCODING), "identity"));
  return next.startCall(call, headers);
}

代码示例来源:origin: com.salesforce.servicelibs/grpc-contrib

/**
 * Returns the last ambient context entry added with the name 'name' parsed as T.
 *
 * @return the parsed metadata entry or null if there are none.
 */
@Nullable
public <T> T get(Metadata.Key<T> key) {
  return contextMetadata.get(key);
}

代码示例来源:origin: net.devh/grpc-server-spring-boot-autoconfigure

@Override
  public Authentication readAuthentication(final ServerCall<?, ?> call, final Metadata headers) {
    final String header = headers.get(AUTHORIZATION_HEADER);

    if (header == null || !header.toLowerCase().startsWith(PREFIX)) {
      log.debug("No bearer auth header found");
      return null;
    }

    // Cut away the "bearer " prefix
    final String accessToken = header.substring(PREFIX_LENGTH);

    // Not authenticated yet, token needs to be processed
    return tokenWrapper.apply(accessToken);
  }
}

代码示例来源:origin: io.grpc/grpc-core

@SuppressWarnings("ReferenceEquality")
 @Override
 public ServerStreamTracer newServerStreamTracer(String fullMethodName, Metadata headers) {
  SpanContext remoteSpan = headers.get(tracingHeader);
  if (remoteSpan == SpanContext.INVALID) {
   remoteSpan = null;
  }
  return new ServerTracer(fullMethodName, remoteSpan);
 }
}

代码示例来源:origin: net.devh/grpc-server-spring-boot-autoconfigure

@Override
public Authentication readAuthentication(final ServerCall<?, ?> call, final Metadata headers)
    throws AuthenticationException {
  final String header = headers.get(AUTHORIZATION_HEADER);
  if (header == null || !header.toLowerCase().startsWith(PREFIX)) {
    log.debug("No basic auth header found");
    return null;
  }
  final String[] decoded = extractAndDecodeHeader(header);
  return new UsernamePasswordAuthenticationToken(decoded[0], decoded[1]);
}

代码示例来源:origin: com.impetus.fabric/fabric-jdbc-driver-shaded

@SuppressWarnings("ReferenceEquality")
 @Override
 public ServerStreamTracer newServerStreamTracer(String fullMethodName, Metadata headers) {
  SpanContext remoteSpan = headers.get(tracingHeader);
  if (remoteSpan == SpanContext.INVALID) {
   remoteSpan = null;
  }
  return new ServerTracer(fullMethodName, remoteSpan);
 }
}

代码示例来源:origin: com.payneteasy.grpc-long-polling/grpc-long-polling-server

@Override
public void writeHeaders(Metadata headers) {
  LOG.trace("writeHeaders({})", headers);
  for (String key : headers.keys()) {
    response.addHeader(key, headers.get(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)));
  }
}

代码示例来源:origin: saturnism/grpc-java-by-example

@Override
 public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> serverCall, Metadata metadata, ServerCallHandler<ReqT, RespT> serverCallHandler) {
  String traceId = metadata.get(Constant.TRACE_ID_METADATA_KEY);
  Context ctx = Context.current().withValue(Constant.TRACE_ID_CTX_KEY, traceId);

  return Contexts.interceptCall(ctx, serverCall, metadata, serverCallHandler);
 }
}

相关文章