SQL Operations Studio Public Preview 1 (0.23) release source code

This commit is contained in:
Karl Burtram
2017-11-09 14:30:27 -08:00
parent b88ecb8d93
commit 3cdac41339
8829 changed files with 759707 additions and 286 deletions

View File

@@ -0,0 +1,73 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import { IThreadService } from 'vs/workbench/services/thread/common/threadService';
import { SqlMainContext, MainThreadSerializationProviderShape, ExtHostSerializationProviderShape } from 'sql/workbench/api/node/sqlExtHost.protocol';
import * as vscode from 'vscode';
import * as data from 'data';
import { Disposable } from 'vs/workbench/api/node/extHostTypes';
class SerializationAdapter {
private _provider: data.SerializationProvider;
constructor(provider: data.SerializationProvider) {
this._provider = provider;
}
public saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Thenable<data.SaveResultRequestResult> {
return this._provider.saveAs(saveFormat, savePath, results, appendToFile);
}
}
type Adapter = SerializationAdapter;
export class ExtHostSerializationProvider extends ExtHostSerializationProviderShape {
private _proxy: MainThreadSerializationProviderShape;
private static _handlePool: number = 0;
private _adapter: { [handle: number]: Adapter } = Object.create(null);
private _createDisposable(handle: number): Disposable {
return new Disposable(() => {
delete this._adapter[handle];
this._proxy.$unregisterSerializationProvider(handle);
});
}
private _nextHandle(): number {
return ExtHostSerializationProvider._handlePool++;
}
private _withAdapter<A, R>(handle: number, ctor: { new (...args: any[]): A }, callback: (adapter: A) => Thenable<R>): Thenable<R> {
let adapter = this._adapter[handle];
if (!(adapter instanceof ctor)) {
return TPromise.wrapError(new Error('no adapter found'));
}
return callback(<any>adapter);
}
constructor(
threadService: IThreadService
) {
super();
this._proxy = threadService.get(SqlMainContext.MainThreadSerializationProvider);
}
public $registerSerializationProvider(provider: data.SerializationProvider): vscode.Disposable {
provider.handle = this._nextHandle();
this._adapter[provider.handle] = new SerializationAdapter(provider);
this._proxy.$registerSerializationProvider(provider.handle);
return this._createDisposable(provider.handle);
}
public $saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Thenable<data.SaveResultRequestResult> {
return this._withAdapter(0, SerializationAdapter, adapter => adapter.saveAs(saveFormat, savePath, results, appendToFile));
}
}