58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package kha.netsync;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import haxe.io.Bytes;
							 | 
						||
| 
								 | 
							
								#if js
							 | 
						||
| 
								 | 
							
								import js.Node;
							 | 
						||
| 
								 | 
							
								import js.node.Buffer;
							 | 
						||
| 
								 | 
							
								#end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class NodeProcessClient implements Client {
							 | 
						||
| 
								 | 
							
									var myId: Int = -1;
							 | 
						||
| 
								 | 
							
									var receiveCallback: Bytes->Void = null;
							 | 
						||
| 
								 | 
							
									var closeCallback: Void->Void = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function new(id: Int) {
							 | 
						||
| 
								 | 
							
										myId = id;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function send(bytes: Bytes, mandatory: Bool): Void {
							 | 
						||
| 
								 | 
							
										#if js
							 | 
						||
| 
								 | 
							
										var data = bytes.getData();
							 | 
						||
| 
								 | 
							
										var buffer = js.Syntax.code("new Buffer(data)");
							 | 
						||
| 
								 | 
							
										Node.process.send({data: buffer.toString(), id: myId});
							 | 
						||
| 
								 | 
							
										#end
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function receive(receiver: Bytes->Void): Void {
							 | 
						||
| 
								 | 
							
										receiveCallback = receiver;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function _message(data): Void {
							 | 
						||
| 
								 | 
							
										if (receiveCallback != null) {
							 | 
						||
| 
								 | 
							
											receiveCallback(Bytes.ofString(data));
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function onClose(close: Void->Void): Void {
							 | 
						||
| 
								 | 
							
										closeCallback = close;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public function _close(): Void {
							 | 
						||
| 
								 | 
							
										if (closeCallback != null) {
							 | 
						||
| 
								 | 
							
											closeCallback();
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public var controllers(get, null): Array<Controller>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function get_controllers(): Array<Controller> {
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									public var id(get, null): Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									function get_id(): Int {
							 | 
						||
| 
								 | 
							
										return myId;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |