Fix MonitorManagerProxy DI issue

This commit is contained in:
Mark Sujew 2022-03-22 15:10:20 +01:00 committed by Alberto Iannaccone
parent a8d803e7c3
commit fbe8fb421a
3 changed files with 13 additions and 8 deletions

View File

@ -152,7 +152,7 @@ import {
OutputChannelRegistryMainImpl as TheiaOutputChannelRegistryMainImpl, OutputChannelRegistryMainImpl as TheiaOutputChannelRegistryMainImpl,
OutputChannelRegistryMainImpl, OutputChannelRegistryMainImpl,
} from './theia/plugin-ext/output-channel-registry-main'; } from './theia/plugin-ext/output-channel-registry-main';
import { ExecutableService, ExecutableServicePath, MonitorManagerProxy, MonitorManagerProxyClient, MonitorManagerProxyPath } from '../common/protocol'; import { ExecutableService, ExecutableServicePath, MonitorManagerProxy, MonitorManagerProxyClient, MonitorManagerProxyFactory, MonitorManagerProxyPath } from '../common/protocol';
import { MonacoTextModelService as TheiaMonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-model-service'; import { MonacoTextModelService as TheiaMonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-model-service';
import { MonacoTextModelService } from './theia/monaco/monaco-text-model-service'; import { MonacoTextModelService } from './theia/monaco/monaco-text-model-service';
import { ResponseServiceImpl } from './response-service-impl'; import { ResponseServiceImpl } from './response-service-impl';
@ -417,8 +417,10 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
} }
})); }));
bind(MonitorManagerProxyFactory).toFactory((context) => () => context.container.get<MonitorManagerProxy>(MonitorManagerProxy))
bind(MonitorManagerProxy).toDynamicValue((context) => bind(MonitorManagerProxy).toDynamicValue((context) =>
WebSocketConnectionProvider.createProxy(context.container, MonitorManagerProxyPath) WebSocketConnectionProvider.createProxy(context.container, MonitorManagerProxyPath, context.container.get(MonitorManagerProxyClient))
).inSingletonScope(); ).inSingletonScope();
// Monitor manager proxy client to receive and delegate pluggable monitors // Monitor manager proxy client to receive and delegate pluggable monitors

View File

@ -1,7 +1,7 @@
import { Emitter, JsonRpcProxy, MessageService } from "@theia/core"; import { Emitter, MessageService } from "@theia/core";
import { inject, injectable } from "@theia/core/shared/inversify"; import { inject, injectable } from "@theia/core/shared/inversify";
import { Board, Port } from "../common/protocol"; import { Board, Port } from "../common/protocol";
import { Monitor, MonitorManagerProxy, MonitorManagerProxyClient, MonitorSettings } from "../common/protocol/monitor-service"; import { Monitor, MonitorManagerProxyClient, MonitorManagerProxyFactory, MonitorSettings } from "../common/protocol/monitor-service";
@injectable() @injectable()
export class MonitorManagerProxyClientImpl implements MonitorManagerProxyClient { export class MonitorManagerProxyClientImpl implements MonitorManagerProxyClient {
@ -26,8 +26,8 @@ export class MonitorManagerProxyClientImpl implements MonitorManagerProxyClient
protected messageService: MessageService, protected messageService: MessageService,
// This is necessary to call the backend methods from the frontend // This is necessary to call the backend methods from the frontend
@inject(MonitorManagerProxy) @inject(MonitorManagerProxyFactory)
protected server: JsonRpcProxy<MonitorManagerProxy> protected server: MonitorManagerProxyFactory
) { ) {
} }
@ -71,11 +71,11 @@ export class MonitorManagerProxyClientImpl implements MonitorManagerProxyClient
} }
async startMonitor(board: Board, port: Port, settings?: MonitorSettings): Promise<void> { async startMonitor(board: Board, port: Port, settings?: MonitorSettings): Promise<void> {
return this.server.startMonitor(board, port, settings); return this.server().startMonitor(board, port, settings);
} }
getCurrentSettings(board: Board, port: Port): MonitorSettings { getCurrentSettings(board: Board, port: Port): MonitorSettings {
return this.server.getCurrentSettings(board, port); return this.server().getCurrentSettings(board, port);
} }
send(message: string): void { send(message: string): void {

View File

@ -1,6 +1,9 @@
import { Event, JsonRpcServer } from "@theia/core"; import { Event, JsonRpcServer } from "@theia/core";
import { Board, Port } from './boards-service'; import { Board, Port } from './boards-service';
export const MonitorManagerProxyFactory = Symbol('MonitorManagerProxyFactory');
export type MonitorManagerProxyFactory = () => MonitorManagerProxy;
export const MonitorManagerProxyPath = '/services/monitor-manager-proxy'; export const MonitorManagerProxyPath = '/services/monitor-manager-proxy';
export const MonitorManagerProxy = Symbol('MonitorManagerProxy'); export const MonitorManagerProxy = Symbol('MonitorManagerProxy');
export interface MonitorManagerProxy extends JsonRpcServer<MonitorManagerProxyClient> { export interface MonitorManagerProxy extends JsonRpcServer<MonitorManagerProxyClient> {