back2dos / tinkerbell

MIT License
83 stars 8 forks source link

Question:how to use tink_lang with Dynamic resolve ? #38

Closed sonygod closed 11 years ago

sonygod commented 11 years ago

first ,thanks your greate lib. and my problem is . code like

//////// from var url:String = "http://localhost:8080/index.n"; var c:AMFConnection = AMFConnection.urlConnect(url); c.setErrorHandler(onError); //var IC c.HelloService.hello.call(["one", "two"], onResult);

//// to:

typedef Obj ={

i:Int,
s:String,

} typedef Hellox = { function hello(x:String, y:String):String; function getLength(data:Array < String>):Int; function getObject(obj:Obj) :String; function getClass(p:Bytes):Dynamic; } typedef FwdTarget = {

function onError(e:Dynamic):Void;

function onResult(r:Dynamic):Void;

} class Forwarder implements Cls { var fields:Hash = new Hash(); @:forward(!multiply) var target:FwdTarget;

@:forward function fwd2(z:Hellox) {
    get: fields.get($name),
    set: fields.set($name, param),
    //call: trace('calling '+$name+' on '+$id+' with '+$args)
    call: trace('calling '+$name+' on '+$id+' with '+$args),//how to rewrite this line  the same as 

}
var c:AMFConnection;

function callRemoting(name, id, args):Void {
    //c.HelloService.hello.call(["one", "two"], target.onResult);
}
public function new(target) {
    this.target = target;
     var url:String = "http://localhost:8080/index.n";
     c = AMFConnection.urlConnect(url);
     c.setErrorHandler(target.onError);
}

}

I don't know how to write call: in @forwart ? call: trace('calling '+$name+' on '+$id+' with '+$args),//how to rewrite this line the same as c.HelloService.hello.call(["one", "two"], onResult); any idea?

back2dos commented 11 years ago

This should do it: c.HelloServices.resolve($name).call($args, target.onResult)