Преглед на файлове

Clean up the future interface

Steven Silvester преди 8 години
родител
ревизия
14376146ca
променени са 3 файла, в които са добавени 20 реда и са изтрити 4 реда
  1. 5 3
      packages/services/src/kernel/future.ts
  2. 7 1
      packages/services/src/kernel/kernel.ts
  3. 8 0
      packages/services/src/kernel/messages.ts

+ 5 - 3
packages/services/src/kernel/future.ts

@@ -46,7 +46,7 @@ class KernelFutureHandler extends DisposableDelegate implements Kernel.IFuture {
   /**
    * A promise that resolves when the future is done.
    */
-  get done(): Promise<void> {
+  get done(): Promise<KernelMessage.IShellMessage> {
     return this._done.promise;
   }
 
@@ -167,6 +167,7 @@ class KernelFutureHandler extends DisposableDelegate implements Kernel.IFuture {
   private _handleReply(msg: KernelMessage.IShellMessage): void {
     let reply = this._reply;
     if (reply) { reply(msg); }
+    this._replyMsg = msg;
     this._setFlag(Private.KernelFutureFlag.GotReply);
     if (this._testFlag(Private.KernelFutureFlag.GotIdle)) {
       this._handleDone();
@@ -196,7 +197,7 @@ class KernelFutureHandler extends DisposableDelegate implements Kernel.IFuture {
       return;
     }
     this._setFlag(Private.KernelFutureFlag.IsDone);
-    this._done.resolve(void 0);
+    this._done.resolve(this._replyMsg);
     if (this._disposeOnDone) {
       this.dispose();
     }
@@ -221,7 +222,8 @@ class KernelFutureHandler extends DisposableDelegate implements Kernel.IFuture {
   private _stdin: (msg: KernelMessage.IStdinMessage) => void = null;
   private _iopub: (msg: KernelMessage.IIOPubMessage) => void = null;
   private _reply: (msg: KernelMessage.IShellMessage) => void = null;
-  private _done = new PromiseDelegate<void>();
+  private _done = new PromiseDelegate<KernelMessage.IShellMessage>();
+  private _replyMsg: KernelMessage.IShellMessage;
   private _hooks = new Private.HookList<KernelMessage.IIOPubMessage>();
   private _disposeOnDone = true;
   private _kernel: Kernel.IKernel;

+ 7 - 1
packages/services/src/kernel/kernel.ts

@@ -1,6 +1,10 @@
 // Copyright (c) Jupyter Development Team.
 // Distributed under the terms of the Modified BSD License.
 
+import {
+  nbformat
+} from '@jupyterlab/coreutils';
+
 import {
   IIterator
 } from '@phosphor/algorithm';
@@ -671,8 +675,10 @@ namespace Kernel {
 
     /**
      * A promise that resolves when the future is done.
+     *
+     * The contents of the promise is the reply message.
      */
-    readonly done: Promise<void>;
+    readonly done: Promise<KernelMessage.IShellMessage>;
 
     /**
      * The reply handler for the kernel future.

+ 8 - 0
packages/services/src/kernel/messages.ts

@@ -632,6 +632,14 @@ namespace KernelMessage {
     traceback: string[];
   }
 
+  /**
+   * Test whether a kernel message is an `'execute_reply'` message.
+   */
+  export
+  function isExecuteReplyMsg(msg: IMessage): msg is IExecuteReplyMsg {
+    return msg.header.msg_type === 'execute_reply';
+  }
+
   /**
    * An `'input_request'` message on the `'stdin'` channel.
    *