Refine api for connected process listeners
Events now include some extra information instead of just processKey.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { Event } from "vscode";
|
||||
import { LanguageClient } from "vscode-languageclient/node";
|
||||
import { LiveProcess } from "./notification";
|
||||
|
||||
export interface ExtensionAPI {
|
||||
readonly client: LanguageClient;
|
||||
@@ -7,17 +8,17 @@ export interface ExtensionAPI {
|
||||
/**
|
||||
* An event which fires on live process is connected. Payload is processKey.
|
||||
*/
|
||||
readonly onDidLiveProcessConnect: Event<string>
|
||||
readonly onDidLiveProcessConnect: Event<LiveProcess>
|
||||
|
||||
/**
|
||||
* An event which fires on live process is disconnected. Payload is processKey.
|
||||
*/
|
||||
readonly onDidLiveProcessDisconnect: Event<string>
|
||||
readonly onDidLiveProcessDisconnect: Event<LiveProcess>
|
||||
|
||||
/**
|
||||
* An event which fires on live process data change. Payload is processKey.
|
||||
*/
|
||||
readonly onDidLiveProcessUpdate: Event<string>
|
||||
readonly onDidLiveProcessUpdate: Event<LiveProcess>
|
||||
|
||||
/**
|
||||
* A command to get live process data.
|
||||
@@ -29,7 +30,7 @@ export interface ExtensionAPI {
|
||||
*
|
||||
* Returns a list of processKeys.
|
||||
*/
|
||||
readonly listConnectedProcesses: () => Promise<string[]>
|
||||
readonly listConnectedProcesses: () => Promise<LiveProcess[]>
|
||||
}
|
||||
|
||||
interface LiveProcessDataQuery {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { commands, Uri } from "vscode";
|
||||
import { Emitter, LanguageClient } from "vscode-languageclient/node";
|
||||
import { ExtensionAPI } from "./api";
|
||||
import { LiveProcessConnectedNotification, LiveProcessDisconnectedNotification, LiveProcessUpdatedNotification } from "./notification";
|
||||
import { LiveProcess, LiveProcessConnectedNotification, LiveProcessDisconnectedNotification, LiveProcessUpdatedNotification } from "./notification";
|
||||
|
||||
export class ApiManager {
|
||||
public api: ExtensionAPI;
|
||||
private onDidLiveProcessConnectEmitter: Emitter<string> = new Emitter<string>();
|
||||
private onDidLiveProcessDisconnectEmitter: Emitter<string> = new Emitter<string>();
|
||||
private onDidLiveProcessUpdateEmitter: Emitter<string> = new Emitter<string>();
|
||||
private onDidLiveProcessConnectEmitter: Emitter<LiveProcess> = new Emitter<LiveProcess>();
|
||||
private onDidLiveProcessDisconnectEmitter: Emitter<LiveProcess> = new Emitter<LiveProcess>();
|
||||
private onDidLiveProcessUpdateEmitter: Emitter<LiveProcess> = new Emitter<LiveProcess>();
|
||||
|
||||
public constructor(client: LanguageClient) {
|
||||
const onDidLiveProcessConnect = this.onDidLiveProcessConnectEmitter.event;
|
||||
@@ -20,13 +20,13 @@ export class ApiManager {
|
||||
}
|
||||
|
||||
const COMMAND_LIVEDATA_LIST_CONNECTED = "sts/livedata/listConnected"
|
||||
const listConnectedProcesses = async () : Promise<string[]> => {
|
||||
const listConnectedProcesses = async () : Promise<LiveProcess[]> => {
|
||||
return await commands.executeCommand(COMMAND_LIVEDATA_LIST_CONNECTED);
|
||||
}
|
||||
|
||||
client.onNotification(LiveProcessConnectedNotification.type, (processKey: string) => this.onDidLiveProcessConnectEmitter.fire(processKey));
|
||||
client.onNotification(LiveProcessDisconnectedNotification.type, (processKey: string) => this.onDidLiveProcessDisconnectEmitter.fire(processKey));
|
||||
client.onNotification(LiveProcessUpdatedNotification.type, (processKey: string) => this.onDidLiveProcessUpdateEmitter.fire(processKey));
|
||||
client.onNotification(LiveProcessConnectedNotification.type, (process: LiveProcess) => this.onDidLiveProcessConnectEmitter.fire(process));
|
||||
client.onNotification(LiveProcessDisconnectedNotification.type, (process: LiveProcess) => this.onDidLiveProcessDisconnectEmitter.fire(process));
|
||||
client.onNotification(LiveProcessUpdatedNotification.type, (process: LiveProcess) => this.onDidLiveProcessUpdateEmitter.fire(process));
|
||||
|
||||
this.api = {
|
||||
client,
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
import { NotificationType } from "vscode-languageclient";
|
||||
|
||||
/**
|
||||
* Common information provided by all live process notifications, for all types
|
||||
* of events and for all types of processes.
|
||||
*/
|
||||
export interface LiveProcess {
|
||||
type: string;
|
||||
processKey: string;
|
||||
processName: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized interface for type 'local' LiveProcess.
|
||||
*/
|
||||
export interface LocalLiveProcess extends LiveProcess {
|
||||
type: "local"
|
||||
pid: string
|
||||
}
|
||||
|
||||
export namespace LiveProcessConnectedNotification {
|
||||
export const type = new NotificationType<string>('sts/liveprocess/connected');
|
||||
export const type = new NotificationType<LiveProcess>('sts/liveprocess/connected');
|
||||
}
|
||||
|
||||
export namespace LiveProcessDisconnectedNotification {
|
||||
export const type = new NotificationType<string>('sts/liveprocess/disconnected');
|
||||
export const type = new NotificationType<LiveProcess>('sts/liveprocess/disconnected');
|
||||
}
|
||||
|
||||
export namespace LiveProcessUpdatedNotification {
|
||||
export const type = new NotificationType<string>('sts/liveprocess/updated');
|
||||
export const type = new NotificationType<LiveProcess>('sts/liveprocess/updated');
|
||||
}
|
||||
Reference in New Issue
Block a user