/// <summary> /// Create a new instance of <see cref="CloudTraceMiddleware"/>. /// </summary> /// <param name="next">The next request delegate. Must not be null.</param> /// <param name="tracerFactory">A factory to create <see cref="IManagedTracer"/>s. Must not be null.</param> /// <param name="nameProvider">The cloud trace name provider used for naming the root trace span</param> public CloudTraceMiddleware( RequestDelegate next, Func <TraceHeaderContext, IManagedTracer> tracerFactory, ICloudTraceNameProvider nameProvider) { _nameProvider = nameProvider; _next = GaxPreconditions.CheckNotNull(next, nameof(next)); _tracerFactory = GaxPreconditions.CheckNotNull(tracerFactory, nameof(tracerFactory)); }