You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by sh...@apache.org on 2023/03/24 19:40:41 UTC

[daffodil-vscode] branch main updated: Reordered OE server kill & added verbose vars

This is an automated email from the ASF dual-hosted git repository.

shanedell pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-vscode.git


The following commit(s) were added to refs/heads/main by this push:
     new c31b6f0  Reordered OE server kill & added verbose vars
c31b6f0 is described below

commit c31b6f037a2368a7fd03ec1ab16d5dde4c7be5ba
Author: Robert Strickland <st...@gmail.com>
AuthorDate: Fri Mar 24 11:24:40 2023 -0500

    Reordered OE server kill & added verbose vars
    
    - The Omega Edit server kill on DataEditWebviewPanel disposal now
      nullifies port
    - Variables related to Omega Edit server connection were changed to be
      more verbose/specific, in the chance of potentially additional
      "serverPorts" that may be needed in the future.
    
    Closes #528
---
 package.json                                |  4 +--
 src/omega_edit/client.ts                    | 43 +++++++++++++++++------------
 src/omega_edit/dataEditWebView.ts           |  4 +--
 src/svelte/src/components/dataEditor.svelte |  6 ++--
 4 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/package.json b/package.json
index 259f4bc..474a7e0 100644
--- a/package.json
+++ b/package.json
@@ -599,7 +599,7 @@
             },
             "default": {}
           },
