本文整理了Java中io.grpc.Metadata.get()
方法的一些代码示例,展示了Metadata.get()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Metadata.get()
方法的具体详情如下:
包路径:io.grpc.Metadata
类名称: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);
}
}
内容来源于网络,如有侵权,请联系作者删除!