From ebab0b226fea9e52d1533305797be010d17212ce Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Thu, 3 Mar 2022 10:52:27 +0100 Subject: [PATCH] Scaffold interfaces and classes for pluggable monitors --- .../browser/arduino-ide-frontend-module.ts | 6 ++++++ .../monitor-manager-proxy-client-impl.ts | 6 ++++++ .../src/common/monitor-manager-proxy.ts | 12 +++++++++++ .../src/node/arduino-ide-backend-module.ts | 3 +++ .../src/node/monitor-manager-proxy-impl.ts | 20 +++++++++++++++++++ .../src/node/monitor-manager.ts | 6 ++++++ 6 files changed, 53 insertions(+) create mode 100644 arduino-ide-extension/src/browser/monitor-manager-proxy-client-impl.ts create mode 100644 arduino-ide-extension/src/common/monitor-manager-proxy.ts create mode 100644 arduino-ide-extension/src/node/monitor-manager-proxy-impl.ts create mode 100644 arduino-ide-extension/src/node/monitor-manager.ts diff --git a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts index 5ceae917..c06f9f7b 100644 --- a/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts +++ b/arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts @@ -275,6 +275,8 @@ import { IDEUpdaterDialogWidget, } from './dialogs/ide-updater/ide-updater-dialog'; import { ElectronIpcConnectionProvider } from '@theia/core/lib/electron-browser/messaging/electron-ipc-connection-provider'; +import { MonitorManagerProxyClient } from '../common/monitor-manager-proxy'; +import { MonitorManagerProxyClientImpl } from './monitor-manager-proxy-client-impl'; const ElementQueries = require('css-element-queries/src/ElementQueries'); @@ -431,6 +433,10 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { // Serial service client to receive and delegate notifications from the backend. bind(SerialServiceClient).to(SerialServiceClientImpl).inSingletonScope(); + // Monitor manager proxy client to receive and delegate pluggable monitors + // notifications from the backend + bind(MonitorManagerProxyClient).to(MonitorManagerProxyClientImpl).inSingletonScope(); + bind(WorkspaceService).toSelf().inSingletonScope(); rebind(TheiaWorkspaceService).toService(WorkspaceService); bind(WorkspaceVariableContribution).toSelf().inSingletonScope(); diff --git a/arduino-ide-extension/src/browser/monitor-manager-proxy-client-impl.ts b/arduino-ide-extension/src/browser/monitor-manager-proxy-client-impl.ts new file mode 100644 index 00000000..70602783 --- /dev/null +++ b/arduino-ide-extension/src/browser/monitor-manager-proxy-client-impl.ts @@ -0,0 +1,6 @@ +import { injectable } from "@theia/core/shared/inversify"; +import { MonitorManagerProxyClient } from "../common/monitor-manager-proxy"; + +@injectable() +export class MonitorManagerProxyClientImpl implements MonitorManagerProxyClient { +} diff --git a/arduino-ide-extension/src/common/monitor-manager-proxy.ts b/arduino-ide-extension/src/common/monitor-manager-proxy.ts new file mode 100644 index 00000000..ba08b361 --- /dev/null +++ b/arduino-ide-extension/src/common/monitor-manager-proxy.ts @@ -0,0 +1,12 @@ +import { JsonRpcServer } from "@theia/core"; + +export const MonitorManagerProxyPath = '/services/monitor-manager-proxy'; +export const MonitorManagerProxy = Symbol('MonitorManagerProxy'); +export interface MonitorManagerProxy extends JsonRpcServer { + +} + +export const MonitorManagerProxyClient = Symbol('MonitorManagerProxyClient'); +export interface MonitorManagerProxyClient { + +} diff --git a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts index bd2dd868..1646171a 100644 --- a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts +++ b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts @@ -86,6 +86,9 @@ import WebSocketServiceImpl from './web-socket/web-socket-service-impl'; import { WebSocketService } from './web-socket/web-socket-service'; import { ArduinoLocalizationContribution } from './arduino-localization-contribution'; import { LocalizationContribution } from '@theia/core/lib/node/i18n/localization-contribution'; +import { MonitorManagerProxyImpl } from './monitor-manager-proxy-impl'; +import { MonitorManager } from './monitor-manager'; +import { MonitorManagerProxy, MonitorManagerProxyClient, MonitorManagerProxyPath } from '../common/monitor-manager-proxy'; export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(BackendApplication).toSelf().inSingletonScope(); diff --git a/arduino-ide-extension/src/node/monitor-manager-proxy-impl.ts b/arduino-ide-extension/src/node/monitor-manager-proxy-impl.ts new file mode 100644 index 00000000..814c7bc3 --- /dev/null +++ b/arduino-ide-extension/src/node/monitor-manager-proxy-impl.ts @@ -0,0 +1,20 @@ +import { inject, injectable } from "@theia/core/shared/inversify"; +import { MonitorManagerProxy, MonitorManagerProxyClient } from "../common/monitor-manager-proxy"; +import { MonitorManager } from "./monitor-manager"; + +@injectable() +export class MonitorManagerProxyImpl implements MonitorManagerProxy { + constructor( + @inject(MonitorManager) + protected readonly manager: MonitorManager, + ) { + } + + dispose(): void { + // TODO + } + + setClient(client: MonitorManagerProxyClient | undefined): void { + // TODO + } +} \ No newline at end of file diff --git a/arduino-ide-extension/src/node/monitor-manager.ts b/arduino-ide-extension/src/node/monitor-manager.ts new file mode 100644 index 00000000..1814c94a --- /dev/null +++ b/arduino-ide-extension/src/node/monitor-manager.ts @@ -0,0 +1,6 @@ +import { injectable } from "@theia/core/shared/inversify"; + +@injectable() +export class MonitorManager { + +} \ No newline at end of file