瀏覽代碼

added neko support.

Nicolas Cannasse 19 年之前
父節點
當前提交
13fafdbbc6
共有 1 個文件被更改,包括 25 次插入5 次删除
  1. 25 5
      std/haxe/remoting/Connection.hx

+ 25 - 5
std/haxe/remoting/Connection.hx

@@ -47,32 +47,46 @@ class Connection implements Dynamic<Connection> {
 		var s = __data.asEval(__path.join("."));
 		return new Unserializer(s).unserialize();
 	#else neko
-		throw "Connection::eval is not implemented";
-		return null;
+		var cnx = AsyncConnection.urlConnect(__data);
+		var result = null;
+		untyped cnx.__path = __path;
+		cnx.onError = function(err) { throw err; };
+		cnx.eval(function(d) { result = d; });
+		return result;
 	#else error
 	#end
 	}
 
 	public function call( params : Array<Dynamic> ) : Dynamic {
+	#if flash
 		var p = __path.copy();
 		var f = p.pop();
 		var path = p.join(":");
 		var s = new Serializer();
 		s.serialize(params);
 		var params = s.toString();
-	#if flash
 		var s = flash.external.ExternalInterface.call("haxe.Connection.doCall",path,f,params);
 		if( s == null )
 			throw "Failed to call JS method "+__path.join(".");
 		return new Unserializer(s).unserialize();
 	#else js
+		var p = __path.copy();
+		var f = p.pop();
+		var path = p.join(":");
+		var s = new Serializer();
+		s.serialize(params);
+		var params = s.toString();
 		var s = __data.doCall(path,f,params);
 		if( s == null )
 			throw "Failed to call Flash method "+__path.join(".");
 		return new Unserializer(s).unserialize();
 	#else neko
-		throw "Connection::call is not implemented";
-		return null;
+		var cnx = AsyncConnection.urlConnect(__data);
+		var result = null;
+		untyped cnx.__path = __path;
+		cnx.onError = function(err) { throw err; };
+		cnx.call(params,function(d) { result = d; });
+		return result;
 	#else error
 	#end
 	}
@@ -166,6 +180,12 @@ class Connection implements Dynamic<Connection> {
 		return new Connection(x,[]);
 	}
 
+	#else neko
+
+	public static function urlConnect( url : String ) : Connection {
+		return new Connection(url,[]);
+	}
+
 	#end
 
 }