Skip to content

Commit c3d6ebc

Browse files
committed
Remove thread attribute usage from markerService
1 parent 2b139c0 commit c3d6ebc

19 files changed

Lines changed: 64 additions & 120 deletions

File tree

src/vs/base/common/worker/workerClient.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export class WorkerClient {
3939

4040
private _lastMessageId:number;
4141
private _promises:{[id:string]:IActiveRequest;};
42-
private _messageHandlers:{[type:string]:(payload:any)=>void;};
4342
private _workerId:number;
4443
private _worker:IWorker;
4544

@@ -57,7 +56,6 @@ export class WorkerClient {
5756
this._decodeMessageName = decodeMessageName;
5857
this._lastMessageId = 0;
5958
this._promises = {};
60-
this._messageHandlers= {};
6159

6260
this._messagesQueue = [];
6361
this._processQueueTimeout = -1;
@@ -152,14 +150,6 @@ export class WorkerClient {
152150
this._worker.terminate();
153151
}
154152

155-
public addMessageHandler(message:string, handler:(payload:any)=>void): void {
156-
this._messageHandlers[message]= handler;
157-
}
158-
159-
public removeMessageHandler(message:string): void {
160-
delete this._messageHandlers[message];
161-
}
162-
163153
private _sendMessage(type:string, payload:any, forceTimestamp:number=(new Date()).getTime()):TPromise<any> {
164154

165155
let msg = {
@@ -359,10 +349,6 @@ export class WorkerClient {
359349
return this._invokeHandler(this[msg.type], this, msg.payload);
360350
}
361351

362-
if (typeof this._messageHandlers[msg.type] === 'function') {
363-
return this._invokeHandler(this._messageHandlers[msg.type], null, msg.payload);
364-
}
365-
366352
this._onError('Received unexpected message from Worker:', msg);
367353
return TPromise.wrapError(new Error('No handler found'));
368354
}

src/vs/base/common/worker/workerServer.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,14 @@ export class WorkerServer {
213213
}
214214

215215
if ((msg.type in this._requestHandler) && (typeof this._requestHandler[msg.type] === 'function')) {
216-
//var now = (new Date()).getTime();
216+
// var now = (new Date()).getTime();
217217
try {
218218
this._requestHandler[msg.type].call(this._requestHandler, this, c, e, p, msg.payload);
219219
} catch (handlerError) {
220220
e(errors.transformErrorForSerialization(handlerError));
221221
}
222-
//var what = msg.type;
223-
//if (msg.type === 'rawRequest') {
224-
// what += '(' + msg.payload.name + ')';
225-
//}
226-
//console.info(what + ' took ' + ((new Date().getTime())-now));
222+
// var what = msg.type;
223+
// console.info(what + ' took ' + ((new Date().getTime())-now));
227224

228225
} else {
229226
this._requestHandler.request(this, c, e, p, msg);

src/vs/editor/browser/standalone/standaloneServices.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export function getOrCreateStaticServices(services?: IEditorOverrideServices): I
181181

182182
var messageService = services.messageService || new SimpleServices.SimpleMessageService();
183183
var pluginService = services.pluginService || new SimpleServices.SimplePluginService();
184-
var markerService = services.markerService || new MarkerService.MarkerService(threadService);
184+
var markerService = services.markerService || new MarkerService.MainProcessMarkerService(threadService);
185185
var requestService = services.requestService || new SimpleServices.SimpleEditorRequestService(contextService, telemetryService);
186186

187187
var modelService = services.modelService || new ModelServiceImpl(threadService, markerService);

src/vs/editor/common/worker/editorWorkerServer.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'vs/editor/common/modes/abstractModeWorker';
1111
import 'vs/editor/common/languages.common';
1212

1313
import {WorkerServer} from 'vs/base/common/worker/workerServer';
14-
import {MarkerService} from 'vs/platform/markers/common/markerService';
14+
import {SecondaryMarkerService} from 'vs/platform/markers/common/markerService';
1515
import {WorkerThreadService} from 'vs/platform/thread/common/workerThreadService';
1616
import InstantiationService = require('vs/platform/instantiation/common/instantiationService');
1717
import {EventService} from 'vs/platform/event/common/eventService';
@@ -98,15 +98,13 @@ export class EditorWorkerServer {
9898

9999
var contextService = new BaseWorkspaceContextService(initData.contextService.workspace, initData.contextService.configuration, initData.contextService.options);
100100

101-
this.threadService = new WorkerThreadService(initData.threadService, mainThread.getRemoteCom(), (messageName: string, payload: any) => {
102-
return mainThread.request(messageName, payload);
103-
});
101+
this.threadService = new WorkerThreadService(initData.threadService, mainThread.getRemoteCom());
104102
this.threadService.setInstantiationService(InstantiationService.create({ threadService: this.threadService }));
105103

106104
var telemetryServiceInstance = new WorkerTelemetryService(this.threadService);
107105

108106
var resourceService = new ResourceService();
109-
var markerService = new MarkerService(this.threadService);
107+
var markerService = new SecondaryMarkerService(this.threadService);
110108

111109
var modeService = new ModeServiceImpl(this.threadService, pluginService);
112110

src/vs/languages/css/test/common/css-worker.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ suite('Validation - CSS', () => {
3232
var url = URI.parse('inmemory://localhost/vs/editor/common/model/mirrorModel/1');
3333
var mirrorModel:any= mockMirrorModel(source, url);
3434

35-
var markerService = new MarkerService.MarkerService(NULL_THREAD_SERVICE);
35+
var markerService = new MarkerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
3636
var resourceService = new ResourceService.ResourceService();
3737
resourceService.insert(url, mirrorModel);
3838

@@ -55,7 +55,7 @@ suite('Validation - CSS', () => {
5555
var model = mockMirrorModel(content, url);
5656
resourceService.insert(url, model);
5757

58-
var markerService = new MarkerService.MarkerService(NULL_THREAD_SERVICE);
58+
var markerService = new MarkerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
5959

6060
let services = servicesUtil2.createMockEditorWorkerServices({
6161
resourceService: resourceService,

src/vs/languages/html/test/common/html-worker.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ suite('HTML - worker', () => {
3737
var model = mm.createMirrorModelFromString(null, 0, content, mode, url);
3838
resourceService.insert(url, model);
3939

40-
var markerService = new MarkerService.MarkerService(NULL_THREAD_SERVICE);
40+
var markerService = new MarkerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
4141

4242
let services = servicesUtil2.createMockEditorWorkerServices({
4343
resourceService: resourceService,

src/vs/languages/typescript.workbench/test/common/projectResolver.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ var instantiationService: IInstantiationService;
188188
function setup() {
189189
instantiationService = instantiation.create({
190190
eventService: new eventEmitter.EventEmitter(),
191-
markerService: new markerService.MarkerService(NULL_THREAD_SERVICE),
191+
markerService: new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE),
192192
fileService: createFileService(),
193193
searchService: createSearchService(),
194194
messageService: createMessageService(),

src/vs/platform/markers/common/markerService.ts

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import collections = require('vs/base/common/collections');
1111
import URI from 'vs/base/common/uri';
1212
import Event, {Emitter} from 'vs/base/common/event';
1313
import Severity from 'vs/base/common/severity';
14-
import {IThreadService, IThreadSynchronizableObject} from 'vs/platform/thread/common/thread';
15-
import {MainThreadAttr} from 'vs/platform/thread/common/threadService';
14+
import {Remotable, IThreadService} from 'vs/platform/thread/common/thread';
1615
import {IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics} from './markers';
1716

1817
interface Key {
@@ -49,42 +48,23 @@ export interface MarkerData {
4948
[k: string]: IMarkerData[];
5049
}
5150

52-
export class MarkerService implements IMarkerService, IThreadSynchronizableObject<MarkerData> {
51+
52+
export abstract class MarkerService implements IMarkerService {
5353
public serviceId = IMarkerService;
5454
private _data: { [k: string]: IMarkerData[] };
5555
private _stats: MarkerStatistics;
5656
private _onMarkerChanged: Emitter<URI[]>;
5757

58-
constructor(threadService: IThreadService) {
58+
constructor() {
5959
this._data = Object.create(null);
6060
this._stats = this._emptyStats();
6161
this._onMarkerChanged = new Emitter<URI[]>();
62-
threadService.registerInstance(this);
63-
}
64-
65-
// ---- IThreadSynchronizableObject ------------------------------
66-
67-
public getId(): string {
68-
return '__markerService';
69-
}
70-
71-
public getSerializableState(): MarkerData {
72-
return this._data;
73-
}
74-
75-
public setData(data: MarkerData): void {
76-
this._data = data;
7762
}
7863

7964
public getStatistics(): MarkerStatistics {
8065
return this._stats;
8166
}
8267

83-
// ---- Threading attributes to invoke functions everywhere ------
84-
85-
static $changeOne = MainThreadAttr(MarkerService, MarkerService.prototype.changeOne);
86-
static $changeAll = MainThreadAttr(MarkerService, MarkerService.prototype.changeAll);
87-
8868
// ---- IMarkerService ------------------------------------------
8969

9070
public get onMarkerChanged(): Event<URI[]> {
@@ -306,4 +286,40 @@ export class MarkerService implements IMarkerService, IThreadSynchronizableObjec
306286
data.endLineNumber = data.endLineNumber >= data.startLineNumber ? data.endLineNumber : data.startLineNumber;
307287
data.endColumn = data.endColumn > 0 ? data.endColumn : data.startColumn;
308288
}
309-
}
289+
}
290+
291+
export class SecondaryMarkerService extends MarkerService {
292+
293+
private _proxy: MainProcessMarkerService;
294+
295+
constructor(threadService: IThreadService) {
296+
super();
297+
this._proxy = threadService.getRemotable(MainProcessMarkerService);
298+
}
299+
300+
public changeOne(owner: string, resource: URI, markers: IMarkerData[]): void {
301+
this._proxy.changeOne(owner, resource, markers);
302+
}
303+
304+
public changeAll(owner: string, data: IResourceMarker[]): void {
305+
this._proxy.changeAll(owner, data);
306+
}
307+
308+
}
309+
310+
@Remotable.MainContext('MainProcessMarkerService')
311+
export class MainProcessMarkerService extends MarkerService {
312+
313+
constructor(threadService: IThreadService) {
314+
super();
315+
threadService.registerRemotableInstance(MainProcessMarkerService, this);
316+
}
317+
318+
public changeOne(owner: string, resource: URI, markers: IMarkerData[]): void {
319+
super.changeOne(owner, resource, markers);
320+
}
321+
322+
public changeAll(owner: string, data: IResourceMarker[]): void {
323+
super.changeAll(owner, data);
324+
}
325+
}

src/vs/platform/markers/test/common/markerService.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ suite('Marker Service', () => {
2626

2727
test('query', () => {
2828

29-
let service = new markerService.MarkerService(NULL_THREAD_SERVICE);
29+
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
3030

3131
service.changeAll('far', [{
3232
resource: URI.parse('file:///c/test/file.cs'),
@@ -52,7 +52,7 @@ suite('Marker Service', () => {
5252

5353
test('changeOne override', () => {
5454

55-
let service = new markerService.MarkerService(NULL_THREAD_SERVICE);
55+
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
5656
service.changeOne('far', URI.parse('/path/only.cs'), [randomMarkerData()]);
5757
assert.equal(service.read().length, 1);
5858
assert.equal(service.read({ owner: 'far' }).length, 1);
@@ -70,7 +70,7 @@ suite('Marker Service', () => {
7070

7171
test('changeOne/All clears', () => {
7272

73-
let service = new markerService.MarkerService(NULL_THREAD_SERVICE);
73+
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
7474
service.changeOne('far', URI.parse('/path/only.cs'), [randomMarkerData()]);
7575
service.changeOne('boo', URI.parse('/path/only.cs'), [randomMarkerData()]);
7676
assert.equal(service.read({ owner: 'far' }).length, 1);
@@ -90,7 +90,7 @@ suite('Marker Service', () => {
9090

9191
test('changeAll sends event for cleared', () => {
9292

93-
let service = new markerService.MarkerService(NULL_THREAD_SERVICE);
93+
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
9494
service.changeAll('far', [{
9595
resource: URI.parse('file:///d/path'),
9696
marker: randomMarkerData()
@@ -111,7 +111,7 @@ suite('Marker Service', () => {
111111
});
112112

113113
test('changeAll merges', () => {
114-
let service = new markerService.MarkerService(NULL_THREAD_SERVICE);
114+
let service = new markerService.MainProcessMarkerService(NULL_THREAD_SERVICE);
115115

116116
service.changeAll('far', [{
117117
resource: URI.parse('file:///c/test/file.cs'),

src/vs/platform/test/common/nullThreadService.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ export class NullThreadService extends abstractThreadService.AbstractThreadServi
2424
return super._doCreateInstance(params);
2525
}
2626

27-
MainThread(obj: IThreadSynchronizableObject<any>, methodName: string, target: Function, params: any[]): winjs.Promise {
28-
return target.apply(obj, params);
29-
}
30-
3127
OneWorker(obj: IThreadSynchronizableObject<any>, methodName: string, target: Function, params: any[], affinity: ThreadAffinity): winjs.Promise {
3228
return winjs.TPromise.as(null);
3329
}

0 commit comments

Comments
 (0)