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;
 | 
						|
	}
 | 
						|
}
 |