in correlation/grpc/server_interceptors.go [69:87]
func StreamServerCorrelationInterceptor(opts ...ServerCorrelationInterceptorOption) grpc.StreamServerInterceptor {
config := applyServerCorrelationInterceptorOptions(opts)
return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
var correlationID string
wrapped := grpc_middleware.WrapServerStream(ss)
wrapped.WrappedContext, correlationID = extractFromContext(ss.Context(), config.propagateIncomingCorrelationID)
if config.reversePropagateCorrelationID {
err := wrapped.SetHeader(metadata.Pairs(metadataCorrelatorKey, correlationID))
if err != nil {
return err
}
}
return handler(srv, wrapped)
}
}