-          "dataEditor.serverPort": {
+          "dataEditor.omegaEditPort": {
             "type": "integer",
             "description": "Editor server default port",
             "default": 9000
@@ -607,7 +607,7 @@
           "dataEditor.logFile": {
             "type": "string",
             "description": "Path to log file for data editor",
-            "default": "${workspaceFolder}/dataEditor-${serverPort}.log"
+            "default": "${workspaceFolder}/dataEditor-${omegaEditPort}.log"
           },
           "dataEditor.logLevel": {
             "type": "string",
diff --git a/src/omega_edit/client.ts b/src/omega_edit/client.ts
index e639be9..0be80fc 100644
--- a/src/omega_edit/client.ts
+++ b/src/omega_edit/client.ts
@@ -25,8 +25,11 @@ import XDGAppPaths from 'xdg-app-paths'
 import { DataEditWebView } from './dataEditWebView'
 import { initOmegaEditClient } from './utils'
 
-const defaultServerPort: number = 9000
-export let serverPort: number = 0
+const DEFAULT_OMEGA_EDIT_PORT: number = 9000
+const OMEGA_EDIT_MIN_PORT: number = 1024
+const OMEGA_EDIT_MAX_PORT: number = 65535
+
+export let omegaEditPort: number = 0
 
 const appDataPath = XDGAppPaths({ name: 'omega_edit' }).data()
 
@@ -38,17 +41,20 @@ export function getOmegaEditPackageVersion(filePath: fs.PathLike) {
 }
 
 function getServerPidFile(port?: number) {
-  return path.join(appDataPath, `serv-${serverPort}.pid`)
+  return path.join(appDataPath, `serv-${omegaEditPort}.pid`)
 }
 
 async function getOmegaEditPort() {
-  if (serverPort === 0) {
-    serverPort = vscode.workspace
+  if (omegaEditPort === 0) {
+    omegaEditPort = vscode.workspace
       .getConfiguration('dataEditor')
-      .get<number>('serverPort', defaultServerPort)
+      .get<number>('oemgaEditServerPort', DEFAULT_OMEGA_EDIT_PORT)
 
-    if (serverPort <= 1024 || serverPort > 65535) {
-      serverPort = 0
+    if (
+      omegaEditPort <= OMEGA_EDIT_MIN_PORT ||
+      omegaEditPort > OMEGA_EDIT_MAX_PORT
+    ) {
+      omegaEditPort = 0
       throw 'Invalid port'
     }
   } else throw 'Data Editor currently only supports a single instance.'
@@ -57,9 +63,12 @@ async function getOmegaEditPort() {
 function setupLogging() {
   const config = vscode.workspace.getConfiguration('dataEditor')
   const logFile = config
-    .get<string>('logFile', '${workspaceFolder}/dataEditor-${serverPort}.log')
+    .get<string>(
+      'logFile',
+      '${workspaceFolder}/dataEditor-${omegaEditPort}.log'
+    )
     ?.replace('${workspaceFolder}', appDataPath)
-    .replace('${serverPort}', serverPort.toString())
+    .replace('${omegaEditPort}', omegaEditPort.toString())
   const logLevel =
     process.env.OMEGA_EDIT_CLIENT_LOG_LEVEL ||
     config.get<string>('logLevel', 'info')
@@ -77,17 +86,16 @@ async function serverStop() {
     if (await stopServerUsingPID(pid)) {
       fs.unlinkSync(pidFile)
       vscode.window.setStatusBarMessage(
-        `Ωedit server stopped on port ${serverPort} with PID ${pid}`,
+        `Ωedit server stopped on port ${omegaEditPort} with PID ${pid}`,
         new Promise((resolve) => {
           setTimeout(() => {
             resolve(true)
           }, 1000)
         })
       )
-      serverPort = 0
     } else {
       vscode.window.showErrorMessage(
-        `Ωedit server on port ${serverPort} with PID ${pid} failed to stop`
+        `Ωedit server on port ${omegaEditPort} with PID ${pid} failed to stop`
       )
     }
   }
@@ -97,7 +105,7 @@ async function serverStart(ctx, version) {
   const pidFile = getServerPidFile()
   await serverStop()
 
-  const serverStartingText = `Ωedit server v${version} starting on port ${serverPort}`
+  const serverStartingText = `Ωedit server v${version} starting on port ${omegaEditPort}`
   const statusBarItem = vscode.window.createStatusBarItem(
     vscode.StatusBarAlignment.Left
   )
@@ -116,14 +124,14 @@ async function serverStart(ctx, version) {
   const serverPid = await startServer(
     ctx.asAbsolutePath('node_modules/omega-edit'),
     version,
-    serverPort
+    omegaEditPort
   )
   if (serverPid) {
     fs.writeFileSync(pidFile, serverPid.toString())
   }
 
   clearInterval(animationIntervalId)
-  statusBarItem.text = `Ωedit server v${version} started on port ${serverPort} with PID ${serverPid}`
+  statusBarItem.text = `Ωedit server v${version} started on port ${omegaEditPort} with PID ${serverPid}`
   setTimeout(() => {
     statusBarItem.dispose()
   }, 1000)
@@ -145,7 +153,7 @@ export function activate(ctx: vscode.ExtensionContext) {
         if (startServ) {
           await serverStart(ctx, omegaEditPackageVersion)
         }
-        await initOmegaEditClient(serverPort)
+        await initOmegaEditClient(omegaEditPort)
         return await createOmegaEditWebviewPanel(ctx, startServ, fileToEdit)
       }
     )
@@ -173,6 +181,7 @@ async function createOmegaEditWebviewPanel(
         await serverStop()
       }
       await dataEditorView.dispose()
+      omegaEditPort = 0
     },
     undefined,
     ctx.subscriptions
diff --git a/src/omega_edit/dataEditWebView.ts b/src/omega_edit/dataEditWebView.ts
index ed57d48..02347cd 100644
--- a/src/omega_edit/dataEditWebView.ts
+++ b/src/omega_edit/dataEditWebView.ts
@@ -22,7 +22,7 @@ import { CountKind } from 'omega-edit/session'
 import * as omegaEditViewport from 'omega-edit/viewport'
 import * as vscode from 'vscode'
 import { EditorMessage, MessageCommand } from '../svelte/src/utilities/message'
-import { serverPort } from './client'
+import { omegaEditPort } from './client'
 import { SvelteWebviewInitializer } from './svelteWebviewInitializer'
 import {
   dataToEncodedStr,
@@ -144,7 +144,7 @@ export class DataEditWebView implements vscode.Disposable {
         this.panel.webview.postMessage({
           command: MessageCommand.heartBeat,
           data: {
-            serverPort: serverPort,
+            omegaEditPort: omegaEditPort,
             serverVersion: heartbeat.resp,
             serverLatency: heartbeat.latency,
           },
diff --git a/src/svelte/src/components/dataEditor.svelte b/src/svelte/src/components/dataEditor.svelte
index bc5adf2..b04d693 100644
--- a/src/svelte/src/components/dataEditor.svelte
+++ b/src/svelte/src/components/dataEditor.svelte
@@ -105,7 +105,7 @@ limitations under the License.
   let logicalOffsetText: string
   let logicalDisplayText: string = ''
   let currentScrollEvt: string | null, scrollSyncTimer: NodeJS.Timeout
-  let serverPort: number
+  let omegaEditPort: number
   let serverVersion: string = 'Connecting...'
   let serverLatency: number
   let physical_vwRef: HTMLTextAreaElement
@@ -722,7 +722,7 @@ limitations under the License.
         break
 
       case MessageCommand.heartBeat:
-        serverPort = msg.data.data.serverPort
+        omegaEditPort = msg.data.data.omegaEditPort
         serverVersion = msg.data.data.serverVersion
         serverLatency = msg.data.data.serverLatency
         break
@@ -1408,7 +1408,7 @@ limitations under the License.
 </main>
 <hr />
 <div class="omega-latency flex-container row center">
-  <div>Powered by Ωedit v{serverVersion} on port {serverPort}</div>
+  <div>Powered by Ωedit v{serverVersion} on port {omegaEditPort}</div>
   <div class="latency-group flex-container row center">
     <svg class="latency-indicator">
       {#if serverLatency < 20}