31 lines
		
	
	
		
			932 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			932 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  PostMessageBusSource,
							 | 
						||
| 
								 | 
							
								  PostMessageBusSink,
							 | 
						||
| 
								 | 
							
								  PostMessageBus
							 | 
						||
| 
								 | 
							
								} from 'angular2/src/web-workers/shared/post_message_bus';
							 | 
						||
| 
								 | 
							
								import {MessageBusInterface} from 'angular2/src/web-workers/shared/message_bus';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Returns a PostMessageBus thats sink is connected to its own source.
							 | 
						||
| 
								 | 
							
								 * Useful for testing the sink and source.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function createConnectedMessageBus(): MessageBusInterface {
							 | 
						||
| 
								 | 
							
								  var mockPostMessage = new MockPostMessage();
							 | 
						||
| 
								 | 
							
								  var source = new PostMessageBusSource(<any>mockPostMessage);
							 | 
						||
| 
								 | 
							
								  var sink = new PostMessageBusSink(mockPostMessage);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return new PostMessageBus(sink, source);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MockPostMessage {
							 | 
						||
| 
								 | 
							
								  private _listener: EventListener;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  addEventListener(type: string, listener: EventListener, useCapture?: boolean): void {
							 | 
						||
| 
								 | 
							
								    if (type === "message") {
							 | 
						||
| 
								 | 
							
								      this._listener = listener;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  postMessage(data: any, transfer?:[ArrayBuffer]): void { this._listener(<any>{data: data}); }
							 | 
						||
| 
								 | 
							
								}
							 |