浏览代码

Added debugger message interface

Johan Mabille 5 年之前
父节点
当前提交
c32dbf5b27
共有 1 个文件被更改,包括 78 次插入2 次删除
  1. 78 2
      packages/services/src/kernel/messages.ts

+ 78 - 2
packages/services/src/kernel/messages.ts

@@ -108,6 +108,13 @@ export namespace KernelMessage {
   export function createMessage<T extends IUpdateDisplayDataMsg>(
     options: IOptions<T>
   ): T;
+  export function createMessage<T extends IDebugRequestMsg>(
+    options: IOptions<T>
+  ): T;
+
+  export function createMessage<T extends IDebugReplyMsg>(
+    options: IOptions<T>
+  ): T;
 
   export function createMessage<T extends Message>(options: IOptions<T>): T {
     return {
@@ -153,6 +160,13 @@ export namespace KernelMessage {
     | 'shutdown_reply'
     | 'shutdown_request';
 
+  /**
+   * Control message types.
+   */
+  export type ControlMessageType = 
+    | 'debug_request'
+    | 'debug_reply';
+
   /**
    * IOPub message types.
    */
@@ -180,12 +194,13 @@ export namespace KernelMessage {
   export type MessageType =
     | IOPubMessageType
     | ShellMessageType
+    | ControlMessageType
     | StdinMessageType;
 
   /**
    * The valid Jupyter channel names in a message to a frontend.
    */
-  export type Channel = 'shell' | 'iopub' | 'stdin';
+  export type Channel = 'shell' | 'control' | 'iopub' | 'stdin';
 
   /**
    * Kernel message header content.
@@ -271,6 +286,14 @@ export namespace KernelMessage {
     channel: 'shell';
   }
 
+  /**
+   * A kernel message on the `'control'` channel.
+   */
+  export interface IControlMessage<T extends ControlMessageType = ControlMessageType>
+    extends IMessage<T> {
+    channel: 'control';
+  }
+
   /**
    * A kernel message on the `'iopub'` channel.
    */
@@ -317,7 +340,9 @@ export namespace KernelMessage {
     | IIsCompleteRequestMsg
     | IStatusMsg
     | IStreamMsg
-    | IUpdateDisplayDataMsg;
+    | IUpdateDisplayDataMsg
+    | IDebugRequestMsg
+    | IDebugReplyMsg;
 
   //////////////////////////////////////////////////
   // IOPub Messages
@@ -957,6 +982,57 @@ export namespace KernelMessage {
     return msg.header.msg_type === 'execute_reply';
   }
 
+  /**
+   * Debug message types.
+   */
+  export type DebugMessageType =
+    | 'request'
+    | 'response'
+    | 'event';
+
+  /**
+   * Base interface for debug protocol message.
+   */
+  export interface IDebugProtocolMsg<T extends DebugMessageType = DebugMessageType>
+  {
+    seq: number;
+    type: T;
+  }
+
+  /**
+   * The content of a `'debug_request'` message.
+   */
+  export interface IDebugRequest extends IDebugProtocolMsg<'request'> {
+    command: string;
+    arguments?: any;
+  }
+
+  /**
+   * A `'debug_request'` message on the `'control'` channel.
+   */
+  export interface IDebugRequestMsg extends IControlMessage<'debug_request'> {
+    content: IDebugRequest;
+  }
+
+  /**
+   * The content of a `'debug_reply'` message.
+   */
+  export interface IDebugResponse extends IDebugProtocolMsg<'response'> {
+    request_seq: number;
+    success: boolean;
+    command: string;
+    message?: string;
+    body?: any;
+  }
+
+  /**
+   * A `'debug_reply'` message on the `'control'` channel.
+   */
+  export interface IDebugReplyMsg extends IControlMessage<'debug_reply'> {
+    parent_header: IHeader<'debug_request'>;
+    content: IDebugResponse;
+  }
+
   /**
    * A `'comm_info_request'` message on the `'shell'` channel.
    *