@theia/core
Version:
Theia is a cloud & desktop IDE framework implemented in TypeScript.
44 lines (39 loc) • 2.28 kB
text/typescript
// *****************************************************************************
// Copyright (C) 2017 TypeFox and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// http://www.eclipse.org/legal/epl-2.0.
//
// This Source Code may also be made available under the following Secondary
// Licenses when the conditions for such availability set forth in the Eclipse
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
// with the GNU Classpath Exception which is available at
// https://www.gnu.org/software/classpath/license.html.
//
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************
export const ConnectionCloseService = Symbol('ConnectionCloseService');
export const connectionCloseServicePath = '/services/ChannelCloseService';
/**
* These messages are used to negotiate service reconnection between a front ends and back end.
* Whenever a front end first connects to a back end, it sends the ${@link ConnectionManagementMessages#INITIAL_CONNECT} message
* together with its front end id.
* The back end then starts a new front end connection context for that front end. If the back end already had another connection context
* for the given front end id, it gets discarded.
* If the front end reconnects after a websocket disconnect, it sends the ${@link ConnectionManagementMessages#RECONNECT} message
* together with its front end id..
* If the back end still has a connection context for the front end id, the context is reconnected and the back end replies with the value true.
* If there is no context anymore, the back end replies with value false. The front end can then either do an initial connect or reload
* the whole UI.
*/
export namespace ConnectionManagementMessages {
export const INITIAL_CONNECT = 'initialConnection';
export const RECONNECT = 'reconnect';
}
/**
* A service to mark a front end as unused. As soon as it disconnects from the back end, the connection context will be discarded.
*/
export interface ConnectionCloseService {
markForClose(frontEndId: string): Promise<void>;
}