protected registerProvider()

in src/main.ts [1004:1079]


	protected registerProvider(options: undefined): Disposable {
		const client = this._client;
		let createNewSession = (connInfo: azdata.ConnectionInfo): Thenable<azdata.ObjectExplorerSessionResponse> => {
			return client.sendRequest(protocol.ObjectExplorerCreateSessionRequest.type, connInfo).then(
				r => r,
				e => {
					client.logFailedRequest(protocol.ObjectExplorerCreateSessionRequest.type, e);
					return Promise.resolve(undefined);
				}
			);
		};

		let expandNode = (nodeInfo: azdata.ExpandNodeInfo): Thenable<boolean> => {
			return client.sendRequest(protocol.ObjectExplorerExpandRequest.type, nodeInfo).then(
				r => r,
				e => {
					client.logFailedRequest(protocol.ObjectExplorerExpandRequest.type, e);
					return Promise.resolve(undefined);
				}
			);
		};

		let refreshNode = (nodeInfo: azdata.ExpandNodeInfo): Thenable<boolean> => {
			return client.sendRequest(protocol.ObjectExplorerRefreshRequest.type, nodeInfo).then(
				r => r,
				e => {
					client.logFailedRequest(protocol.ObjectExplorerRefreshRequest.type, e);
					return Promise.resolve(undefined);
				}
			);
		};

		let closeSession = (closeSessionInfo: azdata.ObjectExplorerCloseSessionInfo): Thenable<any> => {
			return client.sendRequest(protocol.ObjectExplorerCloseSessionRequest.type, closeSessionInfo).then(
				r => r,
				e => {
					client.logFailedRequest(protocol.ObjectExplorerCloseSessionRequest.type, e);
					return Promise.resolve(undefined);
				}
			);
		};

		let findNodes = (findNodesInfo: azdata.FindNodesInfo): Thenable<any> => {
			return client.sendRequest(protocol.ObjectExplorerFindNodesRequest.type, findNodesInfo).then(
				r => r,
				e => {
					client.logFailedRequest(protocol.ObjectExplorerFindNodesRequest.type, e);
					return Promise.resolve(undefined);
				}
			);
		};

		let registerOnSessionCreated = (handler: (response: azdata.ObjectExplorerSession) => any): void => {
			client.onNotification(protocol.ObjectExplorerCreateSessionCompleteNotification.type, handler);
		};

		let registerOnSessionDisconnected = (handler: (response: azdata.ObjectExplorerSession) => any): void => {
			client.onNotification(protocol.ObjectExplorerSessionDisconnectedNotification.type, handler);
		};

		let registerOnExpandCompleted = (handler: (response: azdata.ObjectExplorerExpandInfo) => any): void => {
			client.onNotification(protocol.ObjectExplorerExpandCompleteNotification.type, handler);
		};

		return azdata.dataprotocol.registerObjectExplorerProvider({
			providerId: client.providerId,
			closeSession,
			createNewSession,
			expandNode,
			refreshNode,
			findNodes,
			registerOnExpandCompleted,
			registerOnSessionCreated,
			registerOnSessionDisconnected
		});
	}