/// <summary> /// Creates a new <see cref="HttpMessage"/> instance. /// </summary> /// <param name="context">Context specifying the message options.</param> /// <param name="classifier"></param> /// <returns>The message.</returns> public HttpMessage CreateMessage(RequestContext?context, CoreResponseClassifier?classifier = default) { var message = CreateMessage(); message.ApplyRequestContext(context, classifier); return(message); }
public async Task CallbackAsync(RequestContext?context, CancellationToken cancellationToken) { // Restore our activity id so that logging/tracking works. Trace.CorrelationManager.ActivityId = ActivityId; _logger.TraceStart($"{MethodName} - Roslyn"); try { await _callbackAsync(context, cancellationToken).ConfigureAwait(false); this.Metrics.RecordSuccess(); } catch (OperationCanceledException) { _logger.TraceInformation($"{MethodName} - Canceled"); this.Metrics.RecordCancellation(); throw; } catch (Exception ex) { _logger.TraceException(ex); this.Metrics.RecordFailure(); throw; } finally { _logger.TraceStop($"{MethodName} - Roslyn"); } }
/// <summary> /// Creates a new <see cref="HttpMessage"/> instance. /// </summary> /// <param name="context">Context specifying the message options.</param> /// <returns>The message.</returns> public HttpMessage CreateMessage(RequestContext?context) { var message = CreateMessage(); message.AddPolicies(context); return(message); }
public async Task CallbackAsync(RequestContext?context, CancellationToken cancellationToken) { // Restore our activity id so that logging/tracking works. Trace.CorrelationManager.ActivityId = ActivityId; _logger.TraceStart($"{MethodName} - Roslyn"); try { cancellationToken.ThrowIfCancellationRequested(); TResponseType?result; if (context == null) { // If we weren't able to get a corresponding context for this request (for example, we // couldn't map a doc request to a particular Document, or we couldn't find an appropriate // Workspace for a global operation), then just immediately complete the request with a // 'null' response. Note: the lsp spec was checked to ensure that 'null' is valid for all // the requests this could happen for. However, this assumption may not hold in the future. // If that turns out to be the case, we could defer to the individual handler to decide // what to do. _logger.TraceWarning($"Could not get request context for {MethodName}"); this.Metrics.RecordFailure(); result = default; } else { result = await _handler.HandleRequestAsync(_request, context.Value, cancellationToken).ConfigureAwait(false); this.Metrics.RecordSuccess(); } _completionSource.TrySetResult(result); } catch (OperationCanceledException ex) { // Record logs + metrics on cancellation. _logger.TraceInformation($"{MethodName} - Canceled"); this.Metrics.RecordCancellation(); _completionSource.TrySetCanceled(ex.CancellationToken); } catch (Exception ex) { // Record logs and metrics on the exception. _logger.TraceException(ex); this.Metrics.RecordFailure(); _completionSource.TrySetException(ex); } finally { _logger.TraceStop($"{MethodName} - Roslyn"); } // Return the result of this completion source to the caller // so it can decide how to handle the result / exception. await _completionSource.Task.ConfigureAwait(false); }
/// <summary> /// Creates a new <see cref="HttpMessage"/> instance. /// </summary> /// <param name="context">Context specifying the message options.</param> /// <param name="classifier"></param> /// <returns>The message.</returns> public HttpMessage CreateMessage(RequestContext?context, ResponseClassifier?classifier = default) { var message = CreateMessage(); if (classifier != null) { message.ResponseClassifier = classifier; } message.ApplyRequestContext(context, classifier); return(message); }
public Task InitializeAsync(AuthenticationScheme scheme, HttpContext context) { _scheme = scheme; _requestContext = context.Features.Get <RequestContext>(); if (_requestContext == null) { throw new InvalidOperationException("No RequestContext found."); } return(Task.CompletedTask); }
public static Uri?TryGetURI(this TextDocument document, RequestContext?context = null) => ProtocolConversions.TryGetUriFromFilePath(document.FilePath, context);
/// <summary> /// </summary> /// <param name="context"></param> /// <returns></returns> public HttpMessage CreateMessage(RequestContext?context) => CreateMessage(context, default);