mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-30 22:56:35 +00:00
backend structure WIP
This commit is contained in:
parent
289f9d7946
commit
2b2ea72643
@ -40,16 +40,8 @@ import {
|
|||||||
ArduinoDaemon,
|
ArduinoDaemon,
|
||||||
ArduinoDaemonPath,
|
ArduinoDaemonPath,
|
||||||
} from '../common/protocol/arduino-daemon';
|
} from '../common/protocol/arduino-daemon';
|
||||||
import {
|
import { SerialServiceName } from './serial/serial-service-impl';
|
||||||
SerialServiceImpl,
|
|
||||||
SerialServiceName,
|
|
||||||
} from './serial/serial-service-impl';
|
|
||||||
import {
|
|
||||||
SerialService,
|
|
||||||
SerialServicePath,
|
|
||||||
SerialServiceClient,
|
|
||||||
} from '../common/protocol/serial-service';
|
|
||||||
import { MonitorClientProvider } from './serial/monitor-client-provider';
|
|
||||||
import { ConfigServiceImpl } from './config-service-impl';
|
import { ConfigServiceImpl } from './config-service-impl';
|
||||||
import { EnvVariablesServer as TheiaEnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
import { EnvVariablesServer as TheiaEnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
||||||
import { EnvVariablesServer } from './theia/env-variables/env-variables-server';
|
import { EnvVariablesServer } from './theia/env-variables/env-variables-server';
|
||||||
@ -205,19 +197,25 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|||||||
|
|
||||||
// #endregion Theia customizations
|
// #endregion Theia customizations
|
||||||
|
|
||||||
|
// a single MonitorManager is responsible for handling the actual connections to the pluggable monitors
|
||||||
|
bind(MonitorManager).toSelf().inSingletonScope();
|
||||||
|
|
||||||
// Serial client provider per connected frontend.
|
// Serial client provider per connected frontend.
|
||||||
bind(ConnectionContainerModule).toConstantValue(
|
bind(ConnectionContainerModule).toConstantValue(
|
||||||
ConnectionContainerModule.create(({ bind, bindBackendService }) => {
|
ConnectionContainerModule.create(({ bind, bindBackendService }) => {
|
||||||
bind(MonitorClientProvider).toSelf().inSingletonScope();
|
bind(MonitorManagerProxyImpl).toSelf().inSingletonScope();
|
||||||
bind(SerialServiceImpl).toSelf().inSingletonScope();
|
bind(MonitorManagerProxy).toService(MonitorManagerProxyImpl);
|
||||||
bind(SerialService).toService(SerialServiceImpl);
|
bindBackendService<MonitorManagerProxy, MonitorManagerProxyClient>(
|
||||||
bindBackendService<SerialService, SerialServiceClient>(
|
MonitorManagerProxyPath,
|
||||||
SerialServicePath,
|
MonitorManagerProxy,
|
||||||
SerialService,
|
(monitorMgrProxy, client) => {
|
||||||
(service, client) => {
|
monitorMgrProxy.setClient(client);
|
||||||
service.setClient(client);
|
// when the client close the connection, the proxy is disposed.
|
||||||
client.onDidCloseConnection(() => service.dispose());
|
// when the MonitorManagerProxy is disposed, it informs the MonitorManager
|
||||||
return service;
|
// telling him that it does not need an address/board anymore.
|
||||||
|
// the MonitorManager will then dispose the actual connection if there are no proxies using it
|
||||||
|
client.onDidCloseConnection(() => monitorMgrProxy.dispose());
|
||||||
|
return monitorMgrProxy;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user