public HttpResponseMessage ExecuteRequest(HttpRequestMessage request) { if (Verbose) { Console.WriteLine("Received {0} - {1}", request.Method, request.RequestUri); } var routeData = determineRouteData(request); if (routeData == null) { return(write404()); } else { try { var response = new HttpResponseMessage(HttpStatusCode.OK); var arguments = new SelfHostServiceArguments(routeData, request, response); var invoker = routeData.RouteHandler.As <FubuRouteHandler>().Invoker; var requestCompletion = new RequestCompletion(); requestCompletion.Start(() => invoker.Invoke(arguments, routeData.Values, requestCompletion)); arguments.Writer.AttachContent(); return(response); } catch (Exception ex) { return(write500(ex)); } } }
public Task Invoke(IDictionary <string, object> environment) { var owinHttpContext = new OwinHttpContext(environment); var routeData = _routes.GetRouteData(owinHttpContext); if (routeData == null) { write404(environment); return(Task.Factory.StartNew(() => { })); } new OwinRequestReader().Read(environment); var arguments = new OwinServiceArguments(routeData, environment); var invoker = routeData.RouteHandler.As <FubuRouteHandler>().Invoker; var taskCompletionSource = new TaskCompletionSource <object>(); var requestCompletion = new RequestCompletion(); requestCompletion.WhenCompleteDo(ex => { if (ex != null) { //This seems like OWIN should handle the .SetException(ex) with standard error screen formatting? write500(environment, ex); } taskCompletionSource.SetResult(null); }); arguments.With <IRequestCompletion>(requestCompletion); requestCompletion.SafeStart(() => invoker.Invoke(arguments, routeData.Values, requestCompletion)); return(taskCompletionSource.Task); }
public void request_is_faulted_when_writer_throws_exception() { var requestCompletion = new RequestCompletion(); AggregateException exception = null; var waitHandle = new ManualResetEvent(false); requestCompletion.WhenCompleteDo(ex => { exception = ex as AggregateException; waitHandle.Set(); }); var asyncCoordinator = new AsyncCoordinator(requestCompletion, Enumerable.Empty <IExceptionHandler>()); theWriter.WriterThrows = true; var task = theChannelWriter.Write(theTopic); theChannel.Write(q => q.Write(e1)); asyncCoordinator.Push(task); waitHandle.WaitOne(TimeSpan.FromSeconds(1)); var exceptions = exception.Flatten().InnerExceptions; exceptions.Count.ShouldBe(1); exceptions[0].Message.ShouldBe(RecordingServerEventWriter.ExceptionMessage); }
public CompletionRequestCompleted( IEnumerable <CompletionItem> completionList, RequestCompletion command, LinePositionSpan?range = null) : base(command) { CompletionList = completionList ?? throw new ArgumentNullException(nameof(completionList)); _range = range; }
public async Task Handle(JupyterRequestContext context) { var completeRequest = GetJupyterRequest(context); var command = new RequestCompletion(completeRequest.Code, completeRequest.CursorPosition); await SendTheThingAndWaitForTheStuff(context, command); }
public async Task Handle(JupyterRequestContext context) { var completeRequest = GetJupyterRequest(context); var command = new RequestCompletion(completeRequest.Code, completeRequest.CursorPosition); await SendAsync(context, command); }
public async Task Handle(JupyterRequestContext context) { var completeRequest = GetJupyterRequest(context); var position = SourceUtilities.GetPositionFromCursorOffset(completeRequest.Code, completeRequest.CursorPosition); var command = new RequestCompletion(completeRequest.Code, position); await SendAsync(context, command); }
public void Setup() { _completedCount = 0; _exception = null; _requestCompletion = new RequestCompletion(); _requestCompletion.WhenCompleteDo(x => { _exception = x; _completedCount++; }); }
public async Task Handle(JupyterRequestContext context) { var completeRequest = GetJupyterRequest(context); context.RequestHandlerStatus.SetAsBusy(); var command = new RequestCompletion(completeRequest.Code, completeRequest.CursorPosition); var openRequest = new InflightRequest(context, completeRequest, 0); InFlightRequests[command] = openRequest; await Kernel.SendAsync(command); }
protected override async Task HandleRequestCompletion( RequestCompletion requestCompletion, KernelInvocationContext context) { var completionRequestReceived = new CompletionRequestReceived(requestCompletion); context.Publish(completionRequestReceived); var completionList = await GetCompletionList( requestCompletion.Code, SourceUtilities.GetCursorOffsetFromPosition(requestCompletion.Code, requestCompletion.Position)); context.Publish(new CompletionRequestCompleted(completionList, requestCompletion)); }
private async Task HandleRequestCompletion( RequestCompletion requestCompletion, KernelInvocationContext context) { var completionRequestReceived = new CompletionRequestReceived(requestCompletion); context.Publish(completionRequestReceived); var completionList = await GetCompletionList( requestCompletion.Code, requestCompletion.CursorPosition); context.Publish(new CompletionRequestCompleted(completionList, requestCompletion)); }
public async Task Handle(JupyterRequestContext context) { var completeRequest = GetJupyterRequest(context); context.RequestHandlerStatus.SetAsBusy(); var command = new RequestCompletion(completeRequest.Code, completeRequest.CursorPosition); var openRequest = new InflightRequest(context, completeRequest, 0, null); InFlightRequests[command] = openRequest; var kernelResult = await Kernel.SendAsync(command); openRequest.AddDisposable(kernelResult.KernelEvents.Subscribe(OnKernelResultEvent)); }
public IAsyncResult BeginProcessRequest(System.Web.HttpContext context, AsyncCallback cb, object extraData) { var taskCompletionSource = new TaskCompletionSource<object>(); var requestCompletion = new RequestCompletion(); requestCompletion.WhenCompleteDo(ex => { if (ex != null) { taskCompletionSource.SetException(ex); } taskCompletionSource.SetResult(null); cb(taskCompletionSource.Task); }); requestCompletion.Start(() => _invoker.Invoke(_arguments, _routeData, requestCompletion)); return taskCompletionSource.Task; }
public IAsyncResult BeginProcessRequest(System.Web.HttpContext context, AsyncCallback cb, object extraData) { var taskCompletionSource = new TaskCompletionSource <object>(); var requestCompletion = new RequestCompletion(); requestCompletion.WhenCompleteDo(ex => { if (ex != null) { taskCompletionSource.SetException(ex); } taskCompletionSource.SetResult(null); cb(taskCompletionSource.Task); }); requestCompletion.Start(() => _invoker.Invoke(_arguments, _routeData, requestCompletion)); return(taskCompletionSource.Task); }
protected override void beforeEach() { var waitHandle = new ManualResetEvent(false); var completion = new RequestCompletion(); completion.WhenCompleteDo(x => waitHandle.Set()); Services.Container.Configure(x => { x.For <IRequestCompletion>().Use(completion); x.For <IAsyncCoordinator>().Use <AsyncCoordinator>(); }); var task = Task.Factory.StartNew(() => { throw new Exception("Failed!"); }); MockFor <IFubuRequest>().Expect(x => x.Get <Task>()).Return(task); ClassUnderTest.Invoke(); waitHandle.WaitOne(TimeSpan.FromSeconds(1)).ShouldBeTrue(); }
protected override void beforeEach() { var waitHandle = new ManualResetEvent(false); var completion = new RequestCompletion(); completion.WhenCompleteDo(x => waitHandle.Set()); Services.Container.Configure(x => { x.For <IRequestCompletion>().Use(completion); x.For <IAsyncCoordinator>().Use <AsyncCoordinator>(); }); ClassUnderTest.Inner = MockFor <IActionBehavior>(); expectedOutput = new Output(); var task = new Task <Output>(() => expectedOutput); task.RunSynchronously(); MockFor <IFubuRequest>().Expect(x => x.Get <Task <Output> >()).Return(task); ClassUnderTest.Invoke(); waitHandle.WaitOne(TimeSpan.FromSeconds(1)).ShouldBeTrue(); }
public static IEnumerable <object[]> Events() { foreach (var @event in events()) { yield return(new object[] { @event }); } IEnumerable <IKernelEvent> events() { var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandHandled( submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletion("Console.Wri", 11); yield return(new CompletionRequestCompleted( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new CompletionRequestReceived(requestCompletion)); yield return(new CurrentCommandCancelled(submitCode)); yield return(new DiagnosticLogEventProduced("oops!", submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new ErrorProduced("oops!")); yield return(new ExtensionLoaded(new FileInfo(Path.GetTempFileName()))); yield return(new IncompleteCodeSubmissionReceived(submitCode)); yield return(new KernelBusy()); yield return(new KernelExtensionLoadException("oops!")); yield return(new KernelIdle()); yield return(new PackageAdded( new AddPackage(new PackageReference("ThePackage", "1.2.3")))); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new StandardErrorValueProduced( "oops!", submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( 123, new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); } }
public static IEnumerable <object[]> Events() { foreach (var @event in events()) { yield return(new object[] { @event }); } IEnumerable <IKernelEvent> events() { var submitCode = new SubmitCode("123"); yield return(new CodeSubmissionReceived( submitCode)); yield return(new CommandFailed( "Oooops!", submitCode)); yield return(new CommandFailed( new InvalidOperationException("Oooops!"), submitCode, "oops")); yield return(new CommandHandled(submitCode)); yield return(new CompleteCodeSubmissionReceived(submitCode)); var requestCompletion = new RequestCompletion("Console.Wri", 11); yield return(new CompletionRequestCompleted( new[] { new CompletionItem( "WriteLine", "Method", "WriteLine", "WriteLine", "WriteLine", "Writes the line") }, requestCompletion)); yield return(new CompletionRequestReceived(requestCompletion)); yield return(new DiagnosticLogEventProduced("oops!", submitCode)); yield return(new DisplayedValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new DisplayedValueUpdated( new HtmlString("<b>hi!</b>"), "the-value-id", new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new ErrorProduced("oops!")); yield return(new IncompleteCodeSubmissionReceived(submitCode)); yield return(new InputRequested("prompt", submitCode)); var requestHoverTextCommand = new RequestHoverText("document-contents", new LinePosition(1, 2)); yield return(new HoverMarkdownProduced( requestHoverTextCommand, "markdown", new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new HoverPlainTextProduced( requestHoverTextCommand, "plaintext", new LinePositionSpan(new LinePosition(1, 2), new LinePosition(3, 4)))); yield return(new PackageAdded( new ResolvedPackageReference("ThePackage", "1.2.3", new[] { new FileInfo(Path.GetTempFileName()) }))); yield return(new PasswordRequested("password", submitCode)); yield return(new ReturnValueProduced( new HtmlString("<b>hi!</b>"), new SubmitCode("b(\"hi!\")", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/html", "<b>hi!</b>"), })); yield return(new StandardErrorValueProduced( "oops!", submitCode, new[] { new FormattedValue("text/plain", "oops!"), })); yield return(new StandardOutputValueProduced( 123, new SubmitCode("Console.Write(123);", "csharp", SubmissionType.Run), new[] { new FormattedValue("text/plain", "123"), })); } }
public void AttachRequestCompletion() { Completion = new RequestCompletion(this); }
public void ProcessRequest(System.Web.HttpContext context) { var requestCompletion = new RequestCompletion(); requestCompletion.Start(() => _invoker.Invoke(_arguments, _routeData, requestCompletion)); }
protected override Task HandleRequestCompletion(RequestCompletion command, KernelInvocationContext context) { Handle(command, context); return(Task.CompletedTask); }
public void AttachRequestCompletion() { Completion = new RequestCompletion(this); }
protected override Task HandleRequestCompletion(RequestCompletion command, KernelInvocationContext context) { throw new NotSupportedException(); }
public void ProcessRequest(HttpContext context) { var requestCompletion = new RequestCompletion(); requestCompletion.Start(() => _invoker.Invoke(_arguments, _routeData, requestCompletion)); }