From 6edbeed80402d11933b060ae63eda5cdefe81211 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Sun, 10 Jul 2022 07:34:58 +0200 Subject: [PATCH] Fixed missing core client in the monitor service. Restored monitor service creation state before a36524e: Pass core client provider into new instances as a field. Closes #1161 Signed-off-by: Akos Kitta --- .../src/node/arduino-ide-backend-module.ts | 3 ++- arduino-ide-extension/src/node/core-client-provider.ts | 2 +- arduino-ide-extension/src/node/monitor-manager.ts | 3 ++- .../src/node/monitor-service-factory.ts | 9 ++++++++- arduino-ide-extension/src/node/monitor-service.ts | 3 ++- 5 files changed, 15 insertions(+), 5 deletions(-) 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 346668d0c..1cf4f39af 100644 --- a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts +++ b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts @@ -245,7 +245,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { const webSocketProvider = container.get(WebSocketProvider); - const { board, port, monitorID } = options; + const { board, port, coreClientProvider, monitorID } = options; return new MonitorService( logger, @@ -253,6 +253,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { webSocketProvider, board, port, + coreClientProvider, monitorID ); } diff --git a/arduino-ide-extension/src/node/core-client-provider.ts b/arduino-ide-extension/src/node/core-client-provider.ts index 404b76421..3258ef829 100644 --- a/arduino-ide-extension/src/node/core-client-provider.ts +++ b/arduino-ide-extension/src/node/core-client-provider.ts @@ -397,7 +397,7 @@ export namespace CoreClientProvider { @injectable() export abstract class CoreClientAware { @inject(CoreClientProvider) - private readonly coreClientProvider: CoreClientProvider; + protected readonly coreClientProvider: CoreClientProvider; // TODO: should be `private`, fix injection in subclasses. (https://github.com/arduino/arduino-ide/issues/1161) /** * Returns with a promise that resolves when the core client is initialized and ready. */ diff --git a/arduino-ide-extension/src/node/monitor-manager.ts b/arduino-ide-extension/src/node/monitor-manager.ts index cb62df7f6..6365f5423 100644 --- a/arduino-ide-extension/src/node/monitor-manager.ts +++ b/arduino-ide-extension/src/node/monitor-manager.ts @@ -55,7 +55,7 @@ export class MonitorManager extends CoreClientAware { * @param board board connected to port * @param port port to monitor * @returns true if the monitor is currently monitoring the board/port - * combination specifed, false in all other cases. + * combination specified, false in all other cases. */ isStarted(board: Board, port: Port): boolean { const monitorID = this.monitorID(board, port); @@ -317,6 +317,7 @@ export class MonitorManager extends CoreClientAware { board, port, monitorID, + coreClientProvider: this.coreClientProvider, }); this.monitorServices.set(monitorID, monitor); monitor.onDispose( diff --git a/arduino-ide-extension/src/node/monitor-service-factory.ts b/arduino-ide-extension/src/node/monitor-service-factory.ts index df7a8185b..6f88cdb0f 100644 --- a/arduino-ide-extension/src/node/monitor-service-factory.ts +++ b/arduino-ide-extension/src/node/monitor-service-factory.ts @@ -1,13 +1,20 @@ import { Board, Port } from '../common/protocol'; +import { CoreClientProvider } from './core-client-provider'; import { MonitorService } from './monitor-service'; export const MonitorServiceFactory = Symbol('MonitorServiceFactory'); export interface MonitorServiceFactory { - (options: { board: Board; port: Port; monitorID: string }): MonitorService; + (options: { + board: Board; + port: Port; + monitorID: string; + coreClientProvider: CoreClientProvider; + }): MonitorService; } export interface MonitorServiceFactoryOptions { board: Board; port: Port; monitorID: string; + coreClientProvider: CoreClientProvider; } diff --git a/arduino-ide-extension/src/node/monitor-service.ts b/arduino-ide-extension/src/node/monitor-service.ts index 3eb3c71a8..68303ca18 100644 --- a/arduino-ide-extension/src/node/monitor-service.ts +++ b/arduino-ide-extension/src/node/monitor-service.ts @@ -10,7 +10,7 @@ import { MonitorRequest, MonitorResponse, } from './cli-protocol/cc/arduino/cli/commands/v1/monitor_pb'; -import { CoreClientAware } from './core-client-provider'; +import { CoreClientAware, CoreClientProvider } from './core-client-provider'; import { WebSocketProvider } from './web-socket/web-socket-provider'; import { Port as gRPCPort } from 'arduino-ide-extension/src/node/cli-protocol/cc/arduino/cli/commands/v1/port_pb'; import { @@ -77,6 +77,7 @@ export class MonitorService extends CoreClientAware implements Disposable { private readonly board: Board, private readonly port: Port, + protected override readonly coreClientProvider: CoreClientProvider, private readonly monitorID: string ) { super();