Files
haxework/com/abit/haxework/net/BaseLoader.hx
2013-08-12 12:55:08 +02:00

64 lines
1.3 KiB
Haxe
Executable File

package com.abit.haxework.net;
import com.abit.haxework.net.callback.Callback;
import com.abit.haxework.net.callback.ICallback;
import flash.events.Event;
import com.abit.haxework.net.ILoader.Method;
class BaseLoader<T> implements ILoader<T> {
private var busy:Bool;
private var url:String;
private var callback:ICallback<T>;
public function new() {
busy = false;
}
public function request(url:String, method:Method):ICallback<T> {
if (busy) throw "Busy";
busy = true;
this.url = url;
callback = new Callback<T>();
internalRequest();
return callback;
}
public function GET(url:String):ICallback<T> {
return request(url, Method.GET);
}
private function internalRequest():Void {
throw "Abstract";
}
private function onComplete(e:Event):Void {
var data:T = extrudeResult(e);
var c:ICallback<T> = callback;
dispose();
c.callSuccess(data);
}
private function onError(e:Event):Void {
var c:ICallback<T> = callback;
dispose();
c.callFail(e);
}
private function extrudeResult(e:Event):T {
throw "Abstract";
return null;
}
private function dispose():Void {
url = null;
callback = null;
busy = false;
}
public function cancel():Void {
dispose();
}
